Back-end

Database 기본2

calvin9150 2021. 2. 26. 20:06
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
----------------------- 2021-02-26
 
 --RESULT SET에서 ROW 필터링 가져오려면 WHERE
SELECT *
FROM EMPLOYEE
WHERE SALARY<=3500000;
 
--DB에선 대부분 SELECT 문 안에서 이루어진다 -> 함수실행, 산술연산 등
--컬럼명이 들어가는 곳에서 산술연산 가능.
SELECT 10+20
FROM DUAL; --ORACLE이 제공하는 테스트용 테이블
 
SELECT SALARY, BONUS, SALARY+SALARY*BONUS
FROM EMPLOYEE;
 
--EMPLOYEE 테이블에서 각 사원의 연봉 조회
--컬럼명 AS 변경할컬럼명 (AS 생략하고 띄워쓰기로가능) "변경할컬럼명" -> ""안에 넣으면 띄워쓰기나 특수기호 사용 가능
SELECT EMP_NAME 사원명, SALARY*12 연봉, (SALARY+SALARY*BONUS)*12 AS 성과금포함연봉
FROM EMPLOYEE;
--없는 컬럼명은 추가가 된다
SELECT EMP_NAME, '님'100
FROM EMPLOYEE;
 
SELECT DISTINCT DEPT_CODE --컬럼 중복값을 제거하고 출력
FROM EMPLOYEE;
 
SELECT DISTINCT DEPT_CODE, JOB_CODE -- 여러 컬럼을 적으면 해당 컬럼들끼리 ROW에서 겹치는 거만 삭제
FROM EMPLOYEE;
 
SELECT EMP_NAME||'님', SALARY||'원' --컬럼을 연결
FROM EMPLOYEE;
 
--EMPLOYEE 테이블에서 사원명 송종기의 전체 컬럼 조회
SELECT *
FROM EMPLOYEE
WHERE EMP_NAME='송종기';
--코드가 D5인 사원 조회
SELECT*
FROM EMPLOYEE
WHERE DEPT_CODE='D5';
--급여가 2백만원 이상인 사원 조회
SELECT *
FROM EMPLOYEE
WHERE SALARY>2000000;
 
--코드가 D5 혹은 D6인 사원의 사원명,급여,코드 조회
SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE='D5' OR DEPT_CODE='D6';
 
--부서코드가 D5가 아닌 사원을 조회
SELECT *
FROM EMPLOYEE
WHERE NOT DEPT_CODE='D5';
 
--EMPLOYEE 테이블에서 급여 300~500만의 사원의 이름, 급여, 부서코드 조회
SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE SALARY>3000000 AND SALARY<5000000;
--WHERE 컬럼 BETWEEN 값 AND 값 사용
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY BETWEEN 3000000 AND 5000000;
 
DESC EMPLOYEE; --테이블에 어떤 컬럼이 있는지 조회
--고용일이 00/01/01 이전에 입사한 사원의 이름, 부서, 고용일 조회
SELECT EMP_NAME, DEPT_CODE, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE<'00/01/01';
 
--고용일이 09/01/01~00/01/01 사이에 입사한 사원의 이름, 부서, 고용일 조회
SELECT EMP_NAME, DEPT_CODE, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '90/01/01' AND '00/01/01';
 
 
--LIKE : 특정 패턴의 문자값 조회
-- 와일드카드를 사용해서 조회 %, _
-- % : 0개 이상의 임의의 문자 표시
-- _ : 1개의 임의의 문자 표시
 
-- 1) 앞자리가 ze로 시작 : ze% (앞에는 ze로 시작하는걸 모조리 가져와라)
-- 2) 뒷자리가 com으로 끝남 : %com (com으로 끝나는걸 모조리 가져와라)
-- 3) 문장중에 a와 n을 포함 : %a%n% (어느 위치에 있는지는 모르지만 문장중에 a 와 n을 포함하는걸 모조리 가져와라)
 
--전씨 성을 가진 사언의 이름, 코드, 급여 조회
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전_%';
 
--이름에 이 가 포함된 사원 조회
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%이%';
 
--특수기호를 조건으로 쓰려면 ESCAPE 사용
SELECT*
FROM EMPLOYEE
WHERE EMAIL LIKE '___A_%' ESCAPE 'A';
 
--이 씨가 아닌 사원 조회
SELECT *
FROM EMPLOYEE
WHERE NOT EMP_NAME LIKE '이%';
 
--NULL 은 연산처리가 안된다. 
--IS NULL : NULL 값인 것 찾음
 
--보너스 못받는 사람 조회......
SELECT *
FROM EMPLOYEE
WHERE BONUS IS NULL;
 
--부서 미지정자 조회
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE IS NULL;
 
--IN/ NOT IN : 포함됐는지 안됐는지
SELECT *
FROM EMPLOYEE
WHERE (JOB_CODE='J7' OR JOB_CODE='J2') AND SALARY>2000000;
cs