오래 못 할 짓 하지 않기
[ DB ] 3. SQL ( DML ) 본문
SELECT { Attribute }
FROM { Table }
Where { Condition }
쿼리의 구조는 다음과 같다.
Select나 가장 처음에 오는 부분에는 Attribute나 세부적인 데이터가 들어간다.
FROM 뒤에는 사용/참조할 Table을 적고
Where 뒤에는 조건을 적는다.
이에 실행 순서들을 보면 From → Where → SELECT순서로 실행시킨다.
From 에 있는 Table에서 ▶ Where Condition에 맞는 Tuple의 ▶ Attribute를 Select 해서 보여준다.
Select 특)
● 정렬 안 함 ( Order by로 가능 )
● 중복허용 ( DISTINCT 로 중복 제거 가능 )
출력될 때 내가 원하는 Column 이름으로 바꿀 수 있음
Where
a> 10 and a<15 대신
where a BETWEEN 10 and 15 로 할 수 있음
From
이렇게 하면 여기서 가능한 조합 다 보여줌 = Cartesian-product
Cartesian-product + 조건 = Join
Set Operation
UNION ALL = 다 합침
INTERSECT ALL = 교집합
EXCEPT ALL = 차집합
* INTERSECT 는 SQL에서 지원하지 않는다.
대신 Join ~~ On [ 두 개 id가 같은 곳 ] . 으로 하면 된다.
* EXCEPT 는 SQL에서 지원하지 않는다.
대신 NOT IN [ EXCEPT 시킬 영역의 조건 ] 으로 한다.
String Operation
- Percent (%) - 일치하는 Substring 이 있으면 됨
- Underscore(_) - 일치하는 Char가 있으면 됨
ex) Select name
From students
Where name Like '%ri%'
= 이름 중간에 ri가 들어가는 사람 이름 찾아라
예외 : % 도 넣고싶은데 기능으로 인식하면 어떡함
▶ ESCAPE character를 사용한다.
ex) 100% 가 들어간 걸 찾고싶다?
LIKE '100 \%' ESCAPE '\'
ORDERING
SELECT DISTINCT name
FROM instructor
ORDER BY name
▶ Instructor Table에서 이름으로 정렬하는데 중복 허용 X
SELECT dept_name, name
FROM instructor
ORDER BY dept_name, name
▶ Instructor Table에서 부서명과 이름으로 정렬하는데, 앞에 있는 걸 먼저 정렬함. 중복 X
부서별로 정렬 후, 같은 부서면 사람 이름으로 정렬
Aggregate Functions
● Group By
해당 Attribute의 값이 같은 Tuple끼리 묶어서 보여준다. (묶어서 연산도 가능)
근데 Select에서도 다 묶은 채로 시작하기 때문에 주의해서 써야한다.
● 실행 순서
From
> Group By
> Select에 만들어둔 연산 한다.
이러면 ID값에 이상한 값들만 들어감
Grouping을 할 때, ID와 사람 이름같이 개인의 값도 같이 select를 하게 되면
우리가 원하는 값이 출력되지 않는다.
+ Having
Group By에 있는 Where 절이라고 생각하면 된다.
Group By해서 나온 결과에서 Having의 조건만 통과하는 Tuple들만 골라낸다는 의미
● 차이점:
- Where : Group 전에 사용
- Having : Group 후에 사용
Other DML
● Insert
INSERT INTO tablename
VALUES ( col1값 , clo2값 , ...)
* 순서 중요함
● Select 해서 나온 결과를 INSERT할 수도 있다.
● Update
Update tablename
Set Col1_이름 = Col1_새로운 값 , Col2_이름 = Col2_새로운 값 , ...;
(Where 조건)
연봉이 모자란 사람들에게 연봉 인상을 시켜준다.
근데 Update문을 두 개 만들었을 때, 두 개 다 조건에 맞을 수도 있음. 이런 경우를 잘 나눠야 한다.
위 명령어는 첫 Update 조건에 걸려서 증가되고, 그 뒤 조건에도 걸릴 정도로 인상이 되어 3퍼 오르고 5퍼도 또 오를 수 있다.
조건문 바로 투입
Scalar Subqueries
Delete
(출처)
한동대학교 홍참길교수님 - 데이터베이스
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ DB ] 5. E-R Model (0) | 2024.04.08 |
---|---|
[ DB ] 4. More SQL (0) | 2024.03.31 |
[ DB ] 2. R - DBMS(2) (0) | 2024.03.11 |
[ DB ] 1. R - DBMS (0) | 2024.03.07 |
[ 데이터베이스 ] 24. Index (0) | 2024.02.20 |