혼자 공부하는 SQL

혼공학습단 혼공 SQL - Chap2

쩡선영 2023. 7. 16. 23:59

저번주엔 너무 급히 쓰느라 대충 써서... 이번주부터 열심히 해보겠습니다!

일단 약간의 TMI를 해볼게염... 왜 수많은 혼공 시리즈 중 SQL을 선택했냐면 

매번 쿼리문을 사용할때마다 구글링해서 쿼리문들을 정리하고 외워보자는 목적에서 시작했습니다

한번 보러가시죠~~


✏️ USE 문

USE문이란 SELECT문을 실행하기 전 사용할 데이터베이스를 지정하는 것입니다

기본 형식 : 데이터베이스_이름;

USE market_db;

 

✏️ SELECT문

SELECT문이란 구축이 완료된 테이블에서 데이터를 추출하는 기능을 합니다

기본 형식 : SELECT ~ FROM ~ WHERE 

Select 뒤에는 열 이름, From 뒤에는 테이블 이름, WHERE 뒤에는 조건식이 나옵니다.

SELECT mem_name FROM member; --- member테이블에서 mem_mame열만 가져오기
SELECT * FROM member WHERE mem_name = '블랙핑크' --- member테이블에서 mem_name이 블랙핑크인 모든 열 가져오기

이런식으로 원하는 데이터 값을 추출할 수 있습니다

관계식에서 관계연산자( >, <, <=, >=, =)와 논리연산자(AND, OR)을 사용할 수 있습니다

또, BETWEEN ~AND, IN(), LIKE도 사용이 가능한데요!

SELECT mem_name From member where height BETWEEN 163 AND 165; --- height가 163과 165 사이인 데이터만 추출
SELECT mem_name From member where addr IN('경기', '전남', '경남'); --- addr이 경기 or 전남 or 경남인 데이터 추출
SELECT * From member where mem_name LIKE '우%' --- mem_name의 첫 글자가 '우'인 데이터 추출
SELECT * FROM member where LIKE '__핑크' --- _를 두개 사용하면 앞 두글자 상관없이 뒤가 '핑크'인 회원 출력

다음과 같이 사용할 수 있습니다

 

SELECT문 안에 FROM과 WHERE 말고도 다양한 것이 올 수 있습니다.

 

ORDER BY 절

ORDER BY 절은 결과의 값이나 개수에 대해 영향을 미치지 않지만, 결과가 출력되는 순서를 조절합니다.

즉, 정렬을 할 때 사용된다는 것이죠

SELECT * from member ORDER BY debut_date; -- debut_date를 기준으로 오름차순 정렬
SELECT * from member ORDER BY debut_date DESC; -- debut_date를 기준으로 내림차순 정렬

이렇게 정렬을 할 수 있습니다. 기본적으로 오른차순 정렬이 되며, DESC를 붙이면 내림차순으로 정렬이 됩니다

 

LIMIT 절

LIMIT 절은 출력하는 개수를 제한합니다. 

기본 형식 : LIMIT 시작, 개수

보통 이런 형식으로 많이 사용됩니다, LIMIT 3 만 쓰면 처음부터 3까지, LIMIT 2, 3 이라면 2번째 부터 3개 라는 뜻입니다

SELECT * FROM member ORDER BY dedut_date LIMIT 3;
SELECT * FROM member ORDER BY dedut_date LIMIT 2,3;

DISTINCT 절

DISTINCT는 조회된 결과에서 중복된 데이터를 1개만 남깁니다.

SELECT DISTINCT addr FROM member; -- member 테이블에서 addr열을 추출하는데, 중복된 열은 제거

위와 같이 추출하고자 하는 열 이름 앞에 DISTINCT만 써주면 중복되는 값이 제거됩니다.

 

GROUP BY 절

GROUP BY 절은 말 그대로 그룹으로 묶어주는 역할을 합니다. 

 

<<ORDER BY와 함께 주로 사용되는 집계함수>>

함수명 설명
SUM() 합계를 구하는 집계함수
AVG() 평균을 구하는 집계함수
MIN() 최소값을 구하는 집계함수
MAX() 최대값을 구하는 집계함수
COUNT() 행의 개수를 세는 집계함수
COUNT(DISTINCT) 행의 개수를 세지만 중복은 1개만 인정하는 집계함수

