Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

dongdorodongdong

SQL(DDL/DML/DCL) 본문

Database

SQL(DDL/DML/DCL)

d5ngs 2019. 3. 25. 17:35


DDL (Data Definition Language)

  • 정의
    - 데이터베이스 구조, 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어
    - 번역한 결과가 데이터 사전에 여러 개의 테이블로 저장

  • 종류
    CREATE
    - ALTER
    - DROP
    - RENAME

DML (Data Manipulation Language)
  • 정의
    - 사용자로 하여금 데이터를 처리할 수 있게 하는 도구
    - 사용자(응용 프로그램)와 DBMS 간의 인터페이스를 제공

  • 종류
    SELECT
    - INSERT
    - UPDATE
    - DELETE

DCL (Data Control Language)
  • 정의
    - 무결성, 보안, 권한제어, 무결성 유지,  회복 등을 하기 위한 언어
    - 데이터를 보호하고 관리하는 목적으로 사용

  • 종류
    - GRANT
    REVOKE
    - COMMIT
    - ROLLBACK


CREATE

  • 코드

  • 제약조건
    - NOT NULL : NULL 값은 허용하지 않는다.
    - PRIMARY KEY : 주키
    - UNIQUE : 해당 속성은 유일해야 한다.
    - FOREIGN KEY : 외래키
    - REFERENCES : 외래키를 참조하는 참조 릴레이션
    - CHECK : 입력할 수 있는 값의 범위 등을 제한

  • VIEW 생성 코드


학생 테이블에서 성별이 '여'인 데이터만 뷰로 생성하여 시스템 성능을 향상

  • 생성된 테이블 구조 확인
    - Oracle
    DESC 테이블명;
    - SQL Server
    exec s_hepl '테이블명' go

  • SELECT 문장을 통한 테이블 생성
    - 주의 점 : not null 제약조건만 적용되고, 다른 제약 조건은 없어진다. 따라서 ALTER TABLE 기능을 사용
    - Oracle
    CREATE TABLE 테이블명 AS SELECT * FROM 테이블명;
    - SQL Server
    SELECT * INTO 테이블명 FROM 테이블명;


ALTER

  • 코드

    - 학과 테이블에 연락처 속성을 추가
    학과 테이블에 학과명 속성을 제거


  • 고려사항
    - 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못한다.
    - 컬럼의 NULL값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
    - 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후에만 적용이 된다.
    - 컬럼의 NULL값이 없을 경우에만 NOT NULL 제약 조건을 추가할 수 있다.

  • RENAME COLUMN
    - Oracle
    ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경컬럼명;
    - SQL Server
    sp_rename 기존컬럼명, 변경컬럼명, 'COLUMN';

  • DROP CONSTRAINT
    - Oracle
    ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
    - SQL Server
    ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

  • ADD CONSTRAINT
    - Oracle
    ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명);
    - SQL Server
    ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명);


DROP


  • 학과 테이블을 삭제
  • CASCADE : 참조하는 테이블을 연쇄적으로 제거
  • RESTRICT : 참조하는 테이블이 있을 경우 제거 안 됨

SELECT


  • DISTINCT : 검색 결과에서 중복 배제
  • GROUP BY : 그룹별 검색
    - COUNT( ) : 그룹별 튜플 수
    - AVG( ) : 그룹별 평균
    - SUM( ) : 그룹별 합계
    - MAX( ) : 그룹별 최대
    - MIN( ) : 그룹별 최소
  • ORDER BY : 정렬 검색
    - ASC : 오름차순
    - DESC : 내림차순


INSERT



DELETE


  • 튜플 삭제

UPDATE



GRANT / REVOKE



  • WITH GRANT OPTION : 다른 사람에게 권한을 부여할 수 있음
  • CASCADE : 연쇄적으로 권한을 취소


NoSQL

  • Not Only SQL의 약자
  • 초고용량 데이터 처리 등 성능에 특화된 목적을 위해 분산저장 시스템
  • 비정형 데이터의 저장을 위해 유연한 데이터 모델을 지원
  • 전통적인 관계형 DBMS와는 다른 비관계형 DBMS



내장 SQL(Embedded SQL)

  • 응용 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램 언어로 만든 프로그램에 삽입된 SQL
  • 내장 SQL 실행문은 호스트 언어에서 실행문이 나타날 수 있는 곳이면 어느곳에서나 사용 가능
  • 내장 SQL은 단 하나의 튜플만을 반환
  • 반환되는 튜플은 일반 변수를 사용하여 저장 가능



DELETE vs TRUNCATE vs DROP


  • DELETE : 데이터는 지워지지만 테이블 용량은 줄어 들지 않음
  • TRUNCATE : 테이블 용량이 줄어 들고, 인덱스 등 모든 데이터 삭제 (테이블이 없어지진 않음)
  • DROP : 테이블에 대한 흔적 자체를 없앰


'Database' 카테고리의 다른 글

Hashing  (0) 2019.03.25
자료구조  (0) 2019.03.25
데이터베이스 설계  (0) 2019.03.25
시스템 카탈로그(데이터 사전)  (0) 2019.03.24
정규화  (0) 2019.03.24