[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 41편을 공개해드리겠다. 41편은 CHECK 제약 조건을 소개한다.
2021년 1월 27일자 [즐겁게 배우는 SQL #41] 제약 조건 - CHECK 제약 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 CHECK 제약 기본 형식 소개
- 03:06 컬럼 CHECK 예제
- 06:02 테이블 CHECK 예제
- 08:04 기존 테이블에 CHECK 제약 걸기
원본 학습자료는 SQLite CHECK constraints를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: CHECK 제약 기본 형식
CREATE TABLE table_name( ..., column_name data_type CHECK(expression), ... ); CREATE TABLE table_name( ..., CHECK(expression) ); BEGIN; -- create a new table CREATE TABLE new_table ( [...], CHECK ([...]) ); -- copy data from old table to the new one INSERT INTO new_table SELECT * FROM old_table; -- drop the old table DROP TABLE old_table; -- rename new table to the old one ALTER TABLE new_table RENAME TO old_table; -- commit changes COMMIT;
- 단계 2: 컬럼 CHECK 예제
- SQL> CREATE TABLE contacts ( contact_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT, phone TEXT OT NULL CHECK (length(phone) >= 10) );
- SQL> INSERT INTO contacts(first_name, last_name, phone) VALUES('John','Doe','408123456');
- SQL> INSERT INTO contacts(first_name, last_name, phone) VALUES('John','Doe','(408)-123-456');
- 단계 3: 테이블 CHECK 예제
- SQL> CREATE TABLE products ( product_id INTEGER PRIMARY KEY, product_name TEXT NOT NULL, list_price DECIMAL (10, 2) NOT NULL, discount DECIMAL (10, 2) NOT NULL DEFAULT 0, CHECK (list_price >= discount AND discount >= 0 AND list_price >= 0) );
- SQL> INSERT INTO products(product_name, list_price, discount) VALUES('New Product #1',2000,1000);
- SQL> INSERT INTO products(product_name, list_price, discount) VALUES('New Product #2',900,1000);
- SQL> INSERT INTO products(product_name, list_price, discount) VALUES('New XFactor',1000,-10);
- 단계 4: 기존 테이블에 CHECK 제약 걸기
- SQL> CREATE TABLE contacts ( contact_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT, phone TEXT NOT NULL );
- SQL> INSERT INTO contacts(first_name, last_name, phone) VALUES('John','Doe','(408)-123-456');
- SQL> BEGIN;
- SQL> CREATE TABLE new_contacts ( contact_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, email TEXT, phone TEXT NOT NULL CHECK (length(phone) >= 10) );
- SQL> INSERT INTO new_contacts SELECT * FROM contacts;
- SQL> DROP TABLE contacts;
- SQL> ALTER TABLE new_contacts RENAME TO contacts;
- SQL> COMMIT;
댓글 없음:
댓글 쓰기