[Oracle] 오라클 SQL (DML, DDL, DCL, TCL)
SQL
DML - Data Manipulation Language (데이터 조작)1) SELECT (데이터 검색)2) INSERT (데이터 추가)형식)1. 전체 추가INSERT INTO table_name VALUES(값, 값..)2. 원하는 데이터만 추가INSERT INTO table_name(컬럼명, 컬럼명..) VALUES(값, 값..)3. 다른 테이블에 있는 데이터 전체를 추가INSERT INTO table_name SELECT * FROM table_name4. 같은 데이터를 여러 테이블에 저장INSERT ALL컬럼갯수보다 적은 데이터갯수를 추가할때는 들어갈 값의 컬럼명을VALUES앞에 명시해줘야 한다. 그렇지않고 데이터를 컬럼명보다부족하게 전달하면 에러가 발생한다. not enough valuesex) 컬럼3개를 갖고있는 테이블 => 컬럼명1, 컬럼명2, 컬럼명3INSERT INTO table_name(컬럼명, 컬럼명) VALUES( 데이터, '데이터');추가 결과 => 데이터, '데이터', (null)3) UPDATE (데이터 수정)형식)UPDATE table_name SET 컬럼명=변경할값, 컬럼명=변경할값.. [ WHERE 조건 ]4) DELETE (데이터 삭제)형식)DELETE FROM table_name [ WHERE 조건 ]5) MERGE (데이터 병합): 데이터 추가, 변경 할때마다 COMMIT 하기.테이블 생성, 삭제, 데이터 삭제 관련된 명령어는 자동 저장.COMMIT 안하면 가상메모리에 저장되어 프로그램을 껏다키면 적용되어있지 않는다.=====================CRUD
DDL - Data Definition Language (데이터 선언)1) CREATE : 데이터를 저장하는 공간 제작 (TABLE: 파일)TABLE, VIEW, SEQUENCE, INDEX, PL/SQLPL/SQL => PROCEDURE, FUNCTION, TRIGGER1. CATS : 복사(기존에 존재하는 테이블을 복사)CREATE TABLE table_name ASSELECT ~ FROM WHERE true / false**WHERE조건절이 true이면 테이블전체 복사**WHERE조건절이 false이면 데이터를 제외한 컬럼만 복사2. 새로운 테이블 제작(데이터 저장하는 공간)CREATE TABLE table_name(컬럼명 데이터형 [제약조건(여러개 사용 가능)],컬럼명 데이터형 [제약조건(여러개 사용 가능)],컬럼명 데이터형 [제약조건(여러개 사용 가능)]);제약조건으로 NOT NULL, DEFAULT 작성 가능.2) DROP : 삭제(TABLE을 자체 삭제)형식) DROP TABLE 삭제할 테이블명;3) ALTER : 수정, 삭제, 추가(컬럼관련)형식) ALTER TABLE table_name ADD 컬럼명 데이터형 (컬럼 추가)ALTER TABLE table_name DROP COLUMN 컬럼명 (컬럼 삭제)ALTER TABLE table_name MODIFY COLUMN 컬럼명 데이터형 (컬럼 수정)ALTER TABLE table_name RENAME COLUMN 이전 컬럼명 TO 변경컬럼명4) TRUNCATE : 데이터만 삭제형식) TRUNCATE TABLE table_name;5) RENAME : 테이블 이름 변경형식) RENAME 이전 테이블명 TO 변경할 테이블명*** 읽기 전용 테이블 (SELECT 문장만 사용 가능)형식) ALTER TABLE table_name read only;
DCL - Data Control Language (데이터 제어) 1) GRANT : 권한부여
2) REVOKE : 권한 해제
TCL - Transaction Control Language (트랜잭션) 1) COMMIT : 저장
2) ROLLBACK : 취소, 복구(뒤로가기)
테이블 생성시 필요한 요소
1. 테이블명은 반드시 문자로 시작
2. 숫자는 사용이 가능한데 맨 앞에 사용 불가
3. 알파벳, 한글도 가능 되도록 알파벳 사용(한글 => 깨질 수 있다.)
4. 대소문자 구분은 없다 => 오라클에 저장시에 대문자로 저장된다.
5. 테이블, 컬럼명 저장길이 30byte, 한글(15byte)
6. 테이블명은 중복해서 만들 수 없다 (XE) (유일) XE는 기본 테이블명이다.
7. 키워드는 사용 할 수 없다. (SELECT, FROM..)
*테이블명, 컬럼명이 동일할 수 있다.
8. 빈 줄을 만들면 안된다.
9. 바뀌기 쉬운부분은 NUMBER사용하기 VARCHAR2(문자형)으로는 증감을 표현하기 힘들다. ex) 관람객, 평점 등등
10. 테이블에 값이 안들어올경우 DEFAULT로 기본값을 지정해 저장할 수 있다. (null값 방지)
테이블 복사
CREATE TABLE 테이블명1 AS SELECT * FROM 테이블명2
CREATE TABLE 테이블명3 AS SELECT 컬럼명1, 컬럼명2, 테이블명1.컬렴명3....
FROM 테이블1, 테이블2
WHERE 테이블명1.column1, 테이블명12.column1
테이블명1.컬럼명3은 공통된 컬럼명이기때문에 테이블을 명시해준것이다.
ex)
CREATE TABLE dept_name AS SELECT * FROM dept WHERE 1=2;
( WHERE 조건이 FALSE이면 테이블 틀만 복사(컬럼(명)만 복사))
CREATE TABLE dept_name AS SELECT * FROM dept WHERE 1=1;
( WHERE 조건이 TRUE이면 테이블+데이터 복사)
사용자 정의 데이터형
오라클에서 제공하는 데이터형
= 문자 저장
CHAR (1byte ~ 2000byte) : 고정 바이트
CHAR(10) => 'A' => 10byte
메모리 낭비 발생이 발생할 수 있으므로 글자수가 동일할때 주로 설정
ex) 성별(남자, 여자)
VARCHAR2 (1byte ~ 4000byte) : 가변 바이트
VARCHAR2(10) => 'A' => 1byte
글자수가 작성된 만큼의 메모리만 가변적으로 할당
VARCHAR2(34) => 한글 17자 (한글 2byte)
CLOB (4G): 가변 바이트
4기가 저장이 가능 => 내용, 줄거리, 자기소개
= 숫자 저장
NUMBER(정수) : 실제 정수 => NUMBER(4) => (1~9999)
NUMBER(정수, 실수) => 실수 => NUMBER(10, 2) 소수점 2자리까지 저장
NUMBER => 자리수 14자리
= 날짜 저장
DATE : 일반 날짜, 시간
TIMESTAMP : 기록 경기(올림픽...)
= 기타 저장 : 동영상, 사진 등등 ( 4G )
BLOB : 사진, 동영상... 바이너리로 저장
BFILE : 사진, 동영상... File 형태로 저장
댓글
댓글 쓰기