데이터베이스

데이터베이스 언어 SQL

윤돌_99 2021. 4. 19. 16:06

● SQL(Structured Query Language)

관계 데이터베이스를 위한 표준 질의어, 비절차적 데이터 언어

 

사용방식

- 대화식 SQL : 데이터베이스 관리 시스템에 직접 접근해 질의를 작성하여 실행

- 삽입 SQL : 프로그래밍 언어로 작성된 응용 프로그램에 삽입

 

● SQL의 분류

- 데이터 정의어(DDL) : 테이블을 생성하고 변경,제거하는 기능을 제공

- 데이터 조작어(DML) : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능을 제공

- 데이터 제어어(DCL) : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공

 

● SQL의 데이터 정의 기능

 

테이블 생성 : CREATE TABLE 문

CREATE TABLE 테이블_이름 (
               속성_이름 데이터 타입 [NOT NULL]  [DEFAULT 기본_값]
               [ PRIMARY KEY (속성_리스트) ]        // 유일키 정의 
               [ UNIQUE (속성_리스트) ]               // 대체키 정의 
               [ FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트) ]    // 외래키 정의
                  [ ON DELETE 옵션 ] [ ON UPDATE 옵션 ] 
               [ CONSTRAINT 이름 ] [ CHECK(조건) ]            //데이터 무결성을 위한 제약조건 정의
);

※ 속성의 정의 

    - NOT NULL : 속성이 널값을 허용하지 않음을 의미하는 키워드

    - DEFAULT : 속성의 기본 값을  지정하는 키워드

 

※ 키의 정의 

   - PRIMARY KEY : 기본키를 지정하는 키워드

   - UNIQUE KEY : 대체키를 지정하는 키워드, 대체키로 지정되는 속성의 값은 유일성을 가지며 기본키와 달리 널 값이                          허용됨

   - FROEIGN KEY : 외래키를 지정하는 키워드, 외래키가 어떤 테이블의 무슨 속성을 참조하는지                                                        REFERENCES 키워드 다음에 제시

      > 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 투플 삭제 시 처리 방법을 지정하는 옵션

          - ON DELETE NO ACTION : 투플을 삭제하지 못하게 됨

          - ON DELETE CASCADE : 관련 투플을 함께 삭제함

          - ON DELETE SET NULL : 관련 투플의 외래키 값을 NULL로 변경함

          - ON DELETE SET DEFAULT : 관련 투플의 외래키값을 미리 지정한 기본 값으로 변경함

     > 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 투플 변경 시 처리 방법을 지정하는 옵션

          - ON UPDATE NO ACTION : 투플을 변경하지 못하게 됨

          - ON UPDATE CASCADE : 관련 투플을 외래키 값을 함께 변경함

          - ON UPDATE SET NULL : 관련 투플의 외래키 값을 NULL로 변경함

          - ON UPDATE SET DEFAULT : 관련 투플의 외래키값을 미리 지정한 기본 값으로 변경함

 

  - CHECK : 테이블에 정확하고 유효한 데이터를 유지하기 위해 특정 속성에 대한 제약조건을 지정

    예) CONSTRAINT CHK_CPY CHECK(제조업체 = '한빛제과')

 

 

테이블 변경 : ALTER TABLE 문

 

- 새로운 속성 추가

ALTER TABLE 테이블_이름
          ADD 속성_이름  데이터_타입  [NOT NULL] [DEFAULT 기본_값]

 

- 기존 속성 삭제

ALTER TABLE 테이블_이름 DROP COLUMN 속성_이름;

 

- 새로운 제약조건의 추가

ALTER TABLE 테이블_이름 ADD CONSTRAINT 제약조건_이름  제약조건_내용;

 

- 기존 제약조건의 삭제

ALTER TABLE 테이블_이름 DROP CONSTRAINT 제약조건_이름;

 

테이블 삭제 : DROP TABLE 문

DROP TABLE 테이블_이름;

 

 

SQL - DML

 

데이터 삽입 : INSERT 문

INSERT 
INTO 테이블_이름[(속성_리스트)]
VALUES (속성값_리스트);

 

EX) INSERT INTO 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)

VALUES ('strawberry', '최유경', 30, 'vip', '공무원', 100);

 

> 부속 질의문을 이용한 데이터 삽입

INSERT 
INTO 테이블_이름[(속성_리스트)]
SELECT 문;

EX) INSERT INTO 한빛제품(제품명, 재고량, 단가) SELECT 제품명, 재고량, 단가 FROM 제품

     WHERE 제조업체 = '한빛제과';

 

 

 데이터 검색 : SELECT 문

SELECT [ ALL | DISTINCT ] 속성_리스트
FROM 테이블_리스트; 

> ALL : 결과 테이블이 투플의 중복을 허용하도록 지정, 생략 가능

> DISTINCT : 결과 테이블이 투플의 중복을 허용하지 않도록 지정

> AS 키워드로 이용해 결과 테이블에서 속성의 이름을 바꾸어 출력 가능

EX) SELECT 제품명, 단가 AS 가격 FROM 제품;

 

> 산술식을 이용한 검색 

EX) SELECT 제품명, 단가 + 500 AS "조정 단가"

FROM 제품;

 

> 조건 검색 : 조건을 만족하는 데이터만 검색

SELECT [ ALL | DISTINCT ] 속성_리스트
FROM 테이블_리스트
[WHERE 조건 ];

EX) SELECT 제품명, 재고량, 단가 FROM 제품 WHERE 제조업체 = '한빛제과';

 

> LIKE를 이용한 검색 : LIKE 키워드를 이용해 부분적으로 일치하는 데이터를 검색,

                              문자열을 이용하는 조건에만 LIKE 키워드 사용가능

기호 설명
% 0개 이상의 문자(문자의 내용과 개수는 상관없음)
_ 1개의 문자(문자의 내용은 상관없음)

EX) LIKE '__한%' : 세번째 글자가 '한'인 문자열

 

> NULL을 이용한 검색

   - IS NULL 키워드를 이용해 특정 속성의 값이 널 값인지를 비교

   - IS NOT NULL 키워드를 이용해 특정 속성의 값이 널값이 아닌지를 비교

 

> 정렬 검색 : ORDER BY 키워드를 이용해 결과 테이블 내용을 사용자가 원하는 순서로 출력

   - 오름차순(기본) : ASC / 내림차순 : DESC

   EX) SELECT [ ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트 [ WHERE 조건 ] 

        [ ORDER BY 속성_리스트 [ ASC | DESC ]  ];

 

> 집계함수를 이용항 검색 : 특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 집계 함수를 이용

함수 의미 사용 가능한 속성의 타입
COUNT 속성 값의 개수 모든 데이터
MAX 속성 값의 최댓값
MIN 속성 값의 최솟값
SUM 속성 값의 합계 숫자 데이터
AVG 속성 값의 평균

 

 

   

'데이터베이스' 카테고리의 다른 글

데이터베이스 정규화 총정리  (0) 2021.05.21
데이터베이스 언어 SQL-2  (0) 2021.04.19
관계 데이터 연산  (0) 2021.04.19
데이터베이스 관리 시스템  (0) 2021.04.18
데이터베이스 기본 개념  (0) 2021.04.18