2023. 3. 2. 16:38ㆍlanguage/SQL
1주차_1 - DB(데이터베이스) & SQL
-DB(데이터베이스)
👉 여러 사람들이 같이 사용할 목적으로 데이터를 담는 통
👉 통상적으로, 모든 데이터베이스는 CRUD에 해당하는 기능을 지원
C (Create): 데이터의 생성을 의미
R (Read): 저장된 데이터를 읽어오는 것을 의미
U (Update): 저장된 데이터를 변경하는 것을 의미
D (Delete): 저장된 데이터를 삭제하는 것을 의미
-SQL(Structured Query Language)
👉 데이터베이스에 요청(Query)를 날려서 원하는 데이터를 가져오는 것을 도와주는 언어
👉 장점: 데이터를 읽어오는 과정인 Read를 매우 편하게 만들어줌
데이터를 손쉽고 깔끔하게 정리/분석하는 기능도 지원
1주차_2 - Select & Where
-Select 쿼리문
👉 쿼리(Query)문: 데이터베이스에 명령을 내리는 것을 의미
👉 Select 쿼리문: 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미
👉 Select 쿼리문 구성: 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성
-Where 절
👉 Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미
-Select, Where 절 등 문법
👉 select 쿼리문에 where 절 함께 사용
ex) select * from orders
where payment_method = 'kakaopay'
👉 where 절과 자주 같이 쓰이는 문법
- '같지 않음' ex) -> !=
- '범위' ex) -> between '1' and '5'
- '포함' ex) -> in(1, 5)
- '패턴' ex) -> like 'a'
* like의 다양한 사용법
- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
- where email like '%a' email 필드값이 a로 끝나는 모든 데이터
- where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
-그 외 유용한 기능
👉 limit: 테이블에 있는 일부 데이터만 가져오는 기능
ex) select * from orders
where payment_method = "kakaopay"
limit 5
👉 distinct: 중복 데이터 제외 후 가져오는 기능
ex) select distinct(payment_method) from orders
👉 count: 데이터의 숫자를 세는 기능
ex) select count(*) from orders
2주차 - Group by & Order by
-Group by
👉 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미
👉 ex) select name, count(*) from users
group by name
👉 쿼리가 실행되는 순서: from → group by → select
👉 Group by 기능
- 동일한 범주의 개수 구하기
ex) select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명
- 동일한 범주에서의 최솟값 구하기
ex) select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
- 동일한 범주에서의 최댓값 구하기
ex) select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
- 동일한 범주의 평균 구하기
ex) select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
- 동일한 범주의 합계 구하기
ex) select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
-Order by
👉 출력된 데이터를 정렬해 주는 것을 의미
👉 오름차순 정렬 -> ex) select name, count(*) from users
group by name
order by count(*) asc
*'asc'생략 가능(오름차순이 기본값이기 때문)
👉 내림차순 정렬 -> ex) select name, count(*) from users
group by name
order by count(*) desc
👉 쿼리가 실행되는 순서: from → group by → select → order by
-그 외 유용한 문법
👉 Alias: 쿼리가 길어지면 헷갈릴 수 있기 때문에 혼동을 최소화하고
원하는 이름으로 결과를 출력하기 위해 사용
3주차 - Join & Union
-Join
👉 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미
👉 'Left Join'과 'Inner Join'이 있음.
👉 Inner Join
- 교집합의 개념과 유사하다.
- A, B 테이블이 있다고 가정했을 경우, 두 테이블에 공통적으로 만족되는 값이 있을 경우만 조회됨.
👉 Left Outer Join
- Outer Join에 포함되는 개념으로 쿼리 작성시 'Outer'는 생략 가능함. ex) Left Outer Join -> Left Join
- 기준 테이블에서 Join대상 테이블에 공통되는 값이 없을 경우 'Null'값으로 조회하여 출력함.
즉, 기준이 되는 테이블의 값들은 모두 출력되며 Join대상 테이블의 값이 있을 경우 값이 출력되고
없을 시 Null값이 출력된다.
-Union
👉 Join과 Union의 공통점과 차이점
- 공통점: 테이블끼리의 데이터를 연결함.
- 차이점: 연결하는 방법이 다름.
👉 Join은 테이블끼리 옆으로 연결되고, Union은 기준 테이블의 아래에 연결됨.
👉 'Union'과 'Union All' 차이점
- Union: 테이블간에 중복되는 데이터 값을 삭제 후 연결함.
- Union All: 중복되는 값도 포함해서 모두 연결함.
4주차 - Subquery
👉 Subquery는 Select절, From절, Where절에 쓰일 수 있지만 가장 많이 쓰이는 것은 From절에서의 사용임.
👉 Inline View
-From절에서 사용되는 Subquery를 말함.
-실제 테이블 대신에 서브쿼리의 결과를 테이블처럼 사용함.
'language > SQL' 카테고리의 다른 글
SQL - 4주 차(Subquery etc.) (0) | 2023.03.02 |
---|---|
SQL - 3주 차(Join, Union etc.) (0) | 2023.03.02 |
SQL - 2주 차(Group by, Order by etc.) (0) | 2023.03.02 |
SQL - 1주 차(DB, SQL, Select, Where etc.) (0) | 2023.03.02 |