[Database] MySQL : PART1
✏️SQL 종류
SQL 종류
- DDL ( Data Definition Language) : 데이터 정의어, 테이블을 생성/변경/제거하는 기능 제공
- DML ( Data Manipulation Language) : 데이터 조작어, 테이블에 저장된 데이터를 수정/삭제/검색하는 기능 제공
- DCL ( Data Control Language) : 데이터 제어어, 보안을 위해 데이터 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능 제공
SQL 관련 규칙
SQL 질의문은 대소문자를 구분하지 않는다.
[]의 내용은 생략이 가능하다.
SQL 질의문은 세미클론(;)으로 문장의 끝을 표시한다.
문자열이나 날짜 데이터는 작은 따옴표로 묶으며, 이는 대소문자를 구분한다.
✏️ DDL
테이블 생성 > CREATE문
테이블 수정 > ALTER문
테이블 삭제 > DROP문
CREATE문
CREATE TABLE 테이블_이름(
⓵ 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
⓶ [PRIMARY KEY (속성_리스트)]
⓷ [UNIQUE (속성_리스트)]
⓸ [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON_DELETE 옵션] [ON_UPDATE 옵션]
)
테이블 속성 정의
- 데이터 타입 : ex ) INT / VARCHAR(n) / DATETIME
- NOT NULL : 속성이 NULL값을 허용하지 않음을 의미하는 키워드
- DEFAULT 기본값 : 속성의 기본 값을 지정하는 키워드
키 정의
- FOREIGN KEY(외래키) REFERENCES 참조테이블(참조키) : 외래키를 지정하는 키워드
- 참조할때는 생성된 테이블을 참조해야 하므로, 순서를 조심해야 한다.
- 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 Tuple 변경 시 처리 방법을 지정하는 옵션
- ON UPDATE NO ACTION : Tuple을 변경하지 못하게 한다.
- ON UPDATE CASCADE : 관련 Tuple에서 FK값을 함께 변경한다.
- ON UPDATE SET NULL : 관련 Tuple에서 FK값을 NULL로 변경한다.
- ON UPDATE SET DEFAULT : 관련 Tuple의 FK값을 미리 지정한 PK로 변경한다.
ex ) FOREIGN KEY (소속부서) REFERENCES 부서(부서번호) ON DELETE CASCADE ON UPDATE CASCADE
: 부서 테이블에서 부서 번호가 삭제되거나 값이 바뀌면 지금 만들어지는 테이블에서 이에 대응되는 소속 부서 속성의 값을 자동으로 삭제하거나 같은 값으로 수정한다.
ALTER문
새로운 속성 추가
ALTER TABLE 테이블_이름 ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT값];
기존 속성 삭제
ALTER TABLE 테이블_이름 DROP 속성_이름 CASCADE|RESTRICT;
- CASCADE : 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성을 함께 삭제한다.
- RESTRICT : 삭제할 속성과 관련된 제약조건이나 참조하는 다른 속성이 있다면 삭제를 거부한다.
DROP문
테이블 삭제
DROP TABLE 테이블_이름 CASCADE|RESTRICT;
✏️ DML
데이터 검색 > SELECT
데이터 삽입 > INSERT
데이터 수정 > UPDATE
데이터 삭제 > DELETE
SELECT문
SELECT [ALL |DISTINCT] 속성_리스트 FROM 테이블_리스트;
- 검색 결과는 테이블 형태로 반환된다.
SELECT문과 관련되어서는 내용이 방대하니 게시물을 별도로 작성하였다.
INSERT문
INSERT INTO 테이블_이름[(속성_리스트)] VALUES[(속성값_리스트)];
- 속성명과 속성값은 순서대로 일대일 대응되어야 한다.
- 여러값을 한번에 입력이 가능하다.
UPDATE문
UPDATE 테이블_이름 SET 속성_이름1=값1, 속성_이름2=값2 [WHERE 조건];
DELETE문
DELETE FROM 테이블_이름[WHERE 조건];