SQL Basic part I

MisCaminos·2021년 1월 31일
0

DBMS

목록 보기
2/6
post-thumbnail

SQL의 4가지 주요 명령문:
DML(데이터 조작): INSERT, UPDATE, DELETE, MERGE
DDL(데이터 정의어): CREATE, ALTER, DROP, RENAME, TRUNCATE
TRANSACTION 제어: COMMMIT, ROLLBACK, SAVEPOINT
DCL(데이터 제어어): GRANT, REVOKE

기억해야하는 주요 SQL query 작성법:
1) SQL 명령문을 구사하기위해 사용하는 keywords는 대소문자 구분 없음.
2)하나이상의 줄에 입력할 수 있고, 마지막에는 ;로 끝남.
3) 테이블에 문자열로 들어가는 데이터는 single-quotation을 사용: 'is a ', 'Ralph', 'works for ', etc
(데이터에 들어가는 문자열을 literal이라고 부름. 보통 || 을 사용해서 연결시킬 수 있음)
4) *는 all을 의미함.
5) 절은 일반적으로 다른줄에 쓴다. 들여쓰기를 사용하면 가독성을 높일 수 있음.

1. select, from 및 기본적인 key words

describe / desc [table name];
테이블의 구조를 보여줌 ==> 각열 이름, null?여부, 데이터 타입

as를 통해 별칭 사용하기: 열 또는 테이블에 별칭을 붙여서 코드를 간결화할 수 있음.
exmaple1)

select last_name as name
from employees;
example2)
select last_name "name"
from employees;

==> as 표기 안해도 됨.

열 또는 문자열을 다른 열에 연결할때에 || 를 사용함. (same as concat()함수)

distinct: keyword to display distinct elements ONLY

where: specify condition satisfy in order to get filtered results
=, >, >=, <, <=, <> (=표시는 항상 오른편에... Java와 같음)

between... and ...: 두값 사이 (지정 값 포함)

in (set) : specify particular cases(written in the set) the condition must include

like: 문자 패턴 일치

example1)

select first_name 
from employees;
where first_name like '%s%'

==> 이름에 s가 처음,마지막,어디에는 존재하는 경우 (%는 무엇이든 될 수 있음. 공백이 될수도있음)

example2)

select first_name 
from employees;
where first_name like '_s%' 

==> 이름에 두번째 레터가 s인 경우 (만약 세번째 레터가 s여야한다면, '__s%'를 사용)

example3)

select first_name 
from employees;
where first_name like '%s_'

==> 이름에 s이후 한개의 레터가 있는 경우

example4)

select job_id
from employees;
where job_id like '%SA|_%' escape '|';

==> jobid에 'SA' 문자열 자체가 있는 경우, underbar가 underbar자체로 인식되도록 escape 사용

null:
-null값은 0 또는 (blanck)와는 다름.
-is null 또는 is not null을 사용함. (=null 또는 !=null 아님!)

order by: arrange elements by
asc, desc : 각각 오름차순, 내림차순
여러 열을 기준으로 (나열한 순차적으로) 정렬할 수 있음.

and/ or/ not : 논리 조건 활용

우선순위 규칙: (괄호를 사용하여 우선순위 제어 가능)
1) 산술연산자
2) 연결연산자(||)
3) 비교조건
4) IS [NOT] NULL, LIKE, [NOT] IN
5) [NOT] BETWEEN
6) NOT 논리조건
7) AND 논리조건
8) OR 논리조건

2. table의 검색, filter, 정렬, join (한개의 table & 여러 table)

-등가 조인(여러 테이블을 where절로 각 테이블에서 동일해야하는 조건을 집어서 join ),

-자체 조인: 하나의 테이블내 해당하는 조건 2가지를 기준으로 나누고 원하는 데이터만 match해서 filter

example)

select worker.last_name || 'works for' || manager.last_name
from employees worker, employees manager
where worker.manager_id = manager.employee_id;

==> employees 테이블 안에서 worker부분과 manager부분을 가상으로 나누어서 worker의 manager_id와 manager의 employee_id를 match해서'[worker] works for [manager]' 문구를 데이터로 확보함.

-natural(자연) join: 동일한 이름을 가진 모든 열을 기준으로 join
단, 동일한 이름을 가진 열의 데이터 유형이 서로 다른 경우, 오류 발생.

-using절:
join(table) using(column name)
using절에는 join의 기준이 되는 column 이름만 명시해야함.
using절을 사용하면 둘 이상의 열이 일치할 때 한열만 일치 시킬 수 있다.
참조되는 열에 테이블이름이나 별칭을 사용하면 안됨.

-on절:
join(table) on(condition)
on절에는 join의 기준이 되는 condition을 모두 표기해야함.
on절을 두번 사용해서 3-way join할 수도 있음

example)

select employee_id, city, department_name
from employee e
join departments d
on d.department_id = e.department_id
join location l
on d.location_id = l.location_id;

-전체 또는 한쪽 포괄 조인
where절에 =을 사용해서 포괄하려는 테이블의 열을 명시하기때문에, 모자란쪽에 (+)표기되어야함.

-left outer join (where절에 왼쪽에 (+)이 있는것과 같음)
right outer join (where절에 오른쪽에 (+)이 있는것과 같음)
full outer join (양쪽 모두 다 query의 result로 반환됨)

-3-way join
n개의 테이블을 join하려면 최소 n-1개의 join 조건이 필요함.

-cartesian product (카티시안 곱) 또는 교차 join:
join조건이 생략된 경우, 첫번째 테이블의 모든행이(ex. 5행) 두번째 테이블의 모든행(ex. 15행)과 join된 경우(ex. 75행)
where절을 사용해서 join 조건을 명시해야함.

profile
Learning to code and analyze data

0개의 댓글