[SQLD] 2과목 – 3. 관리 구문

2024. 5. 16. 14:23·자격증 & 공부/SQLD

[ 2과목 – 3. 관리 구문 ]

 * DML
   - Data Manipulation Language란 의미로 데이터를 입력하고, 입력된 데이터를 수정, 삭제, 조회하는 명령어
   - DML 명령서 사용 후 별도의 COMMIT 명령어를 실행시켜야만 데이터가 반영되고 ROLLBACK이 가능

 * DML 종류
    (1) INSERT
      - 테이블에 데이터를 입력하는 명령어. 입력할 데이터가 컬럼의 데이터 타입과 맞지 않을 경우 묵시적으로 
        형변환을 한 후 입력
      - 만약 형변환을 해도 데이터 타입에 안 맞을 경우 에러가 발생
        INSERT INTO 테이블명(컬럼1, 컬럼2, ...) VALUES (데이터1, 데이터2, ...)

    (2) UPDATE
      - WHERE절을 사용해 이미 저장된 특정 데이터를 수정하고 싶을 때 사용하는 명령어
      - 수정하고 싶은 컬럼이 많으면 SET절에 ,(콤마)로 컬럼을 이어서 사용
        (SET 컬럼명1 = 데이터, 컬럼명2 = 데이터, ...)

    (3) DELETE
      - WHERE절을 사용해 이미 저장된 특정 데이터를 삭제할 때 사용하는 명령어
      - 테이블 전체 데이터를 삭제할 때 TRUNCATE 명령어가 시스템 부하 측면에서 유리하지만 ROLLBACK은 
        불가능(DELETE는 COMMIT 전 ROLLBACK 가능)


    (4) MERGE
      - 테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터의 변경 작업을 한 번에 할 수 있는 명령어

