[정보처리기사 실기] 8. SQL 응용

민영·2022년 7월 22일
0

정보처리기사

목록 보기
3/4
post-thumbnail

01 기본 SQL 작성하기

1. SQL 정의어 (DDL)

: 관계 데이터베이스에서 사용될 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하거나 수정, 제거하기 위해 사용하는 언어이다.

CREATE

  • 테이블 정의

    CREATE TABLE 테이블이름
    ( 속성이름 데이터타입, ... , ... );

  • 스키마 정의

    CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자;

  • 도메인 정의

    CREATE DOMAIN 도메인이름 데이터타입
    [DEFAULT 기본값][CONSTRAINT 제약조건이름 CHECK(VALUE IN(범위값))];

  • 인덱스 정의

    CREATE [UNIQUE] INDEX 인덱스이름
    ON 테이블이름(속성이름 [ASC | DESC])
    [CLUSTER];
    //
    // UNIQUE: 중복을 허용하지 않도록 인덱스를 생성할때 사용
    // CLUSTER: 인접된 튜플들을 그룹으로 묶어 저장하도록 할때 사용

ALTER

ALTER TABLE 테이블이름 ADD 속성이름 데이터타입 [DEFAULT];
ALTER TABLE 테이블이름 ALTER 속성이름 [SET DEFAULT];
ALTER TABLE 테이블이름 DROP 속성이름 [CASCADE | RESTRICT];
//
// CASCADE: 속성을 제거할때 그 속성을 참조하고 있는 모든 테이블, 스키마 등에서 제거된다
// RESTRICT: 속성을 제거할때 그 속성을 참조하고 있는 테이블, 스키마 등이 있을때 그 속성에 대한 명령이 취소된다

DROP

DROP TABLE 테이블 이름 [CASCADE | RESTRICT];
-> 테이블 전체 삭제
DROP SCHEMA 스키마 이름 [CASCADE | RESTRICT];
DROP DOMAIN 도메인 이름 [CASCADE | RESTRICT];
DROP VIEW 뷰 이름 [CASCADE | RESTRICT];
DROP INDEX 인덱스 이름;
DROP CONSTRAINT 제약조건 이름;

2. SQL 조작어 (DML)

: 데이터베이스 내의 자료를 실제 사용자가 이용(조작)하기 위한 언어이며, 데이터의 검색, 삽입, 수정, 삭제 등을 위해 사용된다.

SELECT (검색문)

SELECT [DISTINCT] 속성이름
FROM 테이블이름
// [WHERE 조건]
// [GROUP BY 속성이름 [HAVING 그룹조건]]
// [ORDER BY 속성이름 [ASC | DESC]]
//
// DISTINCT: 검색 결과에 중복되는 값이 있는 경우 한번만 표현하도록 하는 옵션
// GROUP BY: 한 속성의 값을 그룹으로 분류하고자 할때 사용
// HAVING: GROUP BY에 의해 그룹으로 분류를 한 후 조건을 제시할때 사용

ex1)
SELECT 이름
FROM 학생정보
WHERE 학과 IN
( SELECT 학과
FROM 학과인원
WHERE 학생수 <= 30 );
.
ex2)
SELECT 성명
FROM 학생
WHERE 연락처 LIKE '%7588';
.
ex3)
SELECT 성명
FROM 학생
WHERE 연락처 IS NOT NULL

INSERT (삽입문)

INSERT INTO 테이블이름 (속성이름1, 속성이름2, ... )
VALUES (속성값1, 속성값2, ...);

UPDATE (갱신문)

UPDATE 테이블이름
SET 속성이름 = 변경내용
[WHERE 조건];

DELETE (삭제문)

DELETE FROM 테이블이름
[WHERE 조건];

3. SQL 제어어 (DCL)

: 관리자가 데이터의 보안, 무결성 유지, 병행제어, 회복 등을 하기 위해 사용하는 언어를 말한다.

COMMIT
: 데이터베이스 내의 연산이 성공적으로 종료되어 그 연산에 의한 수정내용을 지속적으로 유지하기 위한 명령어

ROLLBACK
: 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상적으로 수행이 되었다 하더라도 수행되기 이전 상태로 되돌리기 위해 연산 내용을 취소할때 사용하는 명령어

GRANT
: 관리자(DBA)가 사용자에게 데이터베이스에 대한 권한을 부여하기 위한 명령어

GRANT 권한내용 ON 테이블이름 TO 사용자 [WITH GRANT OPTION];
// WITH GRANT OPTION: 사용자가 부여받은 권한을 다른 사용자에게 부여하고자 할때 사용하는 옵션
.
ex) GRANT UPDATE ON 학생 TO OTH WITH GRANT OPTION;

REVOKE
: 관리자(DBA)가 사용자에게 부여했던 권한을 취소하기 위해 사용되는 명령어

REVOKE 권한내용 ON 테이블이름 FROM 사용자 [CASCADE];
.
ex) REVOKE UPDATE ON 학생 FROM OTH CASCADE

02 고급 SQL 작성하기

뷰 (VIEW)

: 가상테이블
: 실제 물리적으로 기억공간을 차지하지 않으며, 논리적 독립성을 제공하고, 데이터 접근제어로 보안성을 향상한다.
: 뷰가 정의된 기본 테이블이 제거되면, 뷰도 자동적으로 제거된다.
: 뷰는 ALTER문을 이용하여 변경할 수 없다.
: 한번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 한다.

시스템 카탈로그 (System Catalog)

: 데이터사전 (Data Dictionary), 메타 데이터 (Meta Data)
: 데이터베이스에 저장되어 있는 테이블, 인덱스, 제약조건 등 개체들에 대한 정보와 정보들 간의 관계를 저장한 것으로 그 자체가 하나의 작은 데이터베이스이다.
: 검색은 가능하지만 삽입, 삭제, 갱신 등은 불가능하다.
: 시스템 카탈로그 갱신은 사용자가 SQL문을 실행하면 시스템에 의해 자동적으로 이루어진다.

조인 (JOIN)

: 둘 이상의 테이블로부터 특정 공통된 값을 갖는 행을 연결하거나 조합하여 검색하는 것

  • 내부조인: 동등조인, 비동등조인
  • 외부조인
  • 셀프조인
  • 교차조인: 카티션 곱

+) JOIN ~ ON
: 두 테이블을 JOIN 연산한 뒤 자료를 검색하는 형태의 질의문

테이블1 JOIN 테이블2 ON 조인조건
ex)
SELECT 이름, 학과, 학생수
FROM 학생정보 JOIN 학과인원 ON (학생정보.학과 = 학과인원.학과);

+) 트리거 (Trigger)

: 데이터베이스에 특정한 사건(이벤트)이 발생될 때마다 자동으로 수행되는 저장 프로시저이다.

  • 행 트리거: 컬럼의 각 행의 값에 변화가 생길 때마다 트리거 수행
  • 문장 트리거: 이벤트에 의해 단 한번만 트리거 수행
profile
그날의 기록

0개의 댓글