티스토리 뷰

190401


금일은 SQL의 간단한 정의와, 가장 중요하고 기본이 되는 SELECT문에 대해 다뤄보도록 하겠습니다.

Database는 쿼리문 안에서 모든 설명과, 코드를 같이 넣을 예정으로, 같이 넣도록 하겠습니다.


* SQL에서 --은 주석처리입니다.

* --가 없는 행은 소스라고 보시면 되겠습니다.

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
-- <SQL>
-- Structured Query Language(구조화된 질의언어)
-- 데이터베이스를 대상으로 질의를 수행할 수 있다.
-- 데이터의 조회, 데이터의 추가, 데이터의 변경, 데이터의 삭제
-- 데이터베이스의 객체(테이블, 뷰, 인덱스, 시퀀스, 시노님, 프로시저, 함수)의 생성 및 삭제
-- 제약조건의 추가/삭제/활성화/비활성화
-- 사용자의 추가/삭제, 권한부여/권한제거
-- 트랜잭션 처리
 
-- SQL의 종류
-- DML(데이터 조작 언어 : Data Mannipulation Language)
    -- 데이터의 추가(insert into), 변경(upadte), 삭제(delete), 조회(select)
-- DDL(데이터 정의 언어 : Data Deifinition Language)
    -- 데이터베이스 객체 생성(create), 삭제(drop), 변경(alter)
-- DCL(데이터 제어 언어 : Data Control Language)
    -- 트랜잭션의 실행(commit), 취소(rollback)
    
--< select문 >
    -- 데이터베이스에서 정보를 조회(검색)한다.
 
    -- 테이블의 모든 데이터 조회
    -- select * << *은 해당 테이블의 모든 조회를 뜻함.
    -- from 테이블명;
    -- 데이터베이스 null의 의미 : 값이 아직 정해지지 않음
    
    -- 모든 부서정보 조회하기
    select *
    from DEPARTMENTS;
    
    -- 모든 국가정보 조회하기
    SELECT *
    from  COUNTRIES;
    
    -- 모든 사원정보 조회하기
    -- 오라클의 키워드와 테이블이름, 컬럼이름은 대소문자를 구분하지 않는다.
    SELECT *
    FROM EMPLOYEES;
    -- 모든 직종정보 조회하기
    SELECT *
    FROM JOBS;    
    -- 모든 직종변경 이력정보 조회하기
    SELECT *
    FROM JOB_HISTORY;
    
    -- 테이블의 특정 열(컬럼)의 데이터 조회하기
    -- select 컬럼명, 컬럼명, 컬럼명
    -- from 테이블명
    
    -- 부서정보중에서 부서번호와 부서이름을 조회하기
    select DEPARTMENT_ID, DEPARTMENT_NAME
    from DEPARTMENTS;
    
    -- 사원정보중에서 사원아이디, 이름, 급여를 조회하기        (tip 컬럼명은 숙지하고 코딩하는 것을 지향!)
    select EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY
    from EMPLOYEES;
    
    -- 사원정보중에서 부서아이디, 사원아이디, 직종아이디, 이름, 급여를 조회하기
    select department_id, employee_id, job_id, FIRST_NAME, salary
    from EMPLOYEES;
    
    -- SELECT절에서는 산술연산자(+,-*,/)의 사용이 가능하다.
    -- 숫자 데이터 및 날짜 데이터에 대해서 사용가능하다.
    -- select 컬럼명 + 컬럼명, 컬럼명 - 숫자, 컬럼명 * 숫자, 컬럼명/숫자, 컬럼명/컬럼명
    -- from 테이블명
    
    -- 사원 아이디, 이름, 급여, 연봉을 조회하기
    select employee_id, first_name, salary, salary * 12
    from EMPLOYEES;
    
    -- 별칭 부여하기
    -- select 컬럼명 as 별칭, 컬럼명 as 별칭, 산술식 as 별칭 ( 컬럼명 별칭 : as 생략 가능)
    -- from 테이블명
    
    -- 사원 아이디, 이름, 급여(주급), 시급(원으로 환산한 값: 1달러 1130원)
    select employee_id, first_name, salary, (salary/40)*1130 as 시급
    from EMPLOYEES;
    
    select employee_id as id, first_name as name, hire_date as "date"
    from employees;
    
    -- date는 오라클의 예약어로 별칭으로 사용 불가!!
    
    -- 연결 연산자
    -- 연결 연산자(||)는 컬럼과 컬럼, 산술식과 컬럼, 산술식과 산술식을 연결해서 문자를 생성한다.
    
    -- 사원아이디, 이름, 급여를 조회하기
    -- (단, 급여를 조회할 때 화폐단위를 같이 표현할 것)
    select employee_id, first_name, salary || '달러' 급여    -- 문자,문자열은 ''(작은따옴표)로 감싼다.
    from EMPLOYEES;
    
    -- 사원아이디, 이름, 직종을 조회하기
    -- (단, frist_name과 last_name을 연결해서 조회하고, 별칭을 full_name으로 붙이기)
    select employee_id, first_name || last_name as full_name, job_id
    from EMPLOYEES;
    
    select employee_id, first_name || ' ' || last_name as full_name, job_id
    from EMPLOYEES;
    
    -- 사원들이 현재 근무하고 있는 직종을 조회하기
    select jod_id    -- 중복도 같이 나옴.
    from EMPLOYEES;
    
    select DISTINCT job_id        -- 컬럼명앞에 DISTINCT를 적으면 중복 제외검색
    from EMPLOYEES;
    
    select DISTINCT employee_id, job_id
    from EMPLOYEES;
    
    -- 선택되는 행을 제한하기
    -- where 절을 사용하면 조회되는(선택되는) 행을 제한할 수 있다.
    -- where 절은 from 절 다음에 위치한다.
    
    -- 조건절의 조건식을 만족하는 행의 모든 컬럼을 조회한다.
    -- select *
    -- from 테이블명
    -- where 조건식
    
    -- 조건절의 조건식의 만족하는 행의 지정된 컬럼을 조회한다.
    -- select 컬럼명,컬럼명
    -- from 테이블명
    -- where 조건식
    
    -- 오라클의 비교조건
    -- 같다          =        대입연산자 :=
    -- 같지않다        !=    <>
    -- 크다, 작다    >,<
    -- 크거나같다   >=
    
    -- 사원정보에서 60번부서에 소속된 사원의 아이디, 이름, 직종을 조회하기
    select employee_id 아이디, first_name || ' ' || last_name full_name, job_id 직종
    from EMPLOYEES
    where DEPARTMENT_ID = 60;
    
    -- 사원정보에서 급여를 15000달러 이상 받는 사원의 아이디, 이름, 직종, 급여를 조회하기
    select employee_id, job_id, salary
    from EMPLOYEES
    where salary >= 15000;
    -- 사원정보에서 사원 아이디가 200번인 사원의 아이디, 이름, 전화번호, 이메일, 소속부서 아이디 조회하기
    select employee_id, first_name || ' ' || last_name full_name, phone_number, email, department_id
    from EMPLOYEES
    where EMPLOYEE_ID = 200;
    -- 국가정보에서 아시아 지역에 위치하고 있는 나라의 국가코드, 국가명 조회하기
    select country_id, country_name
    from COUNTRIES
    where REGION_ID = 3;
    
    -- where절에서 사용가능한 기타 비교조건
    -- where 컬럼명 between 값1 and 값2
        -- 지정된 컬럼이 값1 이상 값2 이하인 행을 선택한다.
    -- where 컬럼명 in (값1, 값2, 값3)
        -- 지정된 컬럼의 값이 값1, 값2 값3 중의 하나와 일치하는 행을 선택한다.
        -- 괄호안에 포함되는 값의 갯수는 1개 이상 여러개
    -- where 컬럼명 like '문자패턴'
        -- 지정된 컬럼의 값이 문자패턴과 유사한 행을 선택한다.
    -- where 컬럼명 in null
        -- 지정된 컬럼의 값이 null인 행을 선택한다.
        -- 컬럼된 값이 null인 행을 선택할 �� where 컬럼명 = null과 같이 사용하지 않는다.
    -- where 컬럼명 is no null
        -- 지정된 컬럼의 값이 null이 아닌 행을 선택한다.
        -- 컬럼의 값이 null이 아닌 행을 선택할 때 where 컬럼명!= null과 같이 사용하지 않는다.
    
    -- 급여가 10000~ 15000달러를 받는 사원의 아이디, 이름, 직종, 급여를 조회하기
    select employee_id, first_name || ' ' || last_name full_name, job_id, salary
    from EMPLOYEES
    where salary BETWEEN 10000 and 15000;
    -- 사원 아이디가 150 ~ 170에 속하는 사원의 아이디, 이름 조회하기
    select employee_id, first_name || ' ' || last_name full_name
    from EMPLOYEES
    where employee_id between 150 and 170;
    -- 소속부서 아이디가 30, 60, 90인 사원의 아이디, 이름, 직종, 부서아이디를 조회하기
    select employee_id, first_name || ' ' || last_name full_name, department_id
    from EMPLOYEES
    where DEPARTMENT_ID in (306090);
    
    -- 직종 아이디가 'ST_MAN'이거나 'ST_CLERK'인 직종의 아이디, 제목, 최소급여, 최대급여 조회하기
    select job_id, job_title, min_salary, max_salary
    from JOBS
    where job_id in ('ST_MAN''ST_CLERK');        -- 값은 대소문자 구별.
    
    -- 오라클의 문자패턴 형식
    -- where job_id like 'ST%'        <-- job_id가 'ST'로 시작하는 것 검색    :    'ST_MAN', 'ST_CLERK'
    -- where job_id like '%MAN'        <-- job_id가 'MAN'로 끝나는 것 검색        :    'ST_MAN', 'SH_MAN', 'SR_MAN'
    -- where first_name like '%e%'        <-- first_name이 'e'를 포함하는 것 검색 : 'elsa','gabliel', 'jane'
    
    -- where name like '이__'        <-- 이름이 '이**' 인 사람을 검색 : 이순신, 이성계
    -- where name like '이_'        <-- 이름이 '이*' 인 사람을 검색 : 이산, 이황, 이이
    
    -- 이름에 'e'를 포함하고 있는 사원의 아이디, 이름을 조회하기
    select employee_id, first_name || ' ' || last_name full_name
    from EMPLOYEES
    where first_name like '%e%';
    
    -- 이름이 'A'로 시작하는 사원의 아이디, 이름을 조회하기
    select employee_id, first_name || ' ' || last_name full_name
    from EMPLOYEES
    where FIRST_NAME like 'A%';
    
    -- 이름이 'L'로 시작하고 이름이 4글자인 사원의 아이디, 이름을 조회하기
    select employee_id, first_name || ' ' || last_name full_name
    from EMPLOYEES
    where first_name like 'L___';
    
    -- 부서정보에서 담당자가 지정되어 있지 않는 부서의 아이디, 부서이름을 조회하기
    select department_id, department_name
    from DEPARTMENTS
    where MANAGER_ID is null;
    -- 사원정보에서 커미션을 받는 사원의 아이디, 이름, 급여, 커미션을 조회하기
    select employee_id, first_name || ' ' || last_name full_name, COMMISSION_PCT
    from EMPLOYEES
    where COMMISSION_PCT is not NULL;
    -- 사원정보에서 소속부서가 지정되어 있지 않는 사원의 아이디, 이름, 직종을 조회하기
    select employee_id, first_name || ' ' || last_name full_name, job_id
    from EMPLOYEES
    where DEPARTMENT_ID is not null;
 
cs







SELECT문의 기본적인 실행과정, 순서입니다.












오늘 배운 SELECT문을 통한 과제파일입니다.

190401_sql_quiz.txt

주석처리로 되어 있으니 쿼리문에 바로 복사 + 붙여넣기 하여 작성하시면 되겠습니다.


위 설명 쿼리문과 과제 답안 쿼리문입니다.

190401.sql

190401_과제.sql


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
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
글 보관함