SQL 구조

천소진·2022년 10월 18일
0

Study

목록 보기
12/29
post-thumbnail

SQL?

: 관계형 데이터베이스를 지원하는 언어
: 관계대수와 관계해석을 기초로할 혼합 데이터 언어
: 질의 기능 뿐 아니라 데이터의 구조 정의, 조작, 제어기능을 모두 갖춤

1. DDL(Data Define Language)

: 데이터 정의어
: DB 관리자나 설계자가 사용
: schema, domain, table, view, index, sequence 등을 정의하거나 변경,삭제할 때 사용

- CREATE SCHEMA

  • CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자ID;
    : 스키마(DB구조와제약조건에 과해 전반적인 명세를 기술한 것)를 정의
    : 스키마 이름과 소유권자를 정의

- CREATE DOMAIN

  • CREATE DOMAIN 도메인이름[AS] 데이터타입 [DEFAULT 기본값] [CONSTRAINT 제약조건이름 CHECK(범위값)];
    : 정의된 도메인명은 일반적인 데이터 타입처럼 사용.

- CREATE TABLE

  • CREATE TABLE 테이블 이름 (속성이름 데이터타입) [DEFAULT 기본값][NOT NULL]....;
    : 기본테이블에 포함될 모든 속성의 이름과 데이터타입 옵션등을 지정.

- CREATE VIEW

  • CREATE VIEW 뷰이름 [(속성이름[, 속성이름.....])] AS SELECT문;
    : SELECT문을 서브쿼리로 한 결과로 뷰생성
    : SELECT문에는 UNION이나 ORDER BY 를 사용할수 없음.

- CREATE INDEX

  • CREATE [UNIQUE] INDEX 인덱스이름 ON 테이블이름(속성이름[ASC | DESC] [,속성이름 [ASC | DESC]]) [CLUSTER];
    : 검색시간을 단축시킬수있는 이름표와 같은 인덱스 생성.
    ==> UNIQUE 중복값이 없는 속성으로 인덱스 생성
    ==> CLUSTER 테이블 행의 순서를 지정한 열에 맞춰서 자동정렬 해주며, 테이블당 한개만 생성가능.

- ALTER TABLE

  • ALTER TABLE 테이블이름 ADD | ALTER 속성이름 데이터타입;
  • ALTER TABLE 테이블이름 DROP COLUMN 속성이름 [CASCADE];
    : 테이블에대한 정의를 변경하는 명령문
    ==> ADD 새로운 속성 추가할때
    ==> 특정 속성의 데이터 타입이나 크기를 변경할 때
    ==> CASCADE 주테이블의 데이터 제거시 외래키로 관계를 맺고있는 모든 데이터 제거 :무결성

- DROP

  • DROP SCHEMA | DOMAIN | TABLE | VIEW | INDEX | CONSTRAINT [CASCADE | RESTRICT];
    : 삭제하는 명령문
    ==> RESTRICT 다른 개체가 제거대상을 참조중일때는 제거하지 않음.

2. DML (Data Manipulation Language)

: 데이터 조작어
: DB 사용자가 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
: 사용자와 관리자간의 인터페이스 제공.

- SELECT

  • SELECT * | 속성이름 FROM 테이블 이름 [WHERE 조건] [GROUP BY 속성이름][HAVING 조건][ORDER BY 속성이름[ASC | DESC]];
    : 조건에 만족하는 행(튜플)을 검색할 때 사용.
    => 실행 작동 순서 : FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT →ORDER BY
    ==> DISTINCT 중복제거
    ==> WHERE 절에는 AND, OR, NOT, BETWEEN등의 연산자로 조건을 여러개를 지정할 수 있음.
    ==> GROUP BY 가 지정된경우 SELECT 절에는 그룹속성이 꼭 있어야함.
    ==> 그룹함수나 그룹 속성이 나온 경우에는 일반 속성을 함께 사용할 수 없음.
    ==> 서브쿼리가 있는경우 서브쿼리를 먼저 수행하고 그결과에서 메인 쿼리를 검색.
    ==> 두개의 SELECT문 의 결과를 통합하여 검색할 때는 UNION 사용

!!!!! 집합연산자 종류
1) UNION : 합집합(중복제거)
2) UNION ALL : 합집함 (중복허용)
3) INTERSECT : 교집합
4) EXCEPT : 차집합(첫번째 - 두번째)

3. DCL(Data Control Language)

: 데이터 제어어
: 데이터의 보안, 무결성, 회복, 병행수행 제어 등의 정의하는 언어
: DB 관리자가 데이터 관리를 목적으로 사용.

- GRANT/REVOKE

  • GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 비밀번호];
  • REVOKE 사용자등급 FROM 사용자_ID_리스트;
    : 사용자에게 권한을 부여 | 취소하는 명령어
    ==> 테이블 및 속성에 대한 권한 부여 | 취소
    : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER등의 권한

- COMMIT;
: 현재 DB의 상태를 저장.
: 자동으로 설정해놓으면 DML문이 성공적으로 완료되면 자동으로 COMMIT이 되고 실패하면 ROLLBACK이 됨.

- ROLLBACK;
: 아직 COMMIT 되지 않은 모든 내용을 취소하고 이전으로 되돌리는 기능.

- SAVEPOINT;
: ROLLBACK할 위치인 저장점을 지정.
: 저장점을 지정할때는 이름을 지정하고, ROLLBACK시 저장점까지의 처리내용이 취소됨.

4. JOIN

: 2개이상의 테이블에 대해 연관된 튜플들을 결합하여 새로운 릴레이션 반환.

- INNER JOIN
: 관계가 설정된 두 테이블에서 조인된 필드가 일치하는 행만을 표시.

  • WHERE절 이용
    SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1, 테이블이름2 WHERE 테이블1.속성명= 테이블2.속성명;

  • NATURAL JOIN 이용
    SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 NATURAL JOIN 테이블이름2;
    : 조인할 속성을 따로 지정하지 않기 때문에 두테이블에는 이름과 도메일이 같은 속성이 반드시 있어야함.

  • JOIN ~ USING절 이용
    SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 JOIN 테이블이름2 USING(속성명);

- OUTER JOIN
: JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법.

  • LEFT OUTER JOIN
    SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 LEFT OUTER JOIN 테이블이름2 ON 테이블이름1.속성명 = 테이블이름2.속성명;
    : INNER JOIN의 결과(두테이블 모두 관련있는 행)를 구한뒤 좌측 릴레이션은 모두 표시하고 INNER JOIN결과를 붙임.

  • RIGHT OUTER JOIN
    SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 RIGHT OUTER JOIN 테이블이름2 ON 테이블이름1.속성명 = 테이블이름2.속성명;
    : INNER JOIN의 결과(두테이블 모두 관련있는 행)를 구한뒤 우측 릴레이션은 모두 표시하고 INNER JOIN결과를 붙임.

0개의 댓글