패스트캠퍼스

[패스트캠퍼스] 데이터 분석 부트캠프 17기 - 8주차 (2) MySQL CRUD

geraedo 2025. 2. 4. 10:35

1. 테이블 만들고 변경하기 (CREATE-ALTER)

 

- 데이터 베이스 

CREATE DATABASE [데이터베이스 이름];

SHOW DATABASES; 현재 존재하는 모든 데이터베이스 목록을 보여주세요.

USE [데이터베이스 이름]; 이제부터 이 데이터베이스를 사용할게요.

 

- 테이블

CREATE TABLE [테이블 이름] (

                       [컬럼 이름] [데이터 타입],

                       [컬럼 이름] [데이터 타입],

                       ....

);

ALTER TABLE [테이블 이름] RENAME [변경할 이름]; 

ALTER TABLE [테이블 이름] ADD COLUMN [컬럼 이름] [데이터 타입];

ALTER TABLE [테이블 이름] MODIFY COLUMN [컬럼 이름] [새로운 데이터 타입];

ALTER TABLE [테이블 이름] CHANGE COLUMN [컬럼 이름] [새로운 컬럼 이름] [새로운 데이터 타입];

ALTER TABLE [테이블 이름] DROP COLUMN [컬럼 이름];

 

2. 테이블 지우기 (DROP-TRUNCATE)

 

DROP DATABASE [데이터베이스 이름];

DROP TABLE [테이블 이름]; 테이블 전체 지우기

TRUNCATE TABLE [테이블 이름]; 테이블 값만 지우기

 

DROP DATABASE IF EXISTS [데이터베이스 이름];

DROP TABLE IF EXISTS [테이블 이름]; 

 

3. 데이터 삽입, 삭제, 수정하기 (INSERT, DELETE, UPDATE)

 

INSERT INTO [테이블 이름] ([컬럼1], [컬럼2], [컬럼3])

                                            VALUES ([값1] [값2] [값3]),

                                            ( 다른행 여러개 추가 가능);

* 컬럼이름의 개수와 값의 개수가 같아야 함

 

DELETE FROM [테이블 이름] WHERE [조건 값];

UPDATE [테이블 이름] SET [컬럼이름] = [새값] WHERE [조건 값];

 

4. 실습 (CREATE, INSERT)

 

MISSION (1)

CREATE DATABASE pokemon;

USE pokemon;

CREATE TABLE mypokemon (

                           number INT,

                           name VARCHAR(20),

                           type VARCHAR(10));

INSERT INTO mypokemon ( number, name, type)

                                    VALUES (10, 'caterpie', 'bug'), 

                                               (25, 'pikachu', 'eletric'),

                                              (133, 'eevee', 'normal');

MISSION (2)

USE pokemon;

CREATE TABLE mynewpokemon (number INT, name VARCHAR(20), type VARCHAR(10));

INSERT INTO mynewpokemon (number, name, type)

VALUES (77, '포니타', '불꽃'), (132, '메타몽', '노말'), (151, '뮤', '에스퍼');

 

5. 실습 (ALTER, DROP)

 

MISSION (1)

USE pokemon;

ALTER TABLE mypokemon RENAME myoldpokemon;

ALTER TABLE myoldpokemon CHANGE COLUMN name eng_nm VARCHAR(20);

ALTER TABLE mynewpokemon CHANGE COLUMN name kor_nm VARCHAR(20);

 

MISSION (2) 

USE pokemon;

TRUNCATE TABLE muoldpokemon;

DROP TABLE mynewpokemon;

 


6. 데이터 그룹화하기 (GROUP BY)

SELECT [컬럼이름] FROM [테이블이름] GROUP BY [컬럼이름];

여러 개의 컬럼 사용 가능

 

7. 그룹에 조건 주기 (HAVING)

SELECT [컬럼이름] FROM [테이블이름] GROUP BY [컬럼이름] HAVING 조건식;

조건식에는 그룹 함수를 사용

 

8. 다양한 그룹 함수 알아보기 (COUNT, SUM, AVG, MINMAX)

COUNT(*) 은 전체 행을 COUNT 해주는데,

NULL 값이 있을 시 COUNT(1), COUNT(컬럼이름) 과 다른 결과가 나올 수 있다 

 

9. [TIP] 쿼리 실행 순서

1) SELECT (5)

2) FROM (1)

3) WHERE (2) 

4) GROUP BY (3) 

5) HAVING (4) 

6) ORDER BY (6)

 

10. 실습 (GROUP BY, HAVING)

MISSION (1) 

SELECT type, avg(height) FROM mypokemon GROUP BY type;

 

MISSION (2)

SELECT type, avg(weight) FROM mypokemon GROUP BY type;

 

MISSION (3)

SELECT type, avg(height), avg(weight) FROM mypokemon GROUP BY type;

 

MISSION (4)

SELECT type, avg(height) FROM mypokemon GROUP BY type HAVING avg(height) >= 0.5;

 

MISSION (5)

SELECT type, avg(weight) FROM mypokemon GROUP BY type HAVING avg(weight) >= 20;

 

MISSION (6) 

SELECT type, sum(number) FROM mypokemon GROUP BY type;

 

MISSION (7)

SELECT type, count(1) FROM mypokemon WHERE height >= 0.5 GROUP BY type;

 

MISSION (8)

SELECT type, min(height) FROM mypokemon GROUP BY type;

 

MISSION (9)

SELECT type, max(weight) FROM mypokemon GROUP BY type;

 

MISSION (10) 

SELECT type FROM mypokemon GROUP BY type HAVING min(height)>0.5 and max(weight)<30;