SQL 데이타 정의문
스키마
: 하나의 사용자에 속하는 테이블과 기타 구성요소 등의 그룹
- 스키마 이름, 스키마 소유자, 스키마 허가권자, (테이블, 뷰, 도메인 기타 내용)포함
SQL 데이타 타입
- 숫자 타입
· INT SMALLINT : 정수
· FLOAT(n), REAL, DOUBLE PRECISION : 실수
· DECIMAL(i, j), REAL, DOUBLE PRICISION : 실수
- 문자 스트링
· CHAR(n), CARCHAR(n) : 문자
- 비트 스트링
· BIT(n), BIT VARYING(n)
- 날짜, 시간
· DATE : 날짜 (YY-MM-DD)
· TIME : 시간 (hh:mm:ss)
· TIMESTAMP : DATE & TIME
· INTERVAL : DATE, TIME & TIMESTAMP
도메인 생성
: CREATE SCHEMA 명령문 (현재는 CREATE DATABASE 명령문을 씀)
- 형식 // 형식에서의 [] 부분은 생략 가능
CREATE DOMAIN 도메인_이름 데이타타입
[ 묵시값_정의 ]
[ 도메인_제약조건_정의리스트 ];
도메인 삭제
: DROP DOMAIN 명령문
- 형식
DROP DOMAIN 도메인_이름 RESTRICT | CASCADE:
- RESTRICT : 삭제할 도메인을 참조하는 곳이 없을 때만 삭제 실행
- CASCADE : 삭제할 도메인을 참조하는 모든 곳에서 삭제 실행
테이블 생성
- 형식
CREATE TALE 기본테이블_이름
({열이름 도메인명|타입 [NOT NULL] [DEFAULT 값], }+
[PRIMARY KEY (열이름_리스트),]
{[UNIQUE (열이름_리스트),]}*
{[FOREIGN KEY (열이름_리스트)
REFERENCES 기본테이블[(열이름_리스트)]
[ON DELETE 옵션]
[ON UPDATE 옵션], ]}*
[CONSTRAINT 조건이름] [CHECK (조건식)]);
테이블 삭제
- 형식
DROP TABLE 기본테이블_이름 {RESTRICT | CASCADE};
테이블 변경
- 변경 내용
: 열의 첨가/삭제, 묵시값 명세 첨가/삭제, 기본 테이블에 새로운 무결성 조건 명세 첨가/삭제 등
- 형식
ALTER TABLE 기본테이블_이름
([ADD 열_이름 데이타_타입] [DEFAULT 묵시값] | [DROP 열_이름]
[CASCADE] | [ALTER 열_이름 (DROP DEFAULT | SET DEFAULT 묵시값)]);
스키마 제거
- 형식
DROP SCHEMA 스키마_이름 {RESTRICT | CASCADE};
SQL 데이타 조작문
데이타 검색
- 기본 구조
SELECT 열_리스트
FROM 테이블_리스트
WHERE 조건;
- 기본 형식
SELECT [ALL | DISTINCT] 열_리스트
FROM 테이블_리스트
[WHERE 조건]
[GROUP BY 열_리스트 [HAVING 조건]]
[ORDER BY 열_리스트 [ASC | DESC]];
- 검색 결과에 레코드의 중복 제거 (project 와 같음)
SELECT DISTINCT DEPT FROP STUDENT;
- 테이블의 열 전부를 검색
SELECT * FROM STUDENT;
- 조건 검색
SELECT SNO, SNAME FROM STUDENT WHERE DEPT='컴퓨터' AND (YEAR='4');
- 복수 테이블로부터의 검색
SELECT STUDENT.SNAME, STUDENT.DEPT, ENROL.GRADE FROM STUDENT, ENROL WHERE STUDENT.SNP = ENROL.SNP AND ENROL.CNO = 'C413';
- 집단 함수(COUNT, SUM, AVG, MAX, MIN)를 이용한 검색
SELECT COUNT(*) AS 학생수 FROM STUDENT;
- 부속질의어(Subquery)를 사용한 검색 (조인)
SELECT SNAME FROM STUDENT
WHERE SNO IN | NOT IN | =
(SELECT SNO FROM ENROL WHERE CNO = 'C413');
조인만으로 표현
SELECT STUDENT.SNAME FROM STUDENT, ENROL WHERE STUDENT.SNO = ENROL.SNO AND ENROL.CNO = 'C413';
- LIKE를 사용하는 검색
· % : wild string
· _ : wild character
· SNAME LIKE 'S%' | 'S_', '%S_', '%S%' 등
SELECT CNO, CNAME FROM COURSE WHERE CNO LIKE 'C%';
- NULL을 사용한 검색
: IS, IS NOT 이외의 NULL을 이용한 모든 조건식은 맞지 않다
SELECT SNO, SNAME FROM STUDENT WHERE DEPT IS NULL;
- EXISTS를 사용한 검색
· 존재 정량자 : 부속질의문의 결과가 공집합이 아니면 참, 공집합이면 거짓
SELECT SNAME FROM STUDENT WHERE EXISTS (SELECT * FROM ENROL WHERE SNO = STUDENT.SNO AND CNO='C413');
- UNION이 관련된 검색
· 중복되는 투플은 제거
SELECT SNO FROM STUDNET WHERE YEAR = 1 UNION SELECT SNO FROM ENROL WHERE CNO = 'C324';
데이타 수정
- 형식
UPDATE 테이블
SET { 열_이름 = 산술식, }+
[WHERE 조건];
데이타 삽입
- 형식
INSERT
INTO 테이블 [(열_이름_리스트)]
VALUES (열_값_리스트);
INSERT
INTO 테이블 [(열_이름_리스트)]
SELECT문;
- 레코드를 직접 삽입 하기도 하고 부속 질의문을 이용하여 삽입하기도 함
데이타 삭제
- 형식
DELETE
FROM 테이블
[WHERE 조건];
- 하나의 레코드 삭제
DELETE
FROM STUDENT
WHERE SNO = 100; // 이부분이 없으면 복수의 레코드 삭제
'개념 정리 > Database' 카테고리의 다른 글
[Database] 개념 공부 2 (관계 대수와 관계 해석) (0) | 2017.05.14 |
---|---|
[Database] 개념 공부 1 (기본 용어) (0) | 2017.05.09 |