ABOUT ME

Today
Yesterday
Total
  • SQLD[요약정리(3)05/05~05/28]
    자격증/sqld 2022. 5. 10. 19:36

    3장. 관계형 데이터베이스 

      -데이터베이스 : "특정기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장한 것"

      

    ★ SQL: SQL은 관계형데이터베이스에서 데이터 정의, 데이터 조작, 데이터제어를 하기 위해 사용하는 언어

    - 데이터조작어(DML) - SELECT, INSERT, UPDATE, DELETE(NOT AUTO COMMIT)

    - 데이터정의어(DDL) - CREATE, ALTER, DROP, RENAME(AUTO COMMIT)

    - 데이터제어어(DCL) - GRANT, REVOKE

     - 트랜잭션제어어(TCL) - COMMIT, ROLLBACK

    ★트랜잭션 

      -트랜잭션은 데이터베이스의 작업을 처리하는 단위이다.

      -하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다.

      -트랜잭션은 분할할 수 없는 최소의 단위이다. 그렇기 때문에 전부 적용하거나 전부 취소한다.  

      *트랙잭션의 특성 4가지  

       ‒    원자성(Atomicity): 전부 실행되거나 전혀 실행되지 않음 (All or Nothing)

       ‒    일관성(Consistency): 트랜잭션으로 인한 DB 상태의 모순이 없음

       ‒    고립성(Isolation): 부분적인 실행 결과에 다른 트랜잭션이 접근할 수 없음, LOCKING으로 고립성 보장

       ‒    영속성(Durability): 트랜잭션의 결과는 영구적으로 저장됨

     

    ★DDL

      1.데이터 타입

       -CHAR

       -VARCHAR2

       -NUMBER(L,D)

       -DATE, DATETIME :날짜형, 데이터 크기 지정이 필요하지않음

      2. CREATE TABLE

      -테이블 및 컬럼 명명 규칙

      -1)알파벳 2)숫자 3)'-'(언더바) 4)$(달러)

    *제약 조건

     -primary key :테이블 당 하나의 기본키만 정의 가능 (unique&NOT NULL)

     -foreign key(외래키):다른 테이블의 기본키를 외래키로 지정,참조 무결성 제약조건

     -unique key :행 데이터를 식별하기 위해 생성함, NULL 가능

     -default : 'default 값'으로 기본값 설정 

     

    1.ALTER TABLE : 테이블 컬럼 관련 변경 명령어

    -컬럼 추가 : ALTER TABLE 테이블명 ADD (컬럼명 데이터 타입)
    -컬럼 삭제 : ALTER TABLE 테이블명 DROP COLUMN 컬럼명(삭제후 복구 불가)

    -컬럼 설정 변경 : ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입 제약조건)

    -컬럼명 변경 : ALTER TABLE 테이블명 RENAME COLUMN 컬럼명

    -제약조건 추가 : ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건

    -제약조건 제거 : ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건

     

    2.DROP TABLE 

      -테이블의 데이터와 구조 삭제 ,복구불가

      -CASCADE CONSTRAINT 옵션으로 관련 테이블의 참조 제약조건도 삭제하여 참조 무결성을 준수할수 있음

    3.TRUNCATE TABLE 

      -테이블 전체 데이터 삭제(<->DROP TABLE은 테이블 자체를 제거함)

      -로그를 기록하지 않기 때문에 ROLLBACK 불가

    ★DML

      -INSERT: 데이터 입력                                       SQL>> INSERT INTO 테이블명 (칼럼명, …) VALUES (필드값, …);

      - INSERT INTO 테이블명 VALUES (필드값, …);

       -UPDATE: 데이터 수정                                     SQL>> UPDATE 테이블명 SET 칼럼명=필드값;

       -DELETE: 데이터 삭제                                   SQL>> DELETE FROM 테이블명 WHERE 조건절;

                                                                        SQL>> DELETE FROM 테이블명;

    4. 문자열의 합성 연산자: +(플러스),CONCAT 함수로도 2개 문자열 합성가능,ORACLE 에서는 ||도 가능

    5. DUAL : Oracle의 기본 더미 테이블, 연산 수행을 위해 사용됨

    *DISTINCT:중복시 1회만 출력 (성능 안좋아짐)

    ★DCL

     -DCL: 유저를 생성하거나 권한을 제어하는 명령어, 보안을 위해 필요함

     -GRANT: 권한 부여        SQL>> GRANT 권한 ON 오브젝트 TO 유저명;

     -REVOKE: 권한 제거       SQL>> REVOKE 권한 ON 오브젝트 TO 유저명;

    2. 권한(Privileges)

      -SELECT, INSERT, UPDATE, DELETE, ALTER, ALL : DML 관련 권한

       -EFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한

       -INDEX : 지정된 테이블에서 인덱스를 생성하는 권한

    3.  Oracle의 유저

     -SCOTT: 테스트용 샘플 유저

     -SYS: DBA 권한이 부여된 최상위 유저

     - SYSTEM: DB의 모든 시스템 권한이 부여된 DBA

    4. ROLE: 권한의 집합, 권한을 일일이 부여하지 않고 ROLE로 편리하게 여러 권한을 부여할 수 있음

    ★TCL

    1.  TCL: 데이터 무결성 보장을 목적으로 함, 1) 영구 변경 전 확인과 2) 연관 작업 동시처리 가능

       -Oracle1) SQL 문장을 실행하면 트랜잭션이 시작되고 2) TCL을 실행하면 트랜잭션이 종료됨

       -DDL을 실행하면 자동 커밋 (DML 이후 커밋 없이 DDL을 실행해도 자동 커밋)

       -DB를 정상적으로 종료하면 자동 커밋, 애플리케이션 등의 이상으로 DB 접속이 단절되면 자동 롤백

    2. COMMIT: 데이터를 DB에 영구적으로 반영하는 명령어, 커밋 시 트랜잭션이 완료되어 LOCKING이 해제됨, SQL Server은 기본적으로 자동 커밋

     

     1. COMMIT

     

    데이터 변경이 메모리 버퍼에만 영향을 받았기 때문에 복구 가능 (NOLOGGING 옵션 사용 시 버퍼 캐시의 기록을 생략하여 입력 성능이 향상됨)

    사용자는 SELECT절로 결과를 확인할 수 있으나 다른 사용자는 현재 결과를 볼 수 없음

      변경된 행에 LOCKING이 설정되어 다른 사용자가 변경할 수 없음 (LOCKING이 안 걸린 상태일 때 여러 사용자가 데이터를 변경하면 상관없음)

     

     2. COMMIT

     

    변경 사항이 DB에 반영되고 이전 데이터는 복구 불가

    모든 사용자가 결과를 볼 수 있음

    LOCKING이 해제되어 다른 사용자가 행을 조작할 수 있음

    3. ROLLBACK: 트랜잭션 시작 이전의 상태로 되돌리는 명령어, COMMIT 이전 상태로 돌려줌, ROLLBACK LOCKING이 해제됨

      -SAVEPOINT: 트랜잭션 일부만 롤백 할 수 있도록 중간상태를 저장하는 명령어, ‘ROLLBACK TO 저장점명시 해당 저장점 상태로 돌려줌, 동일한 저장점명이 있으면 나중 저장점이 유효함

      -SQL Server에서는 BEGIN TRAN으로 명시해야 가능함

    '자격증 > sqld' 카테고리의 다른 글

    sqld 30회 기출 오답정리(1)  (0) 2022.05.18
    sqld[빈출 개념 복습05/05~05/28]  (0) 2022.05.17
    SQLD[요약정리(4)05/05~05/28]  (1) 2022.05.13
    SQLD[요약정리(2)05/05~05/28]  (0) 2022.05.09
    SQLD[요약정리05/05~05/28]  (0) 2022.05.05
Designed by Tistory.