SJ_Koding

SQLD 대비 (8) - SQL 문법 및 라이브러리_3 본문

SQL/SQLD

SQLD 대비 (8) - SQL 문법 및 라이브러리_3

성지코딩 2023. 11. 14. 17:27

 

 

SQLD 대비 (7) - SQL 문법 및 라이브러리_2

SQLD 대비 (6) - SQL 문법 및 라이브러리_1 SQLD 대비 (5) - 관계형 데이터베이스 (RDBMS) 과목 II 시작 ! 노랭이 책으로 과목 I을 모두 풀고 오답정리까지 마무리했다. SQLD 대비 (4) - 성능 데이터 모델링 및

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

DDL (테이블 조작)

  • 테이블또는 데이터베이스내 객체 등의 구조를 정의하는 명령
  • 구조를 생성하거나 변경 또는 삭제 할 떄 사용하는 명령
CREATE 데이터베이스의 객체를 생성
ALTER 생성된 객체의 구조를 변경
DROP 생성된 객체를 제거
TRUNCATE 테이블의 모든 데이터 삭제 및 초기화, 저장공간 반납

참고: https://wikidocs.net/4021

 

CREATE TABLE

  • 테이블을 생성하는 DDL문,
  • Primary key, foreign key, cheek 등 제약조건 정의 가능
  • 컬럼 및 데이터 타입 정의
CREATE TABLE EMPLOYEES_SALATY_D
(
	ID VARCHAR2(10) NOT NULL PRIMARY KEY,
    EMPLOYEES_ID VARCHAR2(10) NOT NULL REFERENCES EMPLOYEES (ID),
    NAME VARCHAR2(100),
    BONUS_TYPE VARCHAR2(3),
    SALARY NUMBER,
    BONUS NUMBER,
    REG_DT DATE
)

ALTER

  • 테이블이나 컬럼의 구조를 변경하는 명령
  • 제약조건을 추가 하거나 삭제 하는 명령
ALTER TABLE EMPLOYEES_SALARY_D RENAME COLUMN NAME to EMPLOYEE_NAME
ALTER TABLE EMPLOYEES_SALARY_D MODIFY BONUS_TYPE VARCHAR2(5) NOT NULL
ALTER TABLE EMPLOYEES_SALARY_D DROP PRIMARY KEY;
ALTER TABLE EMPLOYEES_SALARY_D ADD CONSTRAINT EMPLOYEES_EMPLOYEE_ID_FK FOREIGN KEY (ID) REFERENCES EMPLOYEES (EMPLOYEE_ID);

DROP

  • 테이블이나 특정 객체를 삭제하는 명령
  • 테이블내 데이터와 구조를 삭제
  • Cascade constraint 옵션은 종속된 제약조건도 모두 삭제
drop table 테이블명 (cascade constraint);

TRUNCATE

  • 테이블 구조는 남겨두고 내부의 데이터, 행만 삭제하는 명령어.
  • 테이블이 차지하던 저장공간을 반납 한다.
truncate table 테이블명;

 

VIEW

  • 뷰는 실제 데이터를 가지고 있지 않음.
  • Select SQL만 가지고 있다고 생각하면 됨.
  • 참조된 테이블이 변경되면 뷰의 결과도 변경 됨
CREATE VIEW 뷰명 as
	SELECT * FROM 테이블명 WHERE ...; /* SQL문 */
장점 - 보안에 적합하다.
- 단순하게 불러올 수 있다.
- 하나의 테이블로 여러 결과를 가진 뷰를 생성 할 수 있다.
단점 - 삽입, 갱신 등 연산이 제한적이다.
- 데이터 구조를 쉽게 변경할 수 없다.
- 인덱싱 하기 어렵다.

 

DML(테이블 내 데이터 조작)

  • 데이터베이스 내 데이터를 조회 하거나 입력, 수정, 삭제 하는 명령
SELECT 데이터를 주어진 조건에 맞게 조회하는 명령어
INSERT 데이터를 입력 및 저장 하는 명령어
UPDATE 데이터를 수정 하는 명령어
DELETE 행, ROW를 삭제 하는 명령어
/* 데이터 조회 */
SELECT ID, EMPLOYEE_NAME, ROUND(SALARY, 2) AS SALARY
FROM EMPLOYEES_SALARY
WHERE DEPT_CODE = '123';

/* 데이터 삽입 */
INSERT INTO EMPLOYEE VALUES ('A06', '독도', 'AA', 1200, 70); /* 전체 컬럼 삽입 */
INSERT INTO EMPLOYEE (ID, NAME, SALARY) VALUES ('A06', '독도', 1200);

/* 데이터 수정 */
UPDATE EMPLOYEE SET SALARY = 1150;

UPDATE EMPLOYEE SET SALARY = 1150
WHERE ID = 'A04';

UPDATE EMPLOYEE SET SALARY = 1150 + 50
WHERE BONUS_TYPE IS NOT NULL;

UPDATE EMPLOYEE SET SALARY = 1150 + 50
WHERE BONUS_TYPE IN ('AB', 'AC')

/* 테이블 행 삭제 */
DELETE FROM EMPLOYEE
HWERE ID = 'A04'

 

DCL (Data Control Language)

  • 데이터베이스 내 유저에 권한을 부여 하거나 회수 하는 명령어
GRANT 유저에게 권한을 부여하는 명령어
REVOKE 유저에게 권한을 회수하는 명령어

1. GRANT

  • 유저에게 각종 오브젝트 권한을 부여할 수 있는 명령어 
  • 시스템 권한으로는 DBA, CREATE SEESSION, CREATE USER, SYSDBA등이 있다.
  • 부여할 수 있는 오브젝트 권한의 종류는 다음과 같다.
ALTER 테이블을 수정 할 수 있는 권한
DELETE 삭제 할 수 있는 권한
ALL 특정 테이블에 대한 모든 권한
INDEX 인덱스를 생성할 수 있는 권한
INSERT 지정된 테이블에 대한 INSERT 권한
REFERENCED 지정된 테이블을 참조하는 제약조건을 생성할 수 있는 권한
SELECT 지정된 테이블을 SELECT 할 수 있는 권한
UPDATE 지정된 테이블을 UPDATE 할 수 있는 권한
CREATE USER MY_USER IDENTIFIED BY 1234
GRANT CREATE_SESSION TO MY_USER

2. ROLE

  • ROLE은 권한과 유저사이에 존재하는 개념으로, 다양한 권한을 역할에 따라 유저에게 부여 할 때 사용 할 수 있다.
  • 특정 ROLE은 여러 권한을 받아 놓고, 특정 유저에게 여러 권한들을 가진 ROLE을 부여함으로 간단하게 권한을 관리할 수 있다.

CREATE ROLE MY_ROLE
GRANT CREATE SESSION, CREATE TABLE TO MY_ROLE
GRANT MY_ROLE TO MY_USER;

3. TCL(Transaction Control Language)

이전 포스트와 내용 중복