[Database] SQL 기초
📃 SQL Schema & Catalog
SQL Schema
데이터베이스라고도 불리며, 같은 데이터베이스에 속해 있는 테이블과 다른 구조들을 그룹짓는 개념이다.
Schema name으로 구별된다.
스키마를 소유하는 사용자를 나타내는 authorization identifier와 스키마에 있는 각각 element의 descriptor를 포함한다.
Schema element는 table, constraints, views, domains 등을 포함한다.
CREATE SCHEMA COMPANY AUTHORIZATION 'Joshua'Catalog
스키마의 모임으로, INFORMATION_SCHEMA 라고 불리는 특별한 스키마를 항상 가지고 있다.
Integrity constraints는 같은 catalog의 스키마들 사이에서만 정의될 수 있다.
같은 catalog에 있는 스키마들은 type/domain과 같은 특정 element를 공유할 수 있다.
📚 CREATE TABLE
새로운 relation R을 정의한다.
R에 이름을 주고나서, R의 attributes와 types(domains), 초기 제약조건들(NOT NULL or UNIQUE) 을 정의한다.
key, 엔터티 무결성, 참조 무결성 제약조건들은 attribute 선언 이후에 정의할 수 있다.
(테이블 생성 후에도 ALTER TABLE 을 사용해서 추가할 수 있음)
CREATE TABLE EMPLOYEE
{
...
}ALTER TABLE EMPLOYEE ADD FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn);🧩 Attribute의 Data Type과 Domain
-
Numeric
정수 표현 :
INTEGER,INT,SMALLINT, 오라클에서는NUMBER
실수 표현 :FLOAT,REAL,DOUBLE PRECISION
Formated number :DECIMAL(i, j),DEC(i, j),NUMERIC(i, j), 여기서 i: 전체 자릿수, j: 소수점 아래 자릿수 -
Charcter-string
고정 길이 :
CHAR(n),CHARACTER(n), 여기서 n은 최대 가능 문자 수를 의미하고, n보다 짧으면 문자 뒤에 공백이 채워진다.
가변 길이 :VARCHAR(n),CHAR VARYING(n),CHARACTER VARYING(n), 이 외에CLOB(CHARACTER LARGE OBJECT)은 문서처럼 큰 텍스트 값들을 나타낼 수 있다. -
Bit-string
고정 길이 :
BIT(n), 여기서 n은 최대 가능 bit 수를 의미하고, B’10101’과 같은 형식을 사용해야 한다.
가변 길이 :BIT VARYING(n), 이 외에BLOB(BINARY LARGE OBJECT)은 실행가능한 코드나 java 객체처럼 큰 binary 값들을 나타낼 수 있다. -
Boolean
TRUEorFALSEorNULL -
Date
YYYY-MM-DD 형식, 오라클에서는
to_date()를 사용 -
Time
HH:MM:SS 형식
-
Timestamp
YYYY-MM-DD HH:MM:SS.xxxxxx 형식으로, Date와 Time을 합치고 second의 소수점 이하 최소 6자리가 추가된 형식
-
Interval
Date, Time, Timestamp의 절댓값을 증가, 감소시키는데 사용하는 상대값을 나타낼 수 있다.
-
Domain
domain의 데이터 타입을 쉽게 변경할 수 있고, 스키마의 가독성을 높일 수 있다.
CREATE DOMAIN SSN_TYPE AS CHAR(9); -
Type
객체를 저장하는 용도로, 사용자 정의 타입(UDTs)을 생성하는데 사용된다.
CREATE TYPE명령어로 생성
🚧 SQL 제약조건 설정
-
Attribute 제약조건 설정 방법
DEFAULT <value>구문으로 default 값 설정NOT NULLCHECK구문으로 domain 확인 가능
Dnumber INT NOT NULL CHECK (Dnumber > 0 and Dnumber < 10) -
Key 제약조건 설정 방법
PRIMARY KEY구문으로 Primary key 지정
Dnumber INT PRIMARY KEY PRIMARY KEY(State, Number)UNIQUE구문으로 후보키 지정
Dnumber VARCHAR(15) UNIQUE UNIQUE(State, Number)FOREIGN KEY구문으로 Foreign key 지정,SET NULL,CASCADE같은 참조 트리거 액션 절을 추가할 수 있다.
FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn)