sql이란 구조화된 질의어로 종합 데이터베이스 언어 역할을 한다.
관계대수와 확장된 튜플 관계 해석에 기초하고 있음
고급언어이고, 비절차적 데이터 언어이다 따라서 사용자 친화적
상용 RDBMS간의 전환이 용이하다
터미널을 통해서 대화식 질의어로 사용
응용프로그램에 삽입 가능 (범용 프로그램어)
각각의 레코드 단위보다는 집합으로 처리
선언적 언어
CREATE DOMAIN DEPT CHAR(4)
DEFALUT '???'
CONSTRAINT VALID-DEPT
CHECK(VALUE-IN('COMP', 'ME', 'EE', 'ARCH', '???'));
ALTER DOMAIN 도메인_이름<변경 내용>
DROP DOMAIN 도메인_이름 RESTRICT|CASCADE;
도메인 이름, 데이터 타입, [기정 값 정의][도메인 제약조건 정의리스트]
DEFAULT ??? -> 값을 지정하지 않으면 NULL이 들어감 이 때 DEFALUT라고 되어있는 ???로 값을 채우는 것.
CHECK 는 제약을 주겠다는 뜻
변경하고 싶으면 원본을 카피하고 내용을 바꾼다음 기존 스키마를 지움
RESTRICT | CASCADE
참조하고 있지 않을 때 삭제 | 참조하고 있는 뷰, 제약조건도 삭제
CREATE TABLE 로 만들어지는 테이블
DBMS의 파일로 생산되고 저장 (테이블이나 인덱스)
CREATE VIEW 문으로 만들어지는 가상 테이블 (외부 스키마)
어떤 기본 테이블로도 유도되어 만들어지는 테이블
독자적으로 존재 불가 -> 베이스 테이블이 있어야 변환 후 보여주기 가능하기 때문
질의문 처리 과정의 중간 결과로 만들어지는 테이블
ddl문으로 만들어지는것이 아님
CREATE TABLE 테이블이름
({열이름 데이타타입 [NOT NULL] [DEFAULT값],}
+
[PRIMARY KEY (열이름_리스트),]
{[UNIQUE (열이름_리스트),]}
*
{[FOREIGN KEY(열이름_리스트)
REFERENCES 기본테이블[(열이름_리스트)]
[ON DELETE 옵션]
[ON UPDATE 옵션] ,]}
*
[CONSTRAINT 이름] [CHECK(조건식)]);
첫번째 FOREIGN 키 : SNO 가 STUDENT에 있는지 검사
두번째는 COURSE 뒤에 안적었는데 이는 기본키를 생략한 것
On DELETE CASCASE | RESTRICT
CASCADE: 하나 삭제하면 뒤에 연결된것도 의미가 없으니 둘다 지워라
RESTRICT: 하나 삭제하려했는데 다른게 연결되어있으면 삭제거부해라
ON UPDATE CASADE 100을 300으로 바꾸면 가르키는 값이 변함
그러면 연결된것들도 덩달아 300으로 바꿔라
RESTRICT는 먼저 바꾸고 지우고 하는 과정을 거쳐야 함
CHECK는 조건을 넣어서 그 값이 올바른 값인지 확인하는 역할
DROP TABLE / SCHEMA(DATABASE)로 테이블이나 스키마를 지울 수 있고
RESTRICT / CASCADE를 넣어줄 수 있음
ALTER TABLE 기본 테이블 이름
ADD
DROP <- 대부분의 db에서 이 기능 지원 안함 (기존 테이블이나 응용프로그램에 영향을 줄 수 있음)
ALTER <- 얘도 안해줌
CREATE TABLE ENROL
(Sno INTEGER NOT NULL,
Cno CHAR(6) NOT NULL,
Grade INTEGER,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES STUDENT(Sno)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(Cno) REFERENCES COURSE
ON DELETE CASCADE
ON UPDATE CASCADE,
CHECK(Grade >= 0 AND Grade <= 100));
DROP TABLE 기본_테이블_이름 {RESTRICT | CASCADE};
DROP TABLE COURSE CASCADE
DROP SCHEMA 스키마_이름 {RESTRICT | CASCADE};
DROP SCHEMA UNIVERCITY CASCADE;
일반형식
ALTER TABLE 기본_테이블_이름
([ADD 열_이름 데이타_타입] [DEFAULT 기정값] |
[DROP 열_이름] [CASCADE] |
[ALTER 열_이름 (DROP DEFAULT |
SET DEFAULT 기정 값)]);
예
ALTER TABLE ENROL ADD Final CHAR DEFAULT 'F';
ALTER TABLE ENROL DROP Grade CASCADE;
DROP 열_이름
RESTRICT : 참조하는 뷰나 제약조건이 있으면 실행 실패
CASCADE : 참조 뷰나 제약조건도 모두 삭제