**해당 학습내용과 자료의 출처는 인프런 "배워서 바로쓰는 SQL쿼리"입니다
**회사가 강의도 보여주고 시험비도 주니까 빨리 3월꺼보자 여름...!
SQL - Structured Query Language 이다.
SQL은 컴퓨터에게 데이터를 가져오는 일(+조작하는 일)을 시킬때 쓰는
구조화된 질문을 하는 언어이다.
SQL의 기능별 분류
SQL은 대표적인 관계형데이터베이스 (RDB)이다!
따라서 테이블간의 공통점으로 테이블이 연결되어 있어야 한다.
데이터 저장소간 어떤 형태의 관계를 맺고있는 체계적인 구조의 집합 !
- NOSQL이란?
기존 RDB의 경우 데이터에 대한 리소스가 많이 들어, 정규화와 인덱싱 등을 거치지 않고 그대로 저장하는것.
- 저장은 쉽지만, 조회는 쉽지 않다.
- SQL은 RDB에 대해서만 실행이 가능하도록 만들어져 있다.
SECTION1. SQL 기본 활용
1. Select 구문 파헤치기
- 데이터를 읽을 때 Select 구문을 사용한다.
select/from/where/group by/having/order by의 6가지 절로 이루어져 있다.
// 자료를 조회 할 때 가장 중요하게 알려줘야 하는 두가지 ! -> 어떤것 , 어디에 !
Select * // *는 와일드 카드, from 뒤 테이블의 모든것을 가져와 !
from 'table' // from은 select를 실행하기 위한 필수조건, join이 작성되는 부분
where 1=1 (and/or) column ='condition'
group by 'key'
having count(*) > 5
order by 'key' (asc/desc)
; // 분기를 설정, 여기까지만 실행 !
- Select : -를 가져와! 라는 뜻. select columnName1,columnName2와 같이 개별 컬럼명을 불러올수도 있다.
** select * from orders limit 7 ; 하고 limit를 주게되면 원하는 건수만 조회가능
- Where : 가져올 데이터의 조건(filter)을 컴퓨터에게 알려주는 라인. and와 or를 통해 한 개 이상의 조건설정 가능.
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all 여기서 실습을 해보면
테이블을 불러오고 가져와야 하기 때문에, 이렇게 작성해줘야 한다.
SELECT *
FROM Customers
WHERE Country != "Mexico" // Country에 저장된 데이터가 문자열이기 때문에 문자열로 조회
SELECT * FROM Customers WHERE Country like "S%" 이렇게 조건을 주게되면 국가 이름이 "S"로 시작하는 국가를 조회 가능하다.
"S"로 시작하지 않는 조건을 걸어줄 때는 not like라고 하면 되겠지!
(like는 문자열이 ~와 같다면 필터링을 해서 가져와줘로 해석할 수 있다)
or를 쓰지 않아야 하는 이 문제의 답은
select *
from customers
where country (in Mexico,Sweden,USA)
;
- Order by : 가져온 데이터의 결과를 순서대로 정렬해주는 명령을 작성해준다. 오름차순은 asc 내림차순은 desc 이다.
이렇게 컬럼의 이름을 몰라도 위치를 안다면 해당 컬럼으로 정렬 할 수 있다. (상대지정법)
SECTION2. SQL 기본 활용
- group by : 집계 연산자 ( sum, count...)를 실행할 때 기준을 알려주는 라인이다.
기준을 설정할 수 있는 group by..!!
select country from customers group by country 하면 중복없는 country가 나오지만, 이렇게 쓰진 않는다.!
- having : group by를 통해 데이터에 필터를 걸고 싶을 때 사용한다. (group by를 쓸때만 사용가능)
마지막줄을 having cnt >=5로 위에서 줄였던 컬럼명을 사용해도 된다.
- 집계함수 (Aggregate Funcition)
: 말 그대로 데이터를 집계하는 데에 사용한다. Select 절 내에서 사용하며 각 함수별로 사용법이 다소 상이하다.
엑셀에서 자주쓰는 함수들과 유사하다.
집계함수 총정리!
- where절로 특정 범위 선택 후 집계함수 적용
- 아래에서 데이터가 사라진 이유는 groupby를 설정을 안해줘서..!
- 월별로 몇명인지 세기위한 기준이 있기 때문에 group by를 설정해준다
- 그룹으로 기준을 짓고, 집계함수를 쓴 또다른 예시
- where절에는 새로운 쿼리로 비교구문을 줄 수 있다.
- count()안의 것은 안전하게 id로..!!! 근데 *와의 차이는 뭐징
헷갈릴수 있는 문제 ! 처음부터 차근히 생각하몀 ㄴ된다
드디어 둘의 차이를 발견 (이렇게 오류가 날수 있으니 distinct는 꼭 구분가능한것으로..!)
- case문을 사용해보자 (조건별분기)
케이스문을 쓰지않는 sql구문은 없기 때문에 익혀놓자 !
-문제 10
- Join : 여러 테이블을 하나로 합쳐주는 역할을 해주는 기능
- key를 기준으로 테이블을 합치게 된다.
-cross join은 전체 ~
실습문제를 풀어보면 !
조인한 테이블에서 똑같이 쓰면 된다 !
조인 문제를 ㅍ풀어보자
4번
select CustomerID, sum(Quantity)
from orders o inner join orderDetails od
on o.orderID = od.orderID
group by CustomerID
5번
select c.customerid, o.orderDate, o.orderid, c.customername
from customers c inner join orders o on c.customerid = o.customerid
where substr(o.orderdate, 1, 7) = '1996-07'
order by orderdate desc;
3월에 스클드 따즈아~!~!~ (저번시험 58점으로 떨어진 나 )
'나의 엔키아 생활' 카테고리의 다른 글
[신입OJT] 모든 개발자를 위한 HTTP 웹 기본 지식 (0) | 2023.01.18 |
---|---|
[신입OJT] CLOUD R&D / 가상화와 클라우드 / Docker Container / Docker Image, Kubernetes/ 실습 (0) | 2023.01.16 |
[엔키아를 찾아라] 엔키아 공채8기 신입사원 김아름입니다! (0) | 2023.01.11 |