본문 바로가기

혼자 공부하는 SQL(혼공단 9기)

(2주차) Chapter 03

내용 정리

Chapter 03. SQL 기본 문법

03-1. 기본 중에 기본 SELECT ~ FROM ~WHERE

 

1) USE문 : SELECT문

USE 데이터베이스_이름;

 

2) SELECT문

SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자

- 원래 테이블의 전체 이름은 데이터베이스_이름.테이블_이름 형식으로 표현하지만 USE문으로 선택된 데이터베이스가 자동으로 선택되므로 데이터베이스_이름 생략 가능.

- 'SELECT 열_이름'에서 열_이름의 순서는 보고 싶은 순서대로 열을 나열

- 별칭(alias) : 열_이름 다음에 지정하고 싶은 별칭을 입력하면 됨. 별칭에 공백이 있을 경우 큰따옴표(")로 묶어줌.

- 조건식 : >, >=, <=, <, BETWEEN AND, AND, OR, IN(), LIKE

 

3) 서브쿼리(subquery)

 : SELECT 안에 또 다른 SELECT가 들어갈 수 있음.

SELECT mem_name, height FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');

 

03-2. 좀 더 깊게 알아보는 SELECT문

 

1) ORDER BY

 : 기본값ASC이며 오름차순을 나타내며, DESC는 내림차순을 나타냄.

- 정렬 기준을 여러 개 사용하고 싶은 경우 콤마(,)로 구분

SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;

 

2) LIMIT

 : 출력하는 개수를 제한

- SQL에서 index는 0부터 시작

-- 0번째부터 2번쨰까지 3건이 출력
SELECT *
FROM member
LIMIT 3;
-- LIMIT 시작, 개수
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 3, 2;
-- LIMIT 개수 OFFSET 시작
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 2 OFFSET 3;

 

3) DISTINCT

 : 조회된 결과에서 중복된 데이터 1개만을 남김.

 : 열 이름 앞에 DISTINCT를 쓰면 됨.

SELECT DISTINCT addr FROM member;

 

4) GROUP BY, HAVING

: 주로 집계함수(aggregate function)과 함께 사용됨.

- 집계함수(aggregate function)의 종류 : SUM(), AVG(), MIN(), MAX(), COUNT(), COUNT(DISTINCT)

- 별칭에는 큰 따옴표(") 사용이 권장, 작은 따옴표(')는 INSERT문 등에서 문자를 입력할 때 사용됨.

- COUNT(*)모든 행의 개수를 세고, COUNT(열_이름)열 이름의 값이 NULL인 것을 제외한 행의 개수를 셈.

-- 전체 행의 개수 count(NULL 포함)
SELECT COUNT(*) FROM member;

-- 특정 열에 해당하는 행의 개수 count(NULL 포함X)
SELECT COUNT(phone1) FROM member;

-- 특정 열에 해당하는 중복이 없는 행의 개수 count(NULL 포함X)
SELECT COUNT(DISTINCT phone1) FROM member;
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000
ORDER BY SUM(price*amount) DESC;

 

03-3. 데이터 변경을 위한 SQL문

 

1) INSERT

INSERT INTO 테이블_이름 (열1, 열2, ...) VALUES (값1, 값2, ...);

-- 여러 줄을 한줄로 작성
INSERT INTO 테이블_이름 VALUES (값1, 값2, ...), (값3, 값4, ...), (값5, 값6,...);

 

2) AUTO_INCREMENT

 : AUTO_INCREMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해줘야 함.

 : 자동 증가하는 부분은 NULL 값으로 채워 놓으면 됨.

 : 가장 마지막 숫자 확인 : SELECT LAST_INSERT_ID();

 : 자동 증가를 임의의 숫자(100 등)으로 하고 싶을 때 : ALTER TABLE hongong2 AUTO_INCREMENT=100;

 : 증가값을 임의의 숫자(3 등)으로 하고 싶을 때 : SET @@auto_increment_increment=3;

CREATE TABLE hongong1(
toy_id INT AUTO_INCREMENT PK,
toy_name CHAR(4),
age INT);

- 시스템 변수

 : MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수이며 앞에 @@가 붙는 것이 특징

 : 시스템 변수의 값을 확인하려면 SELECT @@시스템변수;

 : 시스템 변수의 종류를 확인하려면 SHOW GLOBAL VARIABLES;

 

3) 다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT

INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
SELECT문;

 

4) DESC

 : 테이블의 구조를 살펴볼 때 사용

DESC world.city;

 

5) UPDATE

UPDATE city_popul
SET city_name = '뉴욕', population = 0
WHERE city_name = 'New York';

 

6) DELETE

DELETE FROM city_popul
WHERE city_name LIKE 'New%';

-- 상위 5건만 삭제
DELETE FROM city_popul
WHERE city_name LIKE 'New%'
LIMIT 5;

 

7) DELETE, DROP, TRUNCATE

- DELETE : 삭제에 오래 걸림(테이블 유지)

- TRUNCATE : 조건 없이 전체 행을 삭제할 때(테이블 유지)

- DROP : (테이블 자체 삭제)

 

기본 미션

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

 

2. 다음 보기 중에서 각 문항의 빈칸에 들어갈 것을 고르세요.

[ LIKE, DESC, ORDER BY, DISTINCT, ASC, AND, OR, >=, LIMIT ]

① SELECT * FROM member ORDER BY height;

② SELECT * FROM member LIMIT 5,2;

③ SELECT DISTINCT phone1 FROM member;

 

선택 미션

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

 

1. 데이터 입력 - INSERT

 : INSERT문의 기본 문법

INSERT INTO 테이블 (열1, 열2, ...) VALUES (값1, 값2, ...);

-- 여러 줄을 한줄로 작성
INSERT INTO 테이블 VALUES (값1, 값2, ...), (값3, 값4, ...), (값5, 값6, ...);

 

2. 데이터 수정 - UPDATE

 : UPDATE문의 기본 문법

UPDATE 테이블_이름
SET 열1=값1, 열2=값2, ...
WHERE 조건;

 : WHERE가 없는 UPDATE문

 * UPDATE문은 WHERE절 없이 사용하면 모든 행이 변경됨.

UPDATE city_popul
SET population = population/10000;

 

3. 데이터 삭제 - DELETE

 : DELETE문의 기본 문법

DELETE FROM 테이블 WHERE 조건;

 : 상위 5건만 삭제하는 법

DELETE FROM city_popul
WHERE city_name LIKE 'New%'
LIMIT 5;

 : 대용량 데이터의 삭제

1) DELETE : 삭제에 오래 걸림(테이블 유지)

2) TRUNCATE : 조건 없이 전체 행을 삭제할 때(테이블 유지)

3)  DROP : (테이블 자체 삭제)

DELETE FROM big_table1;
DROP TABLE big_table2;
TRUNCATE TABLE big_table3;

 

'혼자 공부하는 SQL(혼공단 9기)' 카테고리의 다른 글

(6주차) Chapter 07 ~ 08  (0) 2023.02.09
(5주차) Chapter 06  (0) 2023.02.06
(4주차) Chapter 05  (0) 2023.01.31
(3주차) Chapter 04  (0) 2023.01.13
(1주차) Chapter 01 ~ 02  (0) 2023.01.03