SQL 기본


SQL의 종류

종류 설명 구문
DDL(Data Definition Language) 관계형 데이터베이스의 구조를 정의하는 언어 CREATE, ALTER, DROP, RENAME, TRUNCATE
DML(Data Manipulation Language) 테이블에서 데이터를 입력, 수정, 삭제, 조회 INSERT, UPDATE, DELETE, SELECT
DCL(Data Control Language) 데이터베이스 사용자에게 권한을 부여하거나 회수 GRANT, REVOKE
TCL(Transaction Control Language) 트랜잭션을 제어하는 명령어 COMMIT, ROLLBACK, SAVEPOINT

트랜잭션

데이터베이스의 작업을 처리하는 단위

특징

특징 설명
원자성(Atomicity) - 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 함
- 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 실행되지 않은 상태와 같아야 함
일관성(Consistency) - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함
- 트랜잭션 실행 후에도 일관성이 유지되어야 함
고립성(Isolation) - 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없음
- 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없음
영속성(Durability) 트랜잭션이 실행을 성공적으로 완료하면 그 결과는 영구적 보장

SQL 실행 순서

  • 파싱(Parsing): SQL문의 문법을 확인하고 구문을 분석함(구문 분석한 SQL문은 Library Cache에 저장)
  • 실행(Execution): 옵티마이저가 수립한 실행 계획에 따라 SQL 실행
  • 인출(Fetch): 데이터를 읽어서 전송

테이블 생성


기본적인 테이블 생성

Create Table EMP
(
  empno number(10) primary key,   // empno 최대 10자리 숫자로 기본키이다
  ename varchar2(20) not null,    // ename 최대 20자리의 가변 길이 문자로 공백 허용X
  sal number(6),                  // sal 최대 6자리 숫자
  createdate date default sysdate // createdate 날짜를 입력받으며 기본값으로 현재 날짜
)

제약조건


제약조건은 기본키, 외래키, 기본값, not null을 테이블을 생성할 때 지정할 수 있음

기본키 지정

constraint 키이름 primary key(키이름)

외래키 지정

constraint 외래키 foreign key(키이름) references 테이블(키이름)

CASCADE

CASCADE 옵션은 참조 관계가 있을 경우 참조되는 데이터를 자동으로 반영할 수 있음

constraint 외래키 foreign key(키이름) references 테이블(키이름) ON DELETE CASCADE

위의 쿼리문은 자신이 참조하는 테이블의 데이터가 삭제되면 자동으로 자신도 삭제되는 옵션

테이블 수정


ALTER TABLE문을 통해 테이블명 변경, 칼럼 추가, 변경, 삭제 등을 할 수 있다.

테이블명 변경

ALTER TABLE 기존테이블명 TO 새로운테이블명

칼럼 추가

ALTER TABLE 테이블명 ADD(칼럼명 자료형 조건)

칼럼 변경

ALTER TABLE 테이블명 MODIFY(칼럼명 자료형 조건)

칼럼 삭제

ALTER TABLE 테이블명 DROP COLUMN 칼럼명

칼럼명 변경

ALTER TABLE 테이블명 RENAME COLUMN 칼럼명 to 새로운칼럼명

테이블 삭제


DROP TABLE 테이블명

뷰(VIEW) 생성과 삭제


  • 뷰는 테이블로부터 유도된 가상의 테이블
  • 실제 데이터를 가지고 있지 않고테이블을 참조해 원하는 칼럼만을 조죄할 수 있음
  • 뷰는 데이터 딕셔너리(Data Dictionary)에 SQL문 형태로 저장하되 실행 시 참조됨

뷰의 특징

  • 참조한 테이블이 변경되면 뷰도 변경됨
  • 뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약이 있음
  • 특정 칼럼만 조회시켜 보안성을 향상시킴
  • 한번 생성된 뷰는 변경할 수 없고 변경을 원하면 삭제 후 재생성해야 함
  • ALTER문을 사용하여 뷰를 변경할 수 없음

생성

CREATE VIEW 뷰이름 AS SELECT * FROM 테이블

뷰의 조회는 SELECT문을 사용하여 일반 테이블처럼 조회함

삭제

DROP VIEW 뷰이름

장점

  • 특정 칼럼만 조회할 수 있기에 보안 기능이 있음
  • 데이터 관리가 간단
  • SELECT문이 간단해짐
  • 하나의 테이블에 여러 뷰를 생성할 수 있음

단점

  • 뷰는 독자적인 인덱스를 만들 수 없음
  • 삽입, 수정, 삭제 연산이 제약됨
  • 데이터 구조를 변경할 수 없음