DATA 분석 교육 과정 (2024.02~08)/SQL

SQL_DML(INSERT, UPDATE, DELETE), DDL(CREATE, ALTER, DROP, RENAME, TRUNCATE), 시퀀스, 뷰

글로리아-89 2024. 2. 28. 22:53
728x90
1. DML 이란

- 데이터 조작어 (Data Manipulation Language)

- 테이블에 원하는 데이터를 입력/수정/삭제한다.

 

2. INSERT

- 테이블에 새로운 데이터를 튜플(행) 단위로 입력

- INSERT INTO 테이블명 ( COLUMN_LIST ) VALUES ( COLUMN_LIST에 입력할 값 리스트)

[예시] 

INSERT INTO TB_CUST (

  CUST_ID

, CUST_NAME

, PASSWD

) VALUES (

 'HELLO'

 , '홍길동'

 , '12345'

) ;

 

3. UPDATE

   - 테이블에 있는 기존의 데이터를 변경

   - UPDATE 테이블명 SET 바꿀컬럼 = 바꿀값 WHERE 바꾸고싶은행조건 ;

   [예시]

 UPDATE TB_CUST

  SET CUST_NAME = '이름변경'

        , ACT_POINT = ACT_POINT + 200

 WHERE CUST_ID  = 'C0001' ;

 

4. DELETE

  - 테이블에 존재하는 데이터를 튜플(행) 단위로 삭제

  - DELETE FROM 테이블명 WHERE 삭제하고싶은행조건 ;

  [예시]

DELETE FROM TB_CUST_BADGE

WHERE CUST_ID = 'C0001'

    AND BADGE_ID = 'B001' ;


1. DDL 이란?

 - 테이블과 같은 객체를 생성/수정/삭제

 

2. CREATE

  - 새로운 객체(OBJECT) 를 생성할 때 사용하는 명령어

  - CREATE TABLE …테이블 생성
    CREATE USER … 사용자 계정 생성
    CREATE SEQUENCE … 시퀀스 생성
    CREATE VIEW … 뷰 생성

  [예시] 

CREATE TABLE QUIZ_TABLE (

  Q_ID NUMBER (3,0) NOT NULL ,  -- 3자리수 + 소수점 0자리/  꼭 입력되야 한다. 

  Q_CONTENT VARCHAR2(200) NOT NULL ,

  Q_ANSWER VARCHAR2(100) ,

   REG_DATE DATE DEFAULT SYSDATE --DATE를 입력하지 않으면 기본적인 SYSDATE로 입력하세요

) ;

** 테이블 생성정보는 SHIFT +F4

  

    - 테이블 생성시 이름규칙 주의사항

        • 대소문자 구분을 안합니다. ex) create table aaa .. => AAA 테이블생성
        • 중복되는 테이블명을 쓰면 안됩니다. Ex) create table aaa … => 에러! 기존 객체가 있습니다.
        • 테이블 내에서 컬럼명이 중복되면 안됩니다. Ex) => 에러! 열명이 중복되었습니

        • 문자로 시작 , 예약어는 사용 불가능 합니다. (a-z , A-Z , 0-9 , ㄱ-ㅎ , _ , $ , # 특수문자만 사용가능)

3. ALTER

    - 테이블을 잘못 만들어도 삭제할 필요없이 수정이 가능

    - ALTER TABLE  -   ADD 컬럼명

      ALTER TABLE  -   ADD CONSTRAINT 제약조건명 UNIQUE ( 컬럼 ) ;
      ALTER TABLE  -   DROP COLUMN 컬럼명
      ALTER TABLE  -  MODIFY 컬럼명
      ALTER TABLE  -  RENAME COLUMN 컬럼명

 

       1) ALTER TABLE 테이블명 ADD 컬럼명 자료형 [default] [not null ]

          - 테이블에 컬럼을 추가 

           [예시] TB_CUST 테이블에 “BIRTH_YEAR“ 컬럼을 문자형 8BYTE 길이로 추가

       ALTER TABLE TB_CUST ADD ( BIRTH_YEAR VARCHAR2(8));

       2)  ALTER TABLE  -   ADD CONSTRAINT  

         (1) PRIMARY KEY (PK) : NOT NULL + UNIQUE

              - 식별자 규칙을 물리적 모델링 한 것으로 NULL값 입력 불가, 중복 불가의 특징

              - 특정 컬럼을 식별자로 만들면 자동으로 NOT NULL + UNIQUE 성질로 바뀌게 됩니다.

              [예시]

               ALTER TABLE QUIZ_TABLE ADD CONSTRAINT PK_QUIZ_TABLE PRIMARY KEY( Q_ID ) ;

         

         (2) UNIQUE KEY(UK) : UNIQUE

             - PRIMARY KEY 와는 다르게 NULL 값을 입력할 수 있게 하며, 중복은 불가능합니다

            [예시]

              ALTER TABLE QUIZ_TABLE ADD CONSTRAINT UK_QUIZ TABLE UNIQUE ( Q_CONTENT ) ;

 

         (3) CHECK

           -   특정 컬럼에 데이터를 입력할 때 지정한 데이터만 입력할 수 있도록 한다. 

             [예시] TB_MEMBER 테이블의 DEL_YN 컬럼에 ‘Y‘ , ‘N‘ 값만 입력 가능

              ALTER TABLE TB_CUST ADD CONSTRAINT CK_DEL_YN CHECK (DEL_TN IN ('Y','N'));

 

         (4) FOREIGN KEY (FK) = 외래키

           - 테이블끼리 연결되어 있는 관계를 물리적 모델링한 것           

           - ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 FOREIGN KEY (참조받을컬럼) REFERENCES 참조할테이블(참조할컬럼)

            [예시] STUDENT_TEL 테이블의 [학생ID] 컬럼은 STUDENT 테이블의  [학생ID] 를 참조하고자 한다. 

 ALTER TABLE STUDENT_TEL ADD CONSTRAINT FK_STUDENT_FEL  FOREIGN KEY (학생ID) REFERENCES STUDENT ( 학생ID)

 

      3) ALTER TABLE  -   DROP COLUMN 컬럼명

