SQL 정의어(DDL)
CREATE : 테이블, 스키마, 도메인, 인덱스 ,뷰 등을 정의(생성)하기 위해 사용하는 명령문.
- 학번, 성명, 학과, 학년, 학점으로 구성된 학생테이블을 만들어라.
- 학번과 학년은 숫자형 자료이며, 나머지는 문자형이다.
- 학번을 기본키로 지정한다.
- 성명 속성은 공백이 있을 수 없다.
- 학과 항목을 이용하여[수강]테이블의 학과를 참조하다록 외래키를 지정하며, 참조 테이블에서 삭제가 발생하면 NULL 값으로 하고, 수정이 발생하면 연쇄적으로 수정한다.
- 학년의 속성값은 4이하의 값을 갖도록 ‘hak’ 이름으로 제약한다.
CREATE TABLE 학생 (
학번 INT,
성명 CHAR(10) NOT NULL,
학과 CHAR(20)
학년 INT,
학점 CHAR(1),
PRIMARY KEY(학번)
FOREIGN KEY(학과) REFERENCES 수강(학과)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT hak CHECK(학년<=4)
);
CREATE VIEW 3학년연락처(학번, 이름, 전화번호)
AS SELECT 학번, 성명, 이름,
FROM 학생
WHERE 학년=3; // [학생]테이블의 학번, 성명, 이름 속성을 가져와 같은 속성을 가진 [3학년연락처] 뷰를 생성.
ALTER : 기존에 만들어진 테이블에 새로운 속성을 추가(ADD)하거나 변경(ALTER), 삭제(DROP)할 때 사용하는 명령문.
ALTER TABLE 학생 ADD 주소 VARCHAR(30); // [학생] 테이블에 '주소' 속성을 추가(단. 주소는 가변길이 문자형 30자리까지 입력) ALTER TABLE 학생 DROP 주소 CASCADE; // [학생] 테이블에 '주소' 속성을 제거
DROP : 기존에 사용되던 테이블, 스키마, 도메인, 인덱스, 뷰, 제약조건 등을 제거할 때 사용. 전체 삭제.
DROP TABLE 학적 RESTRICT; // [학적] 테이블을 삭제(단 참조 중이면 삭제 안함) DROP TABLE 학적 CASCADE; // [학적] 테이블을 삭제하고 이 테이블을 참조하는 다른 테이블도 연쇄적으로 삭제
SQL 조작어(DML)
- SELECT : 테이블에서 원하는 자료를 검색하고자 하는 경우 사용. 산술식에 의한 계산도 수행.
SELECT 학번, 성명 FROM 학생 WHERE 수강과목='데이터베이스'; SELECT DISTINCT 수강과목 FORM 학생 WHERE 학년>=2; // [학생] 테이블에서 학년이 2인 학생의 수강과목을 중복없이 검색. SELECT SUM(점수) AS 1학년합계 FORM 학생 WHERE 학년=1; // [학생] 테이블에서 학년이 1인 학생의 점수 합계 검색하고 '1학년 합계' 속성을 부여. SELECT 성명 FROM 학생 WHERE 점수>=85 ORDER BY 학번 DESC; // [학생] 테이블에서 점수가 85점 이상인 학생의 성명을 내림차순으로 검색. SELECT 학년 FROM 학생 WHERE 점수>=85 GROUP BY 학년 HAVING COUNT(*)>=2; //[학생]테이블에서 점수가 85점 이상인 학생이 2명 이상인 학년을 검색. SELECT 성명 FROM 학생 WHERE 연락처 LIKE '%7588'; // [학생] 테이블에서 연락처 번호가 '7588'로 끝나는 학생의 성명 검색.
- INSERT INTO : 기존 테이블에 새로운 자료(튜플)를 삽입하는 경우에 사용하는 명령.
INSERT INTO 학생( 학번, 성명, 학년, 수강과목, 연락처) VALUES (1511, '김정미', 4, '데이터베이스', '123-1234');
- UPDATE : 테이블의 자료 중에서 값을 변경하고자 하는 경우.
UPDATE 학생 SET 점수=92 WHERE 성명='이영진';
- DELETE : 테이블의 튜플(자료)을 살제할 경우 사용.
DLELTE FROM 학생 WHERE 학년=2;
SQL 제어어(DCL)
- COMMIT / ROLLBACK : 연산 내용 승인 / 취소
- GRANT / REVOKE : 데이터베이스에 대한 권한 부여 / 취소
GRANT UPDATE ON 학생 TO AAA WITH GRANT OPTION; // AAA 사용자에게 [학생] 테이블에 대해 업데이트 할 수 있는 권한을 부여(권한 부여 할 수 있는 권한도 부여) REVOKE UPDATE ON 학생 FROM AAA CASCADE; // AAA 사용자에게 [학생] 테이블을 업데이트 할 수 있는 권한을 취소.(AAA가 부여한 다른 사용자 권한도 같이 취소)