Skip to content
- 오라클 접속 오류 해결
- 접속 : sqlplus scott/tiger
- 오류메시지 : ORA-28000: the account is locked
- 오라클 설치시 scott 계정을 막아놓아서 발생하는 오류
- DBA로 접속(ID: system, PW:)
- 다음 명령 실행 : ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
- 오류메시지 : ORA-01033: ORACLE initialization or shutdown in progress
- 접속 종료후 다시 접속하면 해결됨
- 오류메시지 :ORA-01034 : ORACLE not anailable
ORA-27101 : shared memory realm does not exist
- sqlplus “/as sysdba”
- SQL> startup
- SELECT 문
|
SELECT [컬럼명 또는 표현식] FROM [테이블명, 뷰 명]; |
- DESC : 테이블의 구조 보기
- sqlplus 설정
- COL empno FOR 9999 : empno 필드는 숫자 4자리 표현
- COL ename FOR a8 : ename 필드는 8자 표현
- SET LINE 200 : 가로 1줄에 200자까지 표현
- SET PAGES 50 : 한페이지에 50라인 표현
- 원하는 컬럼만 출력
|
SELECT empno, ename, 'Good Morning' as hello from emp; |
- Good Morning 대신에 I’m Good 을 출력하려면
- q[‘I’m Good’] -> q[] 사이에 입력
- ‘I”m Good’ -> 작은따옴표 2개
- hello 대신에 good morning을 쓰려면
- as “good morning” -> 큰따옴표로 표현
- DISTINCT : 중복 제거
|
SELECT DISTINCT deptno from emp; |
- DISTINCT는 모든 컬럼의 값에 대해 중복값 제거
- SELECT 바로 뒤에 와야 함
- 오라클9i버전까지 : 정렬을 사용해서 심각한 속도 저하 발생
- 오라클10g버전부터 : HASH 알고리즘을 사용하여 정렬 안함->속도 향상
- 연산자 사용
- 사칙연산자 사용 : + – * /
|
SELECT ename, sal, sal * 0.1 as tax, sal + sal * 0.1 as income from emp; |
- 연결 연산자(||) 사용
|
SELECT empno, ename || job from emp; SELECT ename || ' ''s job is ' || job as "NAME AND JOB" FROM emp; |
- 원하는 조건만 골라내기 – WHERE절
- 문자는 작은따옴표 사용, 대소문자 구분
- 날짜 작은따옴표 사용, 대소문자 구분 안함
- 윈도우용 : ’80/12/17′
- 리눅스용 : ’17-DEC-80′
- 다양한 연산자
- LIKE 패턴
- ename=’홍%’ : 아무개 문자 0~n자, 홍, 홍길, 홍길동, 홍….
- ename=’홍_’ : 아무개 문자 1자, 홍(x), 홍길(o), 홍길동(x)
- ‘홍%’, ‘%길동’ 속도 비교 : ‘%길동’은 매우 느림, %나 _이 앞에 오면 매우 느림
- & 기호를 사용하여 외부에서 값 입력받기
|
SELECT * FROM emp WHERE sal>&sal; |
- ORDER BY 절로 정렬하기 : 필드명 or 필드위치
|
SELECT * FROM emp ORDER BY job, sal DESC; SELECT * FROM emp ORDER BY 3, 6 DESC; |
- 집합연산자
- UNION : 두 집합을 합쳐서 출력, 중복값은 제거하고 정렬함
|
SELECT * FROM emp WHERE deptno=10 UNION SELECT * FROM emp WHERE deptno=20; |
- UNION ALL : 두 집합을 합쳐서 출력, 중복값 제거 안하고 정렬 안 함
- INTERSECT : 두 집합의 교집합 결과 출력, 정렬함
|
SELECT * FROM emp WHERE deptno=10 INTERSECT SELECT * FROM emp WHERE sal>2000; |
- MINUS : 두 집합의 차집합 결과 출력, 정렬함, 쿠리의 순서 중요
|
SELECT * FROM emp WHERE deptno=10 MINUS SELECT * FROM emp WHERE sal>2000; |
- 조건
- 두 집합의 SELECT 절에 오는 컬럼의 개수가 동일해야 함
- 두 집합의 SELECT 절에 오는 컬럼의 자료형이 동일해야 함
- 두 집합의 컬럼 명은 달라도 상관없음
error: Content is protected !!