본문 바로가기

DataBase/DB

DB ) SQL

SQL의 의미는 구조화 질의어이지만 단순히 검색만을 위한 데이타 질의어가 아니라 종합 데이타베이스 언어 역할을 한다. 즉, 데이타 정의어(DDL), 데이타 조작어(DML), 데이타 제어어(DCL)의 기능을 모두 제공하고 있다.

SQL 명령문에는 데이타 처리를 위한 접근 경로에 대한 명세가 필요하지 않으므로  선언적 언어라고 할 수 있다.


SQL 데이타 정의문

스키마와 카탈로그

스키마 

: 하나의 응용(사용자)에 속하는 테이블과 기타 구성요소들을 그룹 짓기 위한 것이다.

 

카탈로그

 : 한 SQL 시스템 내에서의 스키마들의 집합.

 

도메인 정의문

 CREATE DOMAIN 도메인 이름 데아타 타입
                         [기정 값 정의]
                         [도메인 제약조건 정의리스트]

예) DEPT 도메인 정의
 CREATE DOMAIN        DEPT CHAR(4)
            DEFAULT        '???'
            CONSTRAINT  VALID-DEPT
            CHECK( VALUE IN
                   ('COMP', 'ME', 'EE', 'ARCH', '???'));

DEPT로 명세된 열의 값은 'COMP', 'ME', 'EE', 'ARCH', '???' 중의 하나이어야만 함.

값이 없으면 '???' 자동으로 지정된 디폴트값 사용.

 

만들어진 도메인은 DROP DOMAIN 명령문으로 삭제 가능.

DROP DOMAIN 도메인 이름 옵션;

 

기본 테이블 생성

 : SQL에서 가장 중요한 데이타 객체는 테이블이다.

  기본 테이블, 가상 테이블, 임시 테이블로 구분된다.

 

기본 : 독자적으로 존재하는 테이블. DBMS에 의해 하나의 화일로 생성되고 저장된다는 의미이다.

가상 : 독자적으로 존재하지 못하고 궁극적으로 어떤 기본 테이블로부터 유도되어 만들어지는 테이블.

임시 : DDL문으로 만들어지는 것이 아니고 질의문 처리 과정의 중간 결과로 만들어지는 테이블. 

 

제거와 변경

 : DROP TABLE 테이블명 CASCADE;

CASCADE가 명세된 명령이 실행되면 삭제되는 테이블을 참조하는 다른 뷰 정의나 제약조건이 있으면 이들도 함꼐 자동으로 삭제된다.

 ALTER TABLE 명령문으로 변경가능.

 변경내용에는 새로운 열 첨가, 기존 열의 삭제, 기본 테이블에 새로운 무결성 조건의 명세 또는 기존 무결성 조건의 삭제 등이 포함된다.

 


SQL 데이타 조작문

 : 주요 조작문(DML)에는 SELECT, INSERT, DELETE, UPDATE 가 있다.

 

데이타 검색

 : 검색 연산의 결과는 다시 또 다른 테이블이 된다. 즉 기존의 테이블을 처리하면 또 다른 테이블이 만들어지는 것이다. 이러한 성질을 가진 시스템을 폐쇄 시스템(closed system) 이라 한다. 

 

1) 검색 결과에 중복 레코드의 제거

검색결과에서 중복을 제거하고 싶으면 DISTINCT를 명세하면 된다.

 

2) 조건 검색

일반적으로 WHERE절에 나오는 조건식에는 배교 연산자와 블리언 연산자 그리고 NOT을 사용할 수 있으며 필요한 경우에 괄호를 사용할 수 있다. 연산자 대신 키워드로 표현가능 

EX) 조건식 (Year≥3) and (Year≤4) 대신 (Year BETWEEN 3 AND 4) 로 표현 가능.

 

3) 순서를 명세하는 검색

검색 결과의 순서를 오름차순 (ASC)이나 내림차순(DESC)을 명세할 수 있다.

 

4) 산술식, 문자 스트링, 새로운 열 이름이 명세된 검색

SELECT Sno AS 별칭, XX AS 별칭, XXX AS 별칭

 

5) 복수 테이블로부터의 검색

SELECT S.Sname, S.Dept, E.Grade
FROM STUDENT S, ENROL E
WHERE S.Sno = E.Sno AND E.Cno = 'c413';

where로 join함. 조인 검색은 자연히 from 절에 관련 테이블들을 여러개 명세하게 된다.

  1. 테이블1 JOIN 테이브2 ON 조건식
  2. 테이블1 JOIN 테이블2 USING(Sno:열 리스트)
  3. 테이블 NATURAL JOIN 테이블2

6) 집계 함수를 이용한 검색

집계함수에는 COUNT, SUM, AVG, MAX , MIN이 있는데 이들의 기능은 한 열의 값 집합에 적용하여 결과를 생성한다.

 

7) GROUP BY를 이용한 검색

GROUP BY는 논리적으로 FROM절에 있는 테이블을 GROUP BY절에 명세된 열의 값에 따라 그룹으로 분할.

GROUP BY 자체는 어떤 순서를 명세하지 않는다.

 

8) HAVING을 사용한 검색

각 그룹의 구송 요건을 명세한다. 만약 GROUP BY절이 생략되면 테이블 전체를 하나의 그룹으로 취급한다.

 

9) 서브쿼리를 이용한 검색

IN절 , NOT IN, ALL, ANY, SOME 

 

10) LIKE절

LIKE 프레디킷은 서브 스트링 패턴을 비교한느 비교 연산자로 사용된다. 

%는 서브 스트링 패턴을 명세하는 것으로 'C'로 시작하기만 하면 어떤 길이의 어떤 문자 스트링도 관계없다는 뜻.

 

11) NULL 검색

WHERE Dept IS NULL;

널 값은 조건식을 실행할 때 어떤 다른 값과 비교하면 어떤 비교 연산자든 간에 거짓으로 된다.

SQL에서 NULL은 미정(unknown)이 된다.

 

12) EXISTS 검색

EXISTS 다음에 나오는 검색문의 실행 결과로 검색된 투플이 존재하는가를 검사한다.

 

13) UNION 검색

합집합. UNION이 사용되면 결과 테이블에서 중복되는 투플은 제거된다.

이밖에 INTERSECT(교집합), EXCEPT(차집합) 연산이 있다.

 

 

데이타의 갱신

 : 열의 값을 변경하기 위해서 UPDATE문 사용.

 

 

데이타의 삽입

 : 기존 테이블에 행을 삽입할 경우에는 INSERT문 사용.

 만일 열의 이름을 명세하지 않으면 이 테이블 정의문에 명세된 모든 열이 명세된 것으로 취급한다.

하나의 INSERT문으로 여러 개의 행을 삽입할 수 있는데 이때는 한 행에 해당하는 값들을 괄호로 묶어서 표시하면 된다.

 

1) 부속 질의문을 이용한 레코드 삽입

INSERT
INTO COMPUTER(Sno, Sname, Year)
SELET Sno, Sname, Year
FROM STUDENT
WHERE Dept = '컴퓨터'; 

질의문의 실행은 into 다음의 부속 질의문(selete절)을 먼저 실행하고 그 검색 결과를 전부 'computer'테이블에 삽입.

 

 

데이타의 삭제

 : SQL 테이블에서의 삭제는 기본적으로 투플을 대상으로 한다.

DELETE문을 사용한다.

 

WHERE절의 조건을 만족하는 레코드를 모두 삭제. 만약 없으면 이 테이블의 투플이 모두 삭제 된 빈 테이블이 된다.

 


 

SQL 뷰

 : 뷰는 기본적으로 달느 테이블로부터 유도된 이름을 가진 가상 테이블을 말한다.

기본 테이블은 물리적으로 구현되어 데이타가 실제로 저장되지만 뷰는 반드시 물리적으로 구현되어 있는 것은 아니다.

뷰는 실행 시간에만 구체화되는 특수한 테이블이다.

 

뷰의 생성

 : CREATE VIEW 문 사용.

 

뷰의 제거

 : DROP VIEW 뷰이름 {RESTRICT | CASCADE};

 

뷰의 조작 연산

 : SELECT문 사용가능.

그러나 삽입,삭제,갱신을 뷰에 사용하는 데는 상당한 제한이 있다.

 

뷰의 장단점

 장점 : 어느정도의 독립성 제공, 접근을 제어함으로써 보안을 제공, 데이타 관리를 간단하고 쉽게 해준다.

 단점 : 뷰는 그 정의를 변경할 수 없다. 삽입,삭제,생신에 상당한 제한이 있다.

 

 

 

'DataBase > DB' 카테고리의 다른 글

DB 설계  (0) 2020.05.05
DB 데이타 모델링  (0) 2020.05.04
DB 종속성과 정규화  (0) 2020.05.03
DB/ 관계 대수  (0) 2020.04.26
DB 기초  (0) 2020.04.25