- 테이블에서 컬럼을 삭제합니다.

[예시] TB_CUST 테이블에서  BIRTH_YEAR 컬럼을 삭제해주세요.

 ALTER TABLE_TB_CUST DROP COLUMN BIRTH_YEAR

       4)  ALTER TABLE  -  MODIFY 컬럼명

  - 테이블에서 컬럼 속성을 변경

[예시]  TB_CUST 테이블의 CUST_NAME 컬럼은 문자형 100BYTE를 200BYTE 까지 입력 받을 수 있도록 변경해주세요.

ALTER TABLE TB_CUST MODIFY (CUST_NAME VARCHAR2(200))

 

       5)  ALTER TABLE  -  RENAME COLUMN -- TO --

- 테이블에서 컬럼의 이름을 변경

[예시] STUDENT 테이블이 가지고 있는 학생ID 컬럼의 이름을 STUDENT_ID로 변경해주세요

ALTER TABLE STUDENT RENAME COLUMN 학생ID TO STUDENT_ID

 

4. DROP

   - 테이블을 영구 삭제합니다. 

   - CASCADE CONSTRAINT 옵션을 추가하면 관련 관계선(FK)도 모두 삭제합니다.  

   - DROP TABLE 테이블명

 

   [예시1] ALTER TABLE ~ ADD CONSTRAINT FOREIGN KEY (FK) 사용한 후 DROP시  실행X

 ALTER TABLE STUDENT_TEL ADD CONSTRAINT FK_STUDENT_FEL  FOREIGN KEY (학생ID) REFERENCES STUDENT ( 학생ID) ;

DROP TABLE STUDENT >>>> "오류"

  [예시1] DROP TABLE STUDENT CASCADE CONSTRAINT ;

5. DELETE, TRUNCATE, DROP 비교

   - DELETE  : 데이터 삭제, COMMIT 후 DELETE 하면 데이터 영구 삭제

   - TRUNCATE : 모든 데이터 영구 삭제 / 테이블은 유지

   - DROP: 모든 데이터 영구 삭제 / 테이블도 삭제


1. 시퀀스

   - PK 컬럼 등에 유일한 일련변호를 만들 때 사용

INSERT INTO TB_DEAL (  DEAL_ID

    , BUY_ID

   , PRD_ID

   , DEAL_DT

 ) VALUES ( 

   'D' || LPAD(SEQ_DEAL_ID.NEXTVAL , 7 , '0') 

   , 'C0006' 

   , 'P0001'

    , SYSDATE );

 

   1) 생성하기

 CREATE SEQUENCE TEST_SEQ

 INCREMENT BY 1  --증가할 시퀀스 값

 START WITH 1 ;  -- 1부터 시작

 

   2) 삭제하기 

DROP SEQUENCE TEST_SEQ

2. 뷰

    - 일종의 “가상테이블” 을 의미

    - 자주 사용하는 쿼리를 저장해 놓고 이용할 수 있어 편리하고 연산이 간편

    - 원하는 데이터만 보여줄 수 있게 해 보안 목적으로 사용할 수 있다

 

1. 생성하기

  - SYSTME 계정으로 뷰 생성 권한 필요

  - GRANT CREATE VIEW TO NTHNEW ; 입력

  - SELECT *

    FROM V_CUST_BADGE_COUT  --뷰 이름 입력

 

2. 삭제하기

   - DROP VIEW V_CUST_BADGE_COUT

728x90
반응형