SQL응용과 소프트웨어 개발보안 구축
SQL(Structured Query Language)정의
DB를 조작하여 원하는 자료를 추출하거나 필요한 데이터를 추가, 삭제, 수정하기 위한 비절차적 프로그래밍 언어
관계형 DB를 조작하는 프로그래밍 언어
관계대수과 관계해석을 기초로 한 혼합데이터 언어
SQL 명령어 분류
데이터 정의어 (DDL)
- 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경/제거 할 때 사용
종류
- Create : DB, 테이블, 뷰를 생성하는 명령어
- Alter : DB, 테이블 구조를 변경하는 명령어
- DROP : DB, 테이블, 뷰 등을 삭제하는 명령어
데이터 조작어(DML)
- 테이블 내의 레코드를 추가, 제거, 변경, 검색하기위한 언어
종류
- SELECT : 테이블에서 필요한 레코드를 검색하는 명령어
- INSERT : 테이블에 새로운 레코드를 추가하는 명령어
- DELETE : 테이블에서 레코드를 삭제하는 명령어
- UPDATE : 테이블에서 레코드의 일부분을 수정하는 명령어
데이터제어어 (DCL)
- DB 보안, 무결성을 유지하기 위한 언어
종류
- GRANT : 권한 부여 명령
- REVOKE : 권한 회수(박탈) 명령
스키마 정의/설정
형식
: CREATE SCHEMA 스키마명 AUTHORIZATION 사용자ID;
정의
: 스키마의 식별을 위한 스키마 이름과 해당 스키마의 소유권자 혹은 허가권자를 정의
도메인 정의
형식
CREATE DOMAIN 도메인명 데이터타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK (범위값)]
테이블 정의
CREATE TABLE 기본테이블 명
(속성기술...
PRIMARY KEY (기본키 속성명),
UNIQUE(대체키 속성명)
FOREIGN KEY(외래키 속성명)
REFFERENCES 참조테이블(기본키 속성명)
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명] [CHECK(조건식)]);
옵션사항
NO ACTION
: 참조 테이블의 참조 속성 값이 변경 시 기본테이블에 아무조치 취하지 않음
CASCADE
: 참조 테이블의 튜플 삭제시 그와 관련한 기본 테이블의 튜플도 연쇄적으로 삭제(변경시도 동일)
SET NULL
: 참조 테이블에 변화가 있으면 기본테이블의 관련 튜플의 속성 값을 NULL로 변경
SET DEFAULT
: 참조 테이블에 변화가 있으면 기본 테이블의 관련 튜플의 속성 값을 기본값으로 변경
예시
인덱스 정의
- 검색을 신속하게 수행할 수잇도록 한 데이터 구조
UNIQUE
: 중복되지 않는 인덱스 구조를 생성(생략시 중복허용)
정렬
: ASC(오름차순), DESC(내림차순)
형식
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 ({속성명[ASC|DESC]})
뷰 정의
- 하나 이상의 기본 테이블로부터 유도되는 가상 테이블
- SELECT 문을 서브쿼리로 사용하여 SELECT문의 결과로 뷰를 생성
형식
CREATE VIEW 뷰 이름[(속성기술...)]
AS SELECT 명령구문;
뷰 예시
문제 1
정답)
CREATE UNIQUE INDEX stud_idx
on Student(ssn ASC);
문제 2
정답
CREATE INDEX 직원_IDX
ON 직원(이름);
문제 3
정답
1. DEFAULT "사원"
2. CONSTRAINT
3. CHECK(VALUE IN ("사원", "대리", "과장", "부장", "이사", "사장"));
문제 4
정답
1. PRIMARY KEY
2. NOT NULL
3. FOREIGN
4. REFFERENCES