위의 함수와 같이 주로 사용됩니다.

SELECT memid, SUM(amount) FROM by GROUP BY mem_id;
실행결과
mem_id SUM(amount)
APN 5
BLK 6
GRL 5
MMU 20

이런 식으로 mem_id를 같은 것 끼리 그룹화 하여 amout를 각각 더해주었습니다

 

SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수" FROM buy GROUP BY mem_id;
실행결과
APN 5
BLK 6
GRL 5
MMU 20

이렇게 알기 쉽게 별핑을 정해줄 수도 있습니다.

 

Having 절

HAVING은 WHERE과 비슷한 개념이지만, 집계 함수에 대해서만 조건을 제한하는 것입니다. 

또한 HAVING은 무조건 GROUP BY 절과 함께 나와야 합니다

SELECT mem_id "회원 아이디", SUM(price*sum) "총 구매 금액"
	FROM buy
    	GROUP BY mem_id
   	HAVING SUM(price*amount) > 1000;
실행 결과
회원 아이디 총 구매 금액
BLK 1210
MMU 1950

이런 식으로 price*sum의 합이 1000이  넘는 것만 추출이 됩니다.

 

✏️ INSERT 문

INSERT 문이란 테이블에 데이터를 삽입하는 명령어 입니다.

INSERT INTO hongong1 (toy_id, toy_name) VALUES (2, '버즈'); -- toy_id열에 2를 toy_name열에 버즈를 삽입

이렇게 사용이 됩니다. 주의해야할 점은, 테이블을 정의할 때의 열의 순서 및 개수와 동일해야  한다는 것입니다.

 

AUTO_INCREMENT

AUTO_INCREMENT는 열을 정의할 때 1부터 증가하는 값을 자동적으로 입력해주는 것입니다.

주의해야할 점은 AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 합니다

 

CREATE TABLE hongong2 (
	toy_id INT AUTO_INCREMENT PRIMARY KEY,
	toy_name CHAR(4),
	age INT);

이런식으로 테이블을 생성할 때 AUTO_INCREMENT와 PRIMARY KEY를 작성해 주면 됩니다.

 

만약 1씩 증가하지 않고, 3씩 증가하고 싶다면

SET @@auto_increment_increment=3;을 뒤에다가 추가해 주면 됩니다.

 

✏️ UPDATE 문

UPDATE는 기존에 입력되어 있는 값을 수정하는 명령입니다.

기본 형식 : UPDATE 테이블 이름

                   SET 열1=값1, 열2=값2 ...

                   WHERE 조건

 

UPDATE city
SET city_name = '뉴욕', poppulation = 0
WHERE city_name = 'New York'

이렇게 하면 city_name이 'New Yourk'인 것을 뉴욕으로 바꾸면서 동시에 population을 0으로 바꿉니다.

만약 WHERE 조건식이 없다면 모든 행이 변경되게 됩니다.

 

✏️ DELETE 문

DELETE는 행의 데이터를 삭제할 때 사용합니다.

기본 형식 : DELETE FROM 테이블 이름 WHERE 조건;

DELETE는 행 단위로 삭제가 됩니다.

 

DELETE FROM city_popul
WHERE city_name LIKE 'New%';

이렇게 되면 도시이름이 New로 시작하는 열을 삭제 합니다. 


⭐ 기본미션

p.138의 확인 문제 2번 풀고 인증하기

⭐ 선택미션

데이터 입력, 삭제하는 기본 형식 작성하기

데이터 입력 : INSERT 문

기본 형식 : INSERT INTO 테이블 [(열1 , 열2, ...)] VALUE (값1, 값2, ...)

 

데이터 삭제 : DELETE 문

기본 형식 : DELETE FROM 테이블 이름 WHERE 조건;

'혼자 공부하는 SQL' 카테고리의 다른 글

혼공학습단 혼공 SQL - Chap3  (0) 2023.07.24
혼공학습단 혼공 SQL - Chap.1  (0) 2023.07.09