저번주엔 너무 급히 쓰느라 대충 써서... 이번주부터 열심히 해보겠습니다!
일단 약간의 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 |