앞서
CREATE,INSERT,SELECT같은 몇 가지 영어 단어로 데이터베이스를 다뤄봤다. 이 명령어들의 집합이 바로 SQL(Structured Query Language), '구조화된 질의 언어'다.
관계형 데이터베이스의 표준 언어 다. 대부분의 관계형 데이터베이스는 이 표준 SQL을 지원한다. 각 데이터베이스마다 자신들만의 추가기능이나 약간의 문법 차이는 있지만, CREATE , SELECT , INSERT 와 같은 핵심적인 문법은 거의 동일하다.데이터베이스 방언(Dialect)
SQL 표준을 넘어서 각 DBMS는 자신들만의 추가 기능이나 추가 문법을 제공하는데, 이것을 방언(사투리,
Dialect)라고 한다.
선언적 언어 라는 점이다.CREATE : 데이터베이스, 테이블 등의 구조를 생성한다.ALTER : 이미 만들어진 테이블의 구조를 변경한다. (이후에 학습한다.)DROP : 데이터베이스, 테이블을 완전히 삭제한다.INSERT : 테이블에 새로운 데이터를 추가한다.SELECT : 테이블에서 데이터를 조회(검색)한다.UPDATE : 기존 데이터를 수정한다.DELETE : 기존 데이터를 삭제한다.GRANT )하거나 회수(REVOKE )하는 등, 데이터의 보안과 관련된 권GRANT : 특정 사용자에게 특정 작업에 대한 수행 권한을 부여한다.REVOKE : 특정 사용자에게서 이미 부여한 권한을 회수한다.COMMIT : 트랜잭션의 모든 작업을 최종적으로 데이터베이스에 확정, 저장한다.ROLLBACK : 트랜잭션의 모든 작업을 취소하고 이전 상태로 되돌린다.SQL은 데이터를 조회하는 언어를 넘어, 데이터의 구조를 정의하고(DDL), 실제 데이터를 조작하며 (DML), 접근 권한을 제어하고(DCL), 작업의 안정성을 보장하는(TCL) 매우 체계적이고 강력한 언어 체계다.
제약 조건은 테이블에 데이터를 저장할 때, 특정 규칙을 지키도록 강제하는 장치다. 이 규칙 덕분에 우리는 잘못되거나 일관성 없는 데이터가 입력되는 것을 원천적으로 차단할 수 있다. 데이터의
무결성이 제약 조건의 핵심 목표다.
NOT NULL : 필수 입력 항목 지정
이 제약 조건이 걸린 열에는 NULL 값(값이 없음)을 허용하지 않는다. 즉, 데이터를 INSERT 할 때 이 열의 값은 반드시 입력되어야 한다. 고객의 이름, 아이디, 상품의 가격 등은 비어있으면 안 되는 핵심 정보이므로 NOT NULL 을 설정해야 한다.
UNIQUE : 중복 불가 항목 지정
이 제약조건이 걸린 열의 값은 테이블 내에서 항상 고유해야 한다.(중복허용X) 고객ID, 이메일주소 등은 다른사람과 중복되면 안되기 때문에 UNIQUE제약조건을 사용한다.
PRIMARY KEY 와의 차이점 : PRIMARY KEY 는 테이블 당 하나만 존재할 수 있지만, UNIQUE는 여러 열에 설정가능하다. PRIMARY KEY는 UNIQUE와 NOT NULL 속성을 모두 포함하는 개념이다.
PRIMARY KEY : 테이블의 대표 식별자
테이블의 모든 행을 유일하게 식별하는 열. NOT NULL 과 UNIQUE 의 특징을 모두 가진다. 모든 테이블에는 반드시 PRIMARY KEY 가 있어야 한다.
AUTO_INCREMENT : MySQL에서 PRIMARY KEY 에 자주 사용하는 옵션이다. 정수 타입의 PRIMARY KEY
열에 이 옵션을 설정하면, 새로운 데이터가 추가될 때마다 1씩 자동으로 증가하는 번호를 할당해 준다. 직접 ID를 고민해서 넣을 필요가 없어 매우 편리하다.
FOREIGN KEY (FK) : 테이블 간의 관계 설정
한 테이블을 다른 테이블과 연결하는 관계의 고리 참조하는 열의 값은 반드시 참조되는 테이블의 PRIMARY KEY 값 중 하나여야 한다는 참조 무결성을 강제한다.
DEFAULT : 기본값 설정
데이터를 INSERT 할 때 특정 열의 값을 명시하지 않으면, 자동으로 설정된 기본 값이 입력된다.
CHECK : 컬럼에 입력되는 값이 특정 조건을 만족하는지 검사
조건에 맞지 않는 데이터의 입력을 막는다.
10보다 작은 숫자가 입력되지 않도록 막는다.
18세 미만의 회원이 저장되지 않도록 막는다.