MERGE
INTO 타깃 테이블명
USING 비교 테이블명
ON 조건
WHEN MATCHED THEN
UPDATE SET 컬럼명1 = 새로운 데이터, 컬럼명2 = 새로운 데이터, ...
WHEN NOT MATCHED THEN
INSERT (컬럼명1, 컬럼명2, ...)
VALUES(데이터1, 데이터2, ...)


 * 와일드카드
   - * : 모든
   - % : 모든
   - - : 한 글자

 * TCL
   - 트랜잭션을 제어하는 명령어로 트랜잭션은 더 이상 쪼개질 수 없고 한 그룹으로 묶이는 논리적인 업무 단위

 * 트랜잭션의 특징
   (1) 원자성
    - 트랜잭션으로 묶인 일련의 동작들은 모두 성공해야 하거나 실패해야 함
   (2) 일관성
    - 트랜잭션이 완료된 후에도 데이터베이스가 가진 데이터에 일관성이 있어야 함
   (3) 고립성
    - 한 번에 하나의 트랜잭션만 수행 가능함. 다른 트랜잭션이 수행 중이면 그 트랜잭션이 끝나고 나서 수행 가능
   (4) 지속성
    - 트랜잭션이 성공적으로 수행이 되면 모든 트랜잭션이 로그에 남겨진 뒤 COMMIT 되어야 함

 * TCP 종류
   (1) COMMIT
    - 데이터 입력, 삭제, 수정 후 변경된 내용을 최종적으로 데이터 파일에 저장하는 명령어
    - COMMIT 하지 않으면 휘발성인 메모리에만 저장하기 때문에 변경된 사항이 사라질 수 있고 다른 사용자가 
      변경된 데이터를 조회할 수 없음
   (2) ROLLBACK
    - 변경된 사항을 취소하는 명령어로 ROLLBACK하면 변경하기 이전 데이터로 복구됨
   (3) SAVEPOINT
    - ROLLBACK 뒤에 특정 SAVEPOINT를 지정하면 그 지점까지만 이전 데이터로 복구함

 * DDL
   - Data Definition Language란 의미로 데이터를 정의하고 테이블 안에 들어갈 데이터의 유형도 같이 정의=
   - 묵시적으로 동시에 COMMIT이 사용됨

 * DDL 데이터 유형
   (1) 문자
    - CHAR : 크기가 정의된 만큼 고정이고 빈 공간을 문자로 인식하지 않음
    - VARCHAR : 크기가 정의된 것보다 작을 수 있고 빈 공간을 문자로 인식함
    - CLOB
   (2) 숫자 - NUMBER
   (3) 날짜 – DATE

 * DDL 종류
   (1) CREATE
    - 테이블을 생성하는 명령어
    - CREATE TABLE 테이블명 (컬럼명1 데이터 타입(DEFAULT / NULL / NOT NULL), ...);
    - CREATE TABLE 테이블명 AS SELECT * FROM 복사할 테이블명 (테이블 복사해서 생성)

 * 테이블 생성 규칙
  ㉮ 각 컬럼들은 ,로 구분되고 ;로 끝난다.
  ㉯ 한 테이블 내에서 컬럼명은 고유해야 한다. 컬럼명은 중복될 수 없다.
  ㉰ 컬럼명 뒤에 데이터 유형과 크기가 명시되어야 한다.
  ㉱ 테이블명과 컬럼명은 숫자로 시작할 수 없다. 반드시 문자로 시작해야 한다.
  ㉲ A-Z, a-z, 0-9, _, $, #만 가능

 * 테이블 제약 조건(CONSTRAINT)의 종류
    - 테이블에 저장될 데이터의 무결성을 유지하기 위한 것
      ㉮ PRIMARY KEY(PK) 
        : 테이블에 하나씩만 정의할 수 있으며 PK로 지정된 컬럼에는 NULL값을 입력할 수 없고 UNIQUE 인덱스로 생성
      ㉯ FOREIGN KEY(FK) 
        : 하나의 테이블이 다른 테이블을 참조하고자 할 때 FK를 정의, NULL 값 가능, 여러 속성 가능
      ㉰ UNIQUE KEY (고유키)
        : PK와 유사하지만 NULL값을 입력할 수 있음
      ㉱ NOT NULL 
        : 해당 컬럼에 NULL값을 입력할 수 없음
      ㉲ CHECK 
        : 컬럼에 저장될 수 있는 값의 범위를 제한

   (2) ALTER
    - 테이블의 구조를 변경할 때 사용함
      ㉮ ADD COLUMN 
        : 새로운 컬럼을 추가할 때 사용되며 추가되는 위치는 맨 끝이며 추가될 위치를 바꿀 수 없다.
          - ALTER TABLE 테이블명 ADD 컬럼명 데이터 유형;
      ㉯ DROP COLUMN 
        : 기존에 있는 컬럼을 삭제하는 명령어로 한 번 삭제하면 복구할 수 없다.
          - ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
      ㉰ MODIFY COLUMN 
        : 컬럼을 변경할 때 사용되며 컬럼의 데이터 유형, DEFAULT값, NOT NULL 제약조건도 변경 가능
        : 컬럼의 크기를 줄일 때는 컬럼의 모든 데이터가 줄어든 컬럼의 크기보다 작아야 함
        : 컬럼에 저장된 데이터가 없을 때만 변경 가능하고 현재 NULL값이 저장되어 있지 않은 컬럼에만 NOT NULL 
         제약조건 추가가 가능
        : DEFAULT 변경 시 변경 이후 저장되는 데이터에만 적용됨 
          - ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터 유형 [DEFAULT 값][NOT NULL], ...);
      ㉱ RENAME COLUMN 
        : 기존의 컬럼 이름 변경
          - ALTER TABLE 테이블명 RENAME COLUMN 변경할 컬럼명 TO 변경할 이름;
      ㉲ ADD CONSTRAINT 
        : 제약조건 추가 
          - ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명);

      ㉳ DROP TABLE 
        : 테이블을 삭제할 때 사용하며 만약 다른 테이블이 해당 테이블을 참조하고 있을 경우 
         CASCADE CONSTRAINT를 사용해야만 삭제가 됨
          - TABLE 테이블명 [CASCADE CONSTRAINT];
      ㉴ TRUNCATE TABLE 
        : 테이블의 모든 데이터를 제거하고 ROLLBACK이 불가능하다. 사용 공간이 재사용되도록 초기화됨
        : 테이블을 삭제하지는 않음
          - TRUNCATE TABLE 테이블명;

 * DCL
   - Data Control Language란 의미로 USER를 생성하고 USER에게 데이터를 다룰 수 있는 권한을 부여하거나 
     회수하는 명령어

 * DCL 종류
   (1) USER 관련 명령어
     - CREATE USER
         : 사용자를 생성
         : CREATE USER 사용자명 IDENTIFIED BY 패스워드;
     - ALTER USER
         : 사용자를 변경
         : ALTER USER 사용자명 IDENTIFIED BY 패스워드;
     - DROP USER
         : 사용자를 삭제
         : DROP USER 사용자명
   (2) 권한 관련 명령어
     - GRANT
         : 사용자에게 권한을 부여
         : GRANT 권한 TO 사용자명;
     - REVOKE
         : 사용자를 변경
         : REVOKE 권한 FROM 사용자명;
   (3) ROLE 관련 명령어
     - ROLE이란 특정 권한들을 하나의 그룹으로 묶는 것과 동일
     - CREATE ROLE 롤명 : ROLE을 생성
     - GRANT 권한 TO USER : ROLE에 권한 부여
     - GRANT 롤명 TO 사용자명 : 사용자를 삭제
 

저작자표시 비영리 변경금지 (새창열림)

'자격증 & 공부 > SQLD' 카테고리의 다른 글

[SQLD] SQLD 합격 후기  (0) 2024.06.18
[SQLD] 2과목 - 2. SQL 활용  (0) 2024.05.16
[SQLD] 2과목 - 1. SQL 기본  (0) 2024.05.16
[SQLD] 1과목 - 2. 데이터 모델과 SQL  (0) 2024.05.16
[SQLD] 1과목 - 1. 데이터 모델링의 이해  (0) 2024.05.16
'자격증 & 공부/SQLD' 카테고리의 다른 글
  • [SQLD] SQLD 합격 후기
  • [SQLD] 2과목 - 2. SQL 활용
  • [SQLD] 2과목 - 1. SQL 기본
  • [SQLD] 1과목 - 2. 데이터 모델과 SQL
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (829)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (445)
        • 백준[JAVA] (108)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    데이터
    CS
    DB
    스프링 부트 쇼핑몰 프로젝트 with JPA
    Java
    Linux
    프로그래머스
    데이터베이스
    Spring Security
    백준
    postgresql
    CS지식
    리눅스마스터 1급
    JPA
    리눅스
    backjoon
    pcce 기출문제
    자바
    스프링부트
    spring
    플러터
    Flutter
    programmers
    리눅스마스터
    Oracle
    시큐리티
    스프링
    springboot
    python
    baekjoon
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[SQLD] 2과목 – 3. 관리 구문
상단으로

티스토리툴바