데이터베이스 구축 3. SQL 응용

박유현·2020년 5월 25일
0

1. SQL

  • Structured Querty Language
    - 많은 회사에서 관계형 데이터베이스(RDB) 지원 언어로 채택
    - 관계대수와 관계해석 기초로 한 혼합 데이터 언어
    - 질의어(Query Language)에 데이터 구조 정의 / 조작 / 제어 기능도 갖춤

2. DDL

  • Data Define Language(데이터 정의어)
    - SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의 / 변경 / 삭제 시 사용
    - 논리적 데이터 구조 및 물리적 데이터 구조의 사상 정의
    - DB 관리자 혹은 설계자가 사용
    • CREATE: 정의
    • ALTER: TABLE의 정의 변경

3. DROP

  • 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등 제거
  • DROP SCHEMA 스키마명 [CASCADE | RESTRICTED];
  • DROP DOMAIN 도메인명 [CASCADE | RESTRICTED];
  • DROP TABLE 테이블명 [CASCADE | RESTRICTED];
  • DROP VIEW 뷰명 [CASCADE | RESTRICTED];
  • DROP INDEX 인덱스명 [CASCADE | RESTRICTED];
  • DROP CONSTRAINT 제약조건명;

4. DCL

  • Data Control Language(데이터 제어어)
    - 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의
    - DBA(관리자)가 사용
    • REVOKE: 권한 취소
    • COMMIT: 트랜잭션(Transaction) 성공 후 DB의 일관성(Consistency) 위해 변경 내용 반영
    • ROLLBACK: COMMIT 안 된 변경 내용 취소
    • SAVEPOINT: ROLLBACK할 위치(저장점) 지정

5. GRANT

  • 권한 부여
  • GRANT 사용자등급 TO 사용자ID리스트 [IDENTIFIED BY 암호];
  • GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];

6. DML

  • Data Manipulation Language(데이터 조작어)
    - 사용자가 저장 데이터를 응용 프로그램이나 질의어로 실질적 관리
    - 사용자와 DBMS 간 인터페이스 제공
    • INSERT: 테이블에 새로운 튜플 삽입
    • UPDATE: 튜플 내용 갱신

7. DELETE

  • 테이블에서 특정 튜플(행) 삭제
  • DELETE FROM 테이블명 [WHERE 조건];

8. SELECT

  • 테이블에서 튜플 검색
  • SELECT [PREDICATE][테이블명.]속성명 [AS 별칭], [테이블명.]속성명, ...] [,그룹함수(속성명) [AS 별칭]][, Window함수 OVER (PARTITION BY 속성명3, 속성명4, ...)] FROM 테이블명[, 테이블명, ...][WHERE 조건] [GROUP BY 속성명, 속성명, ...][HAVING 조건] [ORDER BY 속성명 [ASC | DESC]];
  • SELECT 속성명1, 속성명2, ... FROM 테이블명 UNION | UNION ALL | INTERSECT | EXCEPT SELECT 속성명1, 속성명2, ... FROM 테이블명 [ORDER BY 속성명 [ASC | DESC]];

9. DISTINCT

  • PREDICATE(불러 올 튜플 수 제한하는 명령어)의 하나
    - 중복 튜플 있으면 첫 번째 한 개만 검색

10. JOIN

  • 2개의 테이블의 연관 튜플을 결합해 릴레이션 반환
  • INNER JOIN
    • EQUI JOIN
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2, ... WHERE 테이블명1.속성명 = 테이블명2.속성명;
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 NATURAL JOIN 테이블명2;
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 JOIN 테이블명2 USING(속성명);
    • NON-EQUI JOIN
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2, ... WHERE (NON-EQUI JOIN 조건);
  • OUTER JOIN
    • LEFT OUTER JOIN
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.속성명(+);
    • RIGHT OUTER JOIN
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명(+) = 테이블명2.속성명;
    • FULL OUTER JOIN
      • SELECT [테이블명1.]속성명, [테이블명2.]속성명, ... FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
  • SELF JOIN
    - SELECT [별칭1.]속성명, [별칭2.]속성명, ... FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2 ON 별칭1.속성명 = 별칭2.속성명;
    - SELECT [별칭1.]속성명, [별칭2.]속성명, ... FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2 WHERE 별칭1.속성명 = 별칭2.속성명;

0개의 댓글