Oracle 오라클 약어(명령어)
오라클 ANSI
WHERE ON
AND AND
OR OR
JOIN , JOIN
= =
BETWEEN BETWEEN
기본 : 구조조회(DESC)
1 2 3 4 5 6 | DESC TABLE; 이름 널 유형 ------- - ----------- WEEK VARCHAR2(1) DAY VARCHAR2(2) NUM_DAY VARCHAR2(2) |
기본 : 해당 테이블 내의 컬럼을 조회하는 명령어
1 | SELECT 컬럼명 ||* FROM 테이블명; |
기본 : SELECT 컬럼 FROM 테이블 WHERE 컬럼 조건식 값
WHERE 다중 조건문 사용시
대한민국이라는 큰 키워드로 먼저 조회하기보다는 서울이라는 데이터를 먼저 조회하여 양을 줄여가며
조회하는 것이 DATABASE에 효율 적이다.
조건문 (WHERE)
1 2 3 4 | select 구문 select 컬럼명 ||* from 테이블명 WHERE 컬럼 연산자 (+, -, >, <) 레코드; [Where 조건문 (레코드 선택)] => 없으면 모든 레코드 조회 => 있으면 조건문 만족하는 레코드 조회 |
확장 : WHERE 컬럼 BETWEEN A AND(OR) B
WHERE문을 사용할 때 2가지의 값을 충족하는 데이터를 분류할 때 사용
1
2
3
IN 연산자
SELECT 컬럼 FROM 테이블 WHERE 컬럼 IN (A,B)
확장3 : WHERE 컬럼 LIKE '값'
123456789101112131415161718192021222324 --<< like 연산자 >> -- % : 0개 이상 -- _ : 문자 1개 (무엇이 들어와도 관계 X) -- 학생 중에 이름이 성이 김씨인 학생의 이름과 부서코드 조회 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '김%';김XXXXXXXX SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김%';XXXXXX김XXXXXXX가운데 위치 관계 없음 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김';XXXXXXX김 SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE '____'언더바 갯수 4개 = 글자 4개짜리 모두를 가져온다.EX ) _ 6개는 6자리 글자를 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '____'언더바 갯수만큼의 글자가 아닌 값을 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '%김'김으로 끝나지 않는 값들을 가져온다. cs
확장4 : WHERE 컬럼 IS NOT NULL OR IN NULL;
123456 SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NULL;NULL = 아무 값도 없다.컬럼의 값이 널이면 컬럼의 내용을 출력 SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NOT NULL;컬럼의 값이 널이아니면 출력 cs
기본 : 더미 테이블 (ORACLE 일회용 테이블) = 바로 출력할 때 사용
1
select sysdate from dual;
확장 : WHERE 컬럼 BETWEEN A AND(OR) B
WHERE문을 사용할 때 2가지의 값을 충족하는 데이터를 분류할 때 사용
1 2 3 | IN 연산자
SELECT 컬럼 FROM 테이블 WHERE 컬럼 IN (A,B) |
확장3 : WHERE 컬럼 LIKE '값'
123456789101112131415161718192021222324 --<< like 연산자 >> -- % : 0개 이상 -- _ : 문자 1개 (무엇이 들어와도 관계 X) -- 학생 중에 이름이 성이 김씨인 학생의 이름과 부서코드 조회 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '김%';김XXXXXXXX SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김%';XXXXXX김XXXXXXX가운데 위치 관계 없음 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김';XXXXXXX김 SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE '____'언더바 갯수 4개 = 글자 4개짜리 모두를 가져온다.EX ) _ 6개는 6자리 글자를 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '____'언더바 갯수만큼의 글자가 아닌 값을 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '%김'김으로 끝나지 않는 값들을 가져온다. cs
확장4 : WHERE 컬럼 IS NOT NULL OR IN NULL;
123456 SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NULL;NULL = 아무 값도 없다.컬럼의 값이 널이면 컬럼의 내용을 출력 SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NOT NULL;컬럼의 값이 널이아니면 출력 cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --<< like 연산자 >> -- % : 0개 이상 -- _ : 문자 1개 (무엇이 들어와도 관계 X) -- 학생 중에 이름이 성이 김씨인 학생의 이름과 부서코드 조회 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '김%'; 김XXXXXXXX SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김%'; XXXXXX김XXXXXXX 가운데 위치 관계 없음 SELECT 컬럼 FROM 테이블 WHERE 컬럼 like '%김'; XXXXXXX김 SELECT 컬럼 FROM 테이블 WHERE 컬럼 LIKE '____' 언더바 갯수 4개 = 글자 4개짜리 모두를 가져온다. EX ) _ 6개는 6자리 글자를 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '____' 언더바 갯수만큼의 글자가 아닌 값을 가져온다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 NOT LIKE '%김' 김으로 끝나지 않는 값들을 가져온다. | cs |
확장4 : WHERE 컬럼 IS NOT NULL OR IN NULL;
1 2 3 4 5 6 | SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NULL; NULL = 아무 값도 없다. 컬럼의 값이 널이면 컬럼의 내용을 출력 SELECT 컬럼 FROM 테이블 WHERE 컬럼 IS NOT NULL; 컬럼의 값이 널이아니면 출력 | cs |
기본 : 더미 테이블 (ORACLE 일회용 테이블) = 바로 출력할 때 사용
1 | select sysdate from dual; |
기본 : 컬럼에 문자를 작성할 때는 콜론(;) 오른쪽에 있는 리터널 ( ' 내용 ' ) 작성
1 | select empno, ename, 'Very Good~' from emp; |
기본 : 컬럼에 별명(AliAS) 주기
1 2 3 4 5 6 | --1 select name 교수이름, profno 교수번호 from PROFESSOR; --2 select name "교수 이름", profno "교수 번호" from PROFESSOR; --3 select name as "교수 이름", profno as 교수번호 from PROFESSOR; |
기본 : 문자을 연결해서 작성할 때
1 2 3 4 5 6 7 | -- 연결 연산자 || : 두개의 컬럼을 연결하는 연산자
-- 교수 테이블에서 이름과 직급을 연결하여 교수 별명으로 모든 레코드를 출력하자;
select * from PROFESSOR;
select name || position 교수 from PROFESSOR; |
기본 : 중복 제거(DISTINCT)
1 2 3 4 5 6 7 | -- distinct : 중복 제거하여 조회하기 성능이 안좋다 -- 컬럼의 제일 앞에 한번만 사용이 가능
-- 교수가 속한 부서코드 조회하기 //
select distinct deptno from PROFESSOR; |
기본 : 정렬 (ORDER BY 컬럼 ASC OR DESC)
SELECT 컬럼 FROM 테이블 ORDER BY DESC(내림/큰) OR ASC(DEFAULT)(오름/작은)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT 컬럼 FROM 테이블 ORDER BY 컬럼(기준) ASC(DEFAULT 기본값) (오름/작은순) ; SELECT 컬럼 FROM 테이블 ORDER BY 컬럼(기준) DESC(내림/작은순) ; 컬럼을 기준으로 오름차순 또는 내림차순 정렬 가능 SELECT 컬럼 FROM 테이블 ORDER BY A,B,C,D(기준) DESC(내림/작은순) ; 다중 컬럼 정렬도 가능 SELECT 컬럼1, 컬럼2, 컬럼3 FROM 테이블 ORDER BY 1,2,3,4(기준) DESC(내림/작은순) ; SELECT 뒤에있는 컬럼1 = 1 , 컬럼2 = 2, 컬럼3 = 3 식으로 컬럼 위치 값으로도 가능 SELECT 컬럼 '바보', 컬럼2 '멍충이' FROM 테이블 ORDER BY 바보,멍충이(기준) DESC(내림/작은순) ; ALIAS (별명) 으로도 정렬 가능 | cs |
총 정리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1. desc : table 구조 조회. SQL&PLUS(PLSQL) 2. select 컬럼명|| * from 테이블명 where 조건문 : 행(row, 레코드) 선택기준 조건 order by : 정렬, asc(오름차순), desc(내림차순) 별명사용가능, 조회된 컬럼의 순서가능 3. || 연결 연산자 : 두개의 컬럼을 연결해서 조회 리터널 컬럼과도 연결가능 4. distinct : 중복제거. 조회된 컬럼의 값을 한번만 출력 컬럼조회시 제일 앞에 한번만 사용 가능 성능이 안좋다. 5. 산술연산자 : +,-,*,/ : 컬럼의 연산에 사용가능 where 조건문에서 사용 가능 6. between 연산자 : where 컬럼명 between a and b 7. in 연산자 : where 컬럼명 in (값1, 값2, 값3...) 값1 또는 값2 또는 값3 8. like 연산자 : % : 0개 이상 _ : 1개. 자리수 9. is null, is not null : null 값은 값이 없는 경우. 연산의 대상이 아님 10. order by : 정렬 ASC DESC 11. 별명 지정 가능 : " " , as , 문자바로 | cs |
기본 : 합집합연산자 UNION (중복 절대 불가)
SELECT MATH FROM STUDENT WHERE MATH = '10'
UNION
SELECT ENG FROM STUDENT WHERE MATH = '20'
1 2 3 4 5 6 7 8 | -- 집합 연산자 -- union : 합집합(중복 제거) SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 값 UNION SELECT 컬럼2 FROM 테이블 WHERE 컬럼 연산자 값; 컬럼의 수와 자료형(VARCHAR,???)등이 동일 해야 합할 수 있다. | cs |
기본 : 합집합연산자 UNION (중복 가능)
SELECT MATH FROM STUDENT WHERE MATH = '10'
UNIONALL
SELECT ENG FROM STUDENT WHERE MATH = '20'
1 2 3 4 5 6 7 8 | -- 집합 연산자 -- UNIONALL : 합집합(중복 가능) SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 값 UNIONALL SELECT 컬럼2 FROM 테이블 WHERE 컬럼 연산자 값; 컬럼의 수와 자료형(VARCHAR,???)등이 동일 해야 합할 수 있다. | cs |
기본 : 교집합연산자 INTERSECT
SELECT MATH FROM STUDENT WHERE LIKE = '김%'
INTERSECT
SELECT ENG FROM STUDENT WHERE LIKE = '%현'
1 2 3 4 5 6 7 8 | -- 집합 연산자 -- INTERSECT : 교집합 SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 값 INTERSECT SELECT 컬럼2 FROM 테이블 WHERE 컬럼 연산자 값; A와 B 둘다 충족하는 값 | cs |
기본 : 차집합연산자 MINUS
SELECT MATH FROM STUDENT
MINUS
SELECT ENG FROM STUDENT WHERE LIKE = '%현'
현으로 끝나는 사람을 A에서 뺀다.
1 2 3 4 5 6 7 8 9 10 | -- 집합 연산자 -- MINUS : 차집합 SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 값 MINUS SELECT 컬럼2 FROM 테이블 WHERE 컬럼 연산자 값; A에 있는 값을 B의 값으로 빼고 출력한다. SELECT 컬럼 FROM 테이블 WHERE 컬럼 != '값' 이랑 동일함. | cs |
===================조인부터 =======================
CROSS JOIN
1 2 3 4 5 6 7 8 9 10 11 | Cross join (기본형 조인) SELECT 컬럼 FROM 테이블1번; SELECT 컬럼 FROM 테이블2번; 1번과 2번을 조인 오라클 방식(SQLPLUS) SELECT 컬럼 FROM 테이블1번,테이블2번; 공통(ANSI) SELECT 컬럼 FROM 테이블1번 CROSS JOIN 테이블2번; | cs |
EQUI JOIN (등가 조인) 동일 자료형태 조인
결과 : EX) 테이블 1번과 2번의 ID 컬럼이 하나의 형태로 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 등가 조인 (EQUI JOIN) 2개의 테이블을 참조할 때 동일한 자료형태의 컬럼을 기준으로 잡아 하나의 형태로 출력함 A와 B 테이블에 각각 ID 컬럼이 존재한다. EX) SELECT 컬럼(ID) FROM TABLE(A); SELECT 컬럼(ID) FROM TABLE(B); 오라클 SELECT 컬럼(ID) FROM TABLE(A,B) WHERE A.ID = B.ID; ANSI SELECT 컬럼(ID) FROM A JOIN B ON A.ID = B.ID; (WHERE 대신 ON) => A와 B의 테이블이 동일 한 자료의 테이블 이기 때문에 보기 편하게 정렬 가능하다. | cs |
NON EQUI JOIN (비등가 조인) 동일 자료형태 + 범위 조인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 비등가 조인(NON EQUI JOIN) EX) A,B테이블에서 1~100까지의 해당하는 자료를 찾으시오 SELECT 컬럼 FROM A; SELECT 컬럼 FROM B; 오라클 SELECT 컬럼 FROM A ,B WHERE A.ID BETWEEN 1 AND B; ANSI SELECT 컬럼 FROM A JOIN B ON A.ID BETWEEN 1 AND B; 형태이다 . 등가 조인과 동일하게 ID라는 컬럼으로 합쳐지지만 비등가 조인은 범위로 한다. | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | OUTER JOIN ( 아웃터 조인 ) 두개의 조인 조건에 충족하지 않더라도 모든정보를 출력해준다 ( 충족하지 않는 값은 NULL 로 표시됨) SELECT 컬럼(ID) FROM 테이블(A); SELECT 컬럼(ID) FROM 테이블(B); SELECT 컬럼(ID) FROM 테이블(A,B) WHERE A.ID = B.ID; 기본 EQUI 조인이지만 값을 충족하지 않는다면 NULL 처리 되어 출력 불가하다. 오라클 방식 => WHERE A.ID = B.ID(+) B.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) LEFT OUTER JOIN (항상 반대) => WHERE (+)A.ID = B.ID A.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) RIGHT OUTER JOIN (항상 반대) => WHERE A.ID(+) = B.ID UNION A.ID와 B.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) FULL OUTER JOIN (UNION밖에 기능이 없다). => WHERE A.ID = B.ID(+); ANSI 방식 SELECT 컬럼(ID) FROM 테이블(A); SELECT 컬럼(ID) FROM 테이블(B); SELECT 컬럼(ID) FROM 테이블(A LEFT OUTER JOIN B) B.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) LEFT OUTER JOIN (항상 반대) ON A.ID = B.ID SELECT 컬럼(ID) FROM 테이블(A RIGHT OUTER JOIN B) A.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) RIGHT OUTER JOIN (항상 반대) ON A.ID = B.ID SELECT 컬럼(ID) FROM 테이블(A FULL OUTER JOIN B) A.ID와 B.ID의 모든 값을 출력(겹치지 않는 값은 NULL 처리) FULL OUTER JOIN ON A.ID = B.ID | cs |
1 2 3 4 5 6 7 8 9 10 11 | SELF JOIN (셀프 조인) SELECT 컬럼(ID) FROM TABLE(A); SELECT 컬럼(ID) FROM TABLE(B); SELECT 컬럼(ID) FORM TABLE(A A1,B B1); WHERE A1.ID = B1.ID(+); EX) 사용예 자신의 상위부서를 출력하라 | cs |
SUB QUERY ( 서브 쿼리)
단일 행 서브쿼리 : 서브쿼리의 결과가 1개 레코드인 경우, 보통 컬럼도 1개
사용가능 연산자 : =,>,<
다중 행 서브쿼리 : 서브쿼리의 결과가 여러개 레코드 인 경우
=, >, < ... 연산자 사용불가
사용가능 연산자 : in, any, all
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | SUB QUERY ( 서브 쿼리) SELECT 컬럼 FROM TABLE(A); SELECT 컬럼 FROM TABLE(A) WHERE 컬럼 >, <, = (SELECT 컬럼 FROM TABLE(B); A의 컬럼과 B에서 조회된 컬럼을 비교하여 결과를 출력한다. EX) SELECT WEIGHT FROM TABLE(A) WHERE 컬럼 < SELECT 컬럼 FROM TABLE(B) WHERE NAME ='홍길동'; => '홍길동' 보다 작은 사람들의 | cs |
'Database > 오라클 Oracle' 카테고리의 다른 글
Oracle(오라클) 기초 Dual(더미테이블) , Session(날짜 형식 변경) (0) | 2017.04.05 |
---|