MySQL
요약 노트 (2022년 1월 ~ 2022년 3월까지 공부했던 내용 정리)
혼자 공부하는 SQL책과 한빛미디어에서 제공하는 유튜브 강의로 공부함
CREATE DATABASE
DROP DATABASE IF EXISTS 데이터베이스_이름; -- 기존 해당 데이터베이스가 있다면 삭제
CREATE DATABASE 데이터베이스_이름; - 데이터베이스 생성
2) 테이블 생성하기: CREATE TABLE
NULL
(or NOT NULL
) 지정PRIMARY KEY
설정(기본 키 설정)AUTO_INCREMENT
설정(자동 증가)FOREIGN KEY
예약어로 지정하기USE 데이터베이스_이름;
DROP TABLE IF EXISTS 테이블_이름; -- 기존 해당 테이블이 있다면 삭제
CREATE TABLE 테이블_이름
( 열_이름1 데이터형식 AUTO_INCREMENT(자동 증가 설정) NULL(or NOT NULL) PRIMARY KEY(기본 키 설정),
열_이름2 데이터형식 NULL(or NOT NULL) ,
열_이름3 데이터형식 NULL(or NOT NULL) ,
...
FOREIGN KEY(열_이름) REFERENCES 테이블_이름(열_이름) -- 외래 키(FK)
);
3) 데이터 입력하기: INSERT INTO
INSERT INTO 테이블_이름 VALUES(데이터1, 데이터2, ..., 데이터n);
INSERT INTO 테이블_이름 VALUES(데이터1, 데이터2, ..., 데이터n);
NULL
값이 입력될 수 없음PRIMARY KEY
예약어 지정ALTER TABLE
에서 기본 키 설정DROP TABLE IF EXISTS 테이블_이름;
CREATE TABLE 테이블_이름
( 열_이름1 데이터형식 NULL(or NOT NULL),
열_이름2 데이터형식 NULL(or NOT NULL),
...
);
ALTER TABLE 테이블_이름
ADD CONSTRAINT
PRIMARY KEY (열_이름);
CREATE TABLE
에서 외래 키 설정: FOREIGN KEY(열이름) REFERENCES 기준테이블(열이름)
DROP TABLE IF EXISTS 테이블_이름1, 테이블_이름2;
CREATE TABLE 테이블_이름1 -- 기준 테이블
( 열_이름 데이터형식 NULL(or NOT NULL) PRIMARY KEY,
열_이름2 데이터형식 NULL(or NOT NULL),
...
);
CREATE TABLE 테이블_이름2 -- 참조 테이블
( 열_이름1 데이터형식 NULL(or NOT NULL) PRIMARY KEY,
열_이름 데이터형식 NULL(or NOT NULL),
...
FOREIGN KEY(열_이름) REFERENCES 기준_테이블(열_이름);
);
ALTER TABLE
에서 외래 키 설정DROP TABLE IF EXISTS 테이블_이름;
CREATE TABLE 테이블_이름 -- 참조 테이블
( 열_이름1 데이터형식 NULL(or NOT NULL) PRIMARY KEY,
열_이름 데이터형식 NULL(or NOT NULL),
...
);
ALTER TABLE 참조테이블
ADD CONSTRAINT
FOREIGN KEY(열_이름)
REFERENCES 기준_테이블(열_이름);
ALTER TABLE
에서 ON UPDATE CASCADE
문, ON DELETE CASCADE
문 설정: 기준 테이블의 열 이름이 변경될 때 참조 테이블의 열 이름이 자동으로 변경되도록 하는 기능DROP TABLE IF EXISTS 테이블_이름;
CREATE TABLE 테이블_이름 -- 참조 테이블
( 열_이름1 데이터형식 NULL(or NOT NULL) PRIMARY KEY,
열_이름 데이터형식 NULL(or NOT NULL),
...
);
ALTER TABLE 참조_테이블
ADD CONSTRAINT
FOREIGN KEY(열_이름) REFERENCES 기준_테이블(열_이름)
ON UPDATE CASCADE
ON DELETE CASCADE;
NULL
값을 허용한다NULL
, UNIQUE
로 지정CHECK(height>=100)
CHECK(조건)
추가ALTER TABLE
문으로 CHECK(조건)
제약조건 추가ALTER TABLE 테이블_이름
ADD CONSTRAINT
CHECK (조건);
DEFAULT 160
DEFAULT '값'
추가ALTER TABLE
문으로 DEFAULT '값'
제약조건 추가ALTER TABLE 테이블_이름
ALTER COLUMN 열_이름 SET DEFAULT '값';
default
라고 씀INSERT INTO 테이블_이름 VALUES(데이터, 데이터, 데이터, default);
NULL
을 사용, 허용하지 않으려면 NOT NULL
을 사용함NULL
: 빈 값 허용NOT NULL
: 빈 값을 허용하지 않는다NULL
값이 있을 수 없음(NOT NULL
)NULL
값=아무 것도 없다라는 의미(공백('')이나 0과 다름)뷰(View)
CREATE VIEW
CREATE VIEW 뷰_이름
AS
SELECT 문;
SELECT
SELECT 열_이름 FROM 뷰_이름
[WHERE 조건];
뷰의 실제 작동
USE 데이터베이스_이름;
CREATE VIEW 뷰_이름
AS
SELECT 문;
SELECT DISTINCT `뷰_열이름1`, `뷰_열이름2`, ... FROM 뷰_이름; -- 백틱(`)을 사용
ALTER VIEW
ALTER VIEW 뷰_이름
AS
SELECT 문;
SELECT DISTINCT `뷰_열이름1`, `뷰_열이름2`, ... FROM 뷰_이름; -- 백틱(`)을 사용
DROP VIEW
DROP VIEW 뷰_이름;
DESCRIBE
, SHOW CREATE VIEW
DESCRIBE 뷰_이름;
SHOW CREATE VIEW 뷰_이름;
UPDATE
, DELETE
UPDATE 뷰_이름 SET ... WHERE ...; -- 수정
DELETE FROM 뷰_이름 WHERE...; -- 삭제
INSERT
WITH CHECK OPTION
예약어: 뷰에 설정된 값의 범위가 벗어나는 값은 입력되지 않도록 함INSERT INTO 뷰_이름 VALUES(데이터1,데이터2,...,); -- 수정
ALTER VIEW 뷰_이름
AS
SELECT 문
WITH CHECK OPTION;
INSERT INTO 뷰_이름 VALUES(데이터1,데이터2,...,); -- 수정
DROP TABLE
CHECK TABLE
문으로 뷰의 상태를 확인할 수 있음DROP TABLE IF EXISTS 테이블_이름;
SELECT * FROM 뷰_이름; -- 에러 발생
CHECK TABLE 뷰_이름; -- 뷰의 상태 확인
우재남. (2021). 혼자 공부하는 SQL. 한빛미디어. p216-p270.