728x90
SQL Structured Query Language : 구조적 질의어
table 의 정의 : 행 (row)과 열 (column)의 집합(set)
table 은 논리적 객체이다.
행을 Data , 열 Structure 이라고도 부른다.
검색 : select
조작 DML(insert, update, delete) : 행을 조작하는 언어
Object 조작 : DDL (create, alter, drop) : 객체(table ,index,view)를 조작하는 언어
User권한 조작 : DCL (grant xxx to user, revoke xxx from user)
Select 형식 :
Select
from
[where]
[group by]
[having]
[order by]
project : select 절의 열 선택
selection : where절의 행 선택
join : from절에 쓴다.. table1, table2
distinct : 중복제거
구문 : 대소문자 무관
저장된 정보 : 대소문자 구별
null 과 null은 같지않다. null* 100 = null
sql 에서 os명령어 사용시에는 ! 를 붙인다.
EXPERT> select distinct department_id from employees;
DEPARTMENT_ID
-------------
90
20
110
50
80
60
10
8 rows selected.
EXPERT> select last_name, job_id, salary, hire_date
2 from employees
3 where salary>=10000;
LAST_NAME JOB_ID SALARY HIRE_DATE
------------------------- ---------- ---------- ---------- ---------
King AD_PRES 24000 1987-06-17 00:00:00
Kochhar AD_VP 17000 1989-09-21 00:00:00
De Haan AD_VP 17000 1993-01-13 00:00:00
Zlotkey SA_MAN 10500 2000-01-29 00:00:00
Abel SA_REP 11000 1996-05-11 00:00:00
Hartstein MK_MAN 13000 1996-02-17 00:00:00
Higgins AC_MGR 12000 1994-06-07 00:00:00
7 rows selected.
--저장
EXPERT> save emp_sal_10000.sql
Created file emp_sal_10000.sql
--확인
EXPERT> !ls
afiedt.buf creuser.sql Desktop emp_sal_10000.sql sqlnet.log
--내용확인
EXPERT> get emp_sal_10000.sql
1 select last_name, job_id, salary, hire_date
2 from employees
3* where salary>=10000
EXPERT> @emp_sal_10000.sql
LAST_NAME JOB_ID SALARY HIRE_DATE
------------------------- ---------- ---------- -------------------
King AD_PRES 24000 1987-06-17 00:00:00
Kochhar AD_VP 17000 1989-09-21 00:00:00
De Haan AD_VP 17000 1993-01-13 00:00:00
Zlotkey SA_MAN 10500 2000-01-29 00:00:00
Abel SA_REP 11000 1996-05-11 00:00:00
Hartstein MK_MAN 13000 1996-02-17 00:00:00
Higgins AC_MGR 12000 1994-06-07 00:00:00
7 rows selected.
EXPERT>/ --내용확인
EXPERT>run -- 쿼리수행 and 내요확인
EXPERT> alter session set nls_date_format='DD-MON-RR'; 날자형식 설정
임시로 설정됨
where id=10 or id=20 or id=30; ==> where id in(10,20,30)
where first_name like '%a' a로 끝나는
1 select employee_id, last_name, job_id
2 from employees
3* where job_id like '%SA\_%' escape '\'
EXPERT> /
EMPLOYEE_ID LAST_NAME JOB_ID
----------- ------------------------- ----------
149 Zlotkey SA_MAN
174 Abel SA_REP
176 Taylor SA_REP
178 Grant SA_REP
sorting
select last_name, job_id, department_id, hire_date startdate
from employees
order by startdate desc
hire_date
4
4 desc | asc default asc
sorting by multiple columns
1차 정렬 후 중복된 결과 끼리만 2차 정렬 수행
치환변수
& : 한번사용하고 버림
&& : session이 유지되어있는 동안까지 저장 (select절에서 정의)
define : session이 유지되어있는 동안까지 저장 ( SQL> define ~ ) 고정된 type
accept : session이 유지되어있는 동안까지 저장 (SQL> Accept ~) 사용자 정의 치환 변수
table 의 정의 : 행 (row)과 열 (column)의 집합(set)
table 은 논리적 객체이다.
행을 Data , 열 Structure 이라고도 부른다.
검색 : select
조작 DML(insert, update, delete) : 행을 조작하는 언어
Object 조작 : DDL (create, alter, drop) : 객체(table ,index,view)를 조작하는 언어
User권한 조작 : DCL (grant xxx to user, revoke xxx from user)
Select 형식 :
Select
from
[where]
[group by]
[having]
[order by]
project : select 절의 열 선택
selection : where절의 행 선택
join : from절에 쓴다.. table1, table2
distinct : 중복제거
구문 : 대소문자 무관
저장된 정보 : 대소문자 구별
null 과 null은 같지않다. null* 100 = null
sql 에서 os명령어 사용시에는 ! 를 붙인다.
EXPERT> select distinct department_id from employees;
DEPARTMENT_ID
-------------
90
20
110
50
80
60
10
8 rows selected.
EXPERT> select last_name, job_id, salary, hire_date
2 from employees
3 where salary>=10000;
LAST_NAME JOB_ID SALARY HIRE_DATE
------------------------- ---------- ---------- ---------- ---------
King AD_PRES 24000 1987-06-17 00:00:00
Kochhar AD_VP 17000 1989-09-21 00:00:00
De Haan AD_VP 17000 1993-01-13 00:00:00
Zlotkey SA_MAN 10500 2000-01-29 00:00:00
Abel SA_REP 11000 1996-05-11 00:00:00
Hartstein MK_MAN 13000 1996-02-17 00:00:00
Higgins AC_MGR 12000 1994-06-07 00:00:00
7 rows selected.
--저장
EXPERT> save emp_sal_10000.sql
Created file emp_sal_10000.sql
--확인
EXPERT> !ls
afiedt.buf creuser.sql Desktop emp_sal_10000.sql sqlnet.log
--내용확인
EXPERT> get emp_sal_10000.sql
1 select last_name, job_id, salary, hire_date
2 from employees
3* where salary>=10000
EXPERT> @emp_sal_10000.sql
LAST_NAME JOB_ID SALARY HIRE_DATE
------------------------- ---------- ---------- -------------------
King AD_PRES 24000 1987-06-17 00:00:00
Kochhar AD_VP 17000 1989-09-21 00:00:00
De Haan AD_VP 17000 1993-01-13 00:00:00
Zlotkey SA_MAN 10500 2000-01-29 00:00:00
Abel SA_REP 11000 1996-05-11 00:00:00
Hartstein MK_MAN 13000 1996-02-17 00:00:00
Higgins AC_MGR 12000 1994-06-07 00:00:00
7 rows selected.
EXPERT>/ --내용확인
EXPERT>run -- 쿼리수행 and 내요확인
EXPERT> alter session set nls_date_format='DD-MON-RR'; 날자형식 설정
임시로 설정됨
where id=10 or id=20 or id=30; ==> where id in(10,20,30)
where first_name like '%a' a로 끝나는
1 select employee_id, last_name, job_id
2 from employees
3* where job_id like '%SA\_%' escape '\'
EXPERT> /
EMPLOYEE_ID LAST_NAME JOB_ID
----------- ------------------------- ----------
149 Zlotkey SA_MAN
174 Abel SA_REP
176 Taylor SA_REP
178 Grant SA_REP
sorting
select last_name, job_id, department_id, hire_date startdate
from employees
order by startdate desc
hire_date
4
4 desc | asc default asc
sorting by multiple columns
1차 정렬 후 중복된 결과 끼리만 2차 정렬 수행
치환변수
& : 한번사용하고 버림
&& : session이 유지되어있는 동안까지 저장 (select절에서 정의)
define : session이 유지되어있는 동안까지 저장 ( SQL> define ~ ) 고정된 type
accept : session이 유지되어있는 동안까지 저장 (SQL> Accept ~) 사용자 정의 치환 변수