ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (2) - DDL
    자격증/SQLD (SQL 개발자) 2021. 4. 30. 13:23
    728x90
    반응형

     

     

    SQLD 요약 / SQL Developer 요약

    🔑 DDL/ 테이블 생성/ Create Table/ constraint/ default/ not null/ primary key/ foreign key/ references/

           테이블 변경/ Alter Table/ 테이블 삭제/ Drop Table/ CASCADE 옵션/ 참조무결성/ 뷰(View)

     

     

    II. SQL 기본 및 활용

       01. SQL 기본

              [1] 관계형 데이터베이스

              [2] SQL 종류

              [3] DDL (Data Definition Language)

     

     



     

    01. SQL 기본

     

    [3] DDL (Data Definition Language)

    • 관계형 데이터베이스(Relation Database)는 릴레이션(Relation)에 데이터를 저장, 관리한다.
    • 릴레이션은 데이터베이스 관리시스템(DBMS)에서 테이블(Table)로 생성된다.
    • 그리고, 데이터베이스를 사용하기 위해서는 테이블을 먼저 생성해야 한다.

    • DDL은 관계형 데이터베이스의 구조를 정의하는 언어 = 테이블 생성&변경&삭제를 위한 언어이다.
    테이블 생성 테이블 변경 테이블 삭제
    Create Table Alter Table Drop Table
    - 새로운 테이블 생성
    - 기본키, 외래키, 제약사항 설정
    - 생성된 테이블 변경
    - 칼럼 추가, 변경, 삭제
    - 기본키, 외래키 설정
    - 해당 테이블 삭제
    - 데이터 구조, 저장된 데이터 모두 삭제

     

     


     

     

    (1) 테이블 생성 | Create Table

    • Create Table 문의 구조
    Create Table 칼럼 정보 데이터 타입 기본키 (PK)
    - 테이블 하나를 생성
    - Create Table 테이블명

    - ( ) 사이에 칼럼 입력
    - 마지막은 세미콜론 ;
    - 테이블에 포함시킬 칼럼의
      이름, 데이터타입 입력
    - 칼럼이름은 영문, 한글, 숫자
      모두 가능함
    - number: 숫자형 타입
    - varchar2: 가변길이 문자열
    - char: 고정된 크기의 문자열
    - date: 날짜형 타입
    - 칼럼 옆에 primary key
      입력하여 테이블의
      기본키를 지정
    Create Table STUDENT
    (
    	stdno number(10) primary key,
        stdname varchar2(20),
        stdgrade number(2)
    );

     

     

    • 제약조건 사용: 기본키, 외래키, 기본값, Not Null 지정
    # 외래키를 지정하려면, 마스터 테이블을 먼저 생성해야함
    # 학과 테이블 생성
    Create Table DEPT
    (
    	deptno varchar2(4) primary key,
        deptname varchar2(20)
    );
    
    # 학생 테이블 생성
    Create Table STUDENT
    (
    	stdno number(10),
        stdname varchar2(20),
        stdgrade number(2) default 1,
        stdschol number(10,2) default 0,
        createdate date default sysdate,
        deptno varchar2(4) not null,
        
        constraint stdpk primary key(stdno),	# 기본키 지정
        constraint deptfk foreign key(deptno)	# 외래키 지정
        		references dept(deptno)
    		ON DELETE CASCADE		# 참조 무결성 준수
    );
    기본값 설정 default stdgrade는 기본값을 1로 설정
    소수점 설정 number(10,2) stdschol number(10,2)는 소수점 둘째 자리까지 저장함
    날짜 설정 sysdate createdate 칼럼은 sysdate를 기본값으로 설정하여, 오늘 날짜 & 시분초를 조회해옴
    기본키 설정 primary key constraint로 기본키는 stdno로, 기본키 이름은 stdpk로 지정
    기본키 2개인 경우 constraint stdpk primary key(stdno, stdname)
    외래키 설정 foreign key constraint로 외래키는 deptno로, 외래키 이름은 deptfk로 지정
    references dept(deptno) STUDENT 테이블의 deptno 칼럼은 DEPT 테이블의 deptno 칼럼을 참조함
    ON DELETE CASCADE 참조하고 있는 테이블의 데이터가 삭제되면, 자동으로 자신의 데이터로 삭제됨 ⇒ 참조 무결성 준수

     

     

    • 테이블 생성 시 CASCADE 옵션 사용:
      - 참조관계(기본키-외래키 관계)가 있는 경우, 참조되는 데이터를 자동으로 반영할 수 있음

      - 이 옵션을 사용하여 참조 무결성을 준수할 수 있음

     


     

     

    (2) 테이블 변경 | Alter Table

    # (1) 칼럼 변경
    ALTER TABLE STUDENT
    	MODIFY (stdname varchar2(40) not null);
        
        
    # (2) 테이블 이름 변경
    ALTER TABLE STUDENT
    	RENAME TO NEW_STUDENT;
        
        
    # (3) 칼럼 추가
    ALTER TABLE STUDENT
    	ADD (age number(2) default 1);

     

    • 칼럼 변경 시, 변경할 수 있는 것들: 데이터 타입, 데이터 길이, 제약조건 설정
      - 기존 데이터가 있는데 데이터 타입을 변경하면 에러가 발생한다!
    테이블명 변경 ALTER TABLE ~ RENAME TO ~~ ;
    칼럼명 변경 ALTER TABLE ~ RENAME COLUMN ~ TO ~~ ;
    칼럼 추가 ALTER TABLE ~ ADD (~~) ;
    칼럼 변경 ALTER TABLE ~ MODIFY (~~) ;
    칼럼 삭제 ALTER TABLE ~ DROP COLUMN ~ ;

     

     


     

     

    (3) 테이블 삭제 | DROP TABLE

    DROP TABLE DEPT CASCADE CONSTRAINT;

     

    • DROP TABLE 문: 테이블 구조와 데이터를 모두 삭제

    • CASCADE CONSTRAINT 옵션:
      해당 테이블의 데이터를 외래키로 참조한 슬레이브 테이블, 관련된 제약사항까지 모두 삭제

     

     


     

     

    (4) 뷰 (View) | 테이블로부터 유도된 가상의 테이블

    • 뷰는 실제 데이터를 가지고 있지 않음
    • 테이블을 참조하여, 원하는 칼럼만 조회할 수 있게 함
    • 데이터 딕셔너리에 SQL문 형태로 저장하되, 실행 시에 참조됨
    # DEPT 테이블을 조회 >> T_DEPT라는 뷰를 생성
    CREATE VIEW T_DEPT AS
    	SELECT * FROM DEPT;
    뷰의 생성-조회-삭제 뷰의 특징
    뷰 생성: CREATE VIEW
    참조할 테이블은 SELECT문으로 지정
    - 참조한 테이블이 변경되면, 뷰도 변경됨
    - 한번 생성되면 변경할 수 없음 (삭제 후 재생성)
    뷰 조회: SELECT * FROM VIEW;
    일반 테이블처럼 SELECT문으로 조회
    - 뷰의 검색은 참조한 테이블과 동일하게 가능
    - 그러나 뷰에 대한 입력, 수정, 삭제에는 제약 있음
    뷰 삭제: DROP VIEW T_DEPT;
    뷰를 삭제해도 참조했던 테이블은 그대로!
    - 생성된 테이블은 ALTER문으로 변경 가능하지만,
      뷰는 ALTER문으로 변경할 수 없음!

     

    뷰의 장점 뷰의 단점
                           - 특정 칼럼만 조회 가능 ⇒ 보안성 향상↑                               - 독자적인 인덱스 생성 불가
                           - 데이터 관리, SELECT 문이 간단해짐                               - 삽입, 수정, 삭제 연산에 제약 있음
                           - 하나의 테이블의 여러 뷰를 생성 가능                               - 데이터 구조 변경 불가

     

     


     

    참고도서: SQL 개발자 이론서+기출문제_이기적, 2020

     

     

     

    728x90
    반응형