[손에 잡히는 10분 SQL - 벤 포터 지음, 박남혜 옮김] 책의 학습 후 정리자료입니다.
CREATE TABLE
이라는 SQL 문을 사용한다.CREATE TABLE Products
(
prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_name CHAR(254) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL
);
새로운 테이블을 생성할 때, 존재하는 테이블 이름을 사용하면 에러가 발생한다.
실수로 덮었쓰는 것을 막기 위해, SQL은 테이블을 직접 삭제하고 다시 만들도록 유도한다.
따라서 이미 존재하는 테이블 이름을 사용하여 테이블을 덮어쓸 수는 없다.
대부분의 DBMS는 NOT NULL 이 없으면 NULL로 인식하지만, 모든 DBMS가 그런 것은 아니다.
일부 DBMS는 NULL 키워드를 쓰지 않으면 에러가 발생한다.
기본 키는 테이블에서 각 행을 구별해주는 고유한 값을 가지는 열이다.
NULL 값을 허용하지 않는 열만 기본 키로 사용할 수 있다.
아무런 값을 가지지 않을 수 있는 열(NULL 값을 허용하는 열)은 고유한 구별자로 사용할 수 없다.
NULL 값과 빈 문자열을 혼동해서는 안된다.
NULL은 아직 값이 없는 것이지 빈 문자열이 아니다.
빈 문자열('')은 NOT NULL 열에 허용되는 값이다.
즉, NULL은 현재 시점에 해당 열의 값을 모른다는 것을 의미하고 빈 문자열은 해당 열의 값이 없다는 것을 의미한다.
CREATE TABLE OrderItems
(
order_num INTEGER NOT NULL,
order_item INTEGER NOT NULL,
prod_id CHAR(10) NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1,
item_price DECIMAL(8,2) NOT NULL
);
DBMS | 함수/변수 |
---|---|
Db2 | CURRENT_DATE |
MySQL | CURRENT_DATE() or NOW() |
Oracle | SYSDATE |
PostgreSQL | CURRENT_DATE |
SQL Server | GETDATE() |
SQLite | date('now') |
많은 데이터베이스 개발자들은 NULL 열 대신 기본값을 선호하는데, 특히 계산이나 데이터 그룹핑에 사용한다.
ALTER TABLE
문을 사용한다.ALTER TABLE Vendors
ADD vend_phone CHAR(20);
ALTER TABLE Vendors
DROP COLUMN vend_phone;
ALTER TABLE을 사용할 때는 매우 신중해야 한다.
작업 전에 완벽히 백업(스키마와 데이터 모두)해야 한다.
데이터베이스 테이블 변경은 되돌릴 수 없는 작업이다.
필요 없는 열이 추가되었다면 그 열을 제거할 수는 있다.
하지만 실수로 필요한 열을 삭제한다면, 그 열에 있는 데이터는 모두 잃게 될 것이다.
DROP TABLE
구문을 사용하면 테이블을 삭제할 수 있다.DROP TABLE CustCopy;
많은 DBMS가 다른 테이블과 관련된 테이블은 삭제하지 못하게 규칙을 정할 수 있도록 한다.
규칙을 설정하면 그 관계를 삭제하기 전까지 DBMS가 관련된 테이블을 삭제하지 못하게 막는다.
필요한 테이블을 실수로 삭제하지 않도록 가능하면 규칙을 사용하는 것이 좋다.
RENAME
문장을 사용할 수 있다.sp_rename
이라는 저장 프로시저를 사용할 수 있다.Vendors
테이블에 웹사이트 열(vend_web
)을 추가하라. 필드는 URL이 충분히 들어갈 수 있을 정도로 커야 한다.ALTER TABLE Vendors
ADD vend_web CHAR(254);
Vendors
테이블을 업데이트하여 웹사이트를 추가하라.UPDATE Vendors
SET vend_web = 'www.google.com'
WHERE vend_id = 'DLL01'