[SQL요점정리#4] 데이터 정의하기
SQL의 분류
: 4가지 종류로 나뉜다
- DML : 데이터 조작어 (SELECT, INSERT, UPDATE, DELETE)
- DDL : 데이터 정의어 (CREATE, DROP, ALTER, TRUNCATE)
- DCL : 데이터 제어어 (GRANT, REVOKE)
- TCL : 트랜잭션 처리어 (COMMIT, ROLLBACK, SAVEPOINT)
**SQL에서는 이렇게 부른다
튜플 = ROW = 행
Attribute = COLUMN = 속성 = 열
릴레이션 = Table
DDL
데이터 베이스 객체를 생성할 때 사용 사용하면 확정(COMMIT) = LOLBACK 이안됨 이다.
**Oracle에서만 자동 commit이고, sql server에서는 자동이 아니다..
CREATE TABLE : 테이블 생성
컬럼이름을 지을 때는..
- 다른 테이블과 중복은 불가능
- 테이블명과, 컬럼명은 문자로 시작해야한다
- 특수기호는_,$,# 만 허용된다
*꼭! 알아야하는 데이터 타입
VARCHAR2(n) : 가변길이 문자열
CHAR(n) : 고정길이 문자열
NUMBER : 실수와 정수 함께 사용
DATETIME : 날짜
제약조건
: 데이터 타입뒤에는 다음과 같은 제약조건을 붙여준다
customer_id VARCHAR2(20) NOT NULL
customer_id(컬럼)를 길이가 최대 20인 가변 길이 문자열 데이터로 하고, NULL을 허용하지 않음
customer_id INT DEFAULT 0
customer_id(컬럼)를 정수형으로 하고, 입력된 customer_id가 없다면 0이 기본으로 저장되도록 함
PRIMARY_KEY(customer_id)
customer_id(컬럼) 을 기본키로 지정
** 기본키는 중복불가(UIQUE) 와 NULL값 불가 (NOT NULL)의 제약조건을 합쳐논 것과 같다.
UNIQUE(customer_id)
customer_id을 대체키로 지정 ( NULL가능, 중복불가)
CHECK(stock >= 0 AND stock <=1000)
stock(컬럼)은 항상 0개 이상, 1000개 이하로 함 (조건걸어주기)
ALTER TABLE : 테이블 수정하기
TRUNCATE TABLE : 테이블 데이터 만 삭제하기 (롤백 불가능)
** ORACLE DDL은 자동으로 COMMIT되기 때문에,, ROLLBACK이 불가능하고 롤백불가능한 DELETE라고 생각..
TRUNCATE DROP : 테이블 구조 자체를 삭제하기 (롤백 불가능)
DML
SELECT(SELECT FROM WHERE GRUPBY ORDER BY)
테이블이나 뷰에 있는 데이터를 조회
where (조건)
group by (그룹)
order by (정렬)
INSERT (INSERT VALUES)
행 추가하기
UPDATE (UPDATE SET WHERE)
데이터 수정
DELETE (DELETE WHERE)
데이터 삭제
DCL
GRANT : 권한 할당
REVOKE : 할당된 권한 해제
TCL
COMMIT : 변경된 내용 영구저장 (이걸 하지 않으면 LOCK이 걸려서 다른사람들이 접근이 불가능 하다.)
** insert delete update를 하게되면 COMMIT 은 무조건 하자구!!! (그전에 확인은 필수다)
ROLLBACK : 변경되기 이전 상태로 되돌림