-
SQL - 데이터 정의어 (DDL)DataBase/Oracle 2023. 9. 4. 15:22
1. 객체를 생성, 변경, 삭제하는 데이터 정의어
- 데이터 정의어는 데이터 베이스 데이터를 보관하고 관리하기 위해 제공되는 여러 객체의 생성 변경 삭제와 관련 기능 수행
1.1 데이터 정의 사용시 유의점
- 데이터 정의어 실행시 자동으로 COMMIT되기 때문에 이전에 사용한 조작어가 영구 반영된다.
- 따라서 사용시 주의를 기울여야 한다.
CREATE: 객체 생성
ALTER : 객체 변경
DROP : 객체 삭제
2. 테이블을 생성하는 CREATE
- CREATE는 테이블 뿐 아니라 여러 객체를 생성할 수 있다.
CREATE TABLE 소유계정.테이블이름( 열이름 열자료형, 열이름 열자료형, 열이름 열자료형 )
- 소유계정을 생략하고 테이블을 생성하면, 현재 접속한 계정 소유의 테이블이 만들어진다.
* 테이블 이름 및 열 이름 생성 규칭 참고(312P ~ 313P)
2.1 자료형 각각 정의하여 새 테이블 생성하기
CREATE TABLE EMP_DDL( EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) );
2.2 기존 테이블 열 구조와 데이터 복사하여 새 테이블 생성하기
CREATE TABLE DEPT_DDL AS SELECT * FROM DEPT;
2.3 기존 테이블 열 구조와 일부 데이터만 복사하여 새 테이블 생성하기
CREATE TABLE EMP_DDL_30 AS SELECT * FROM EMP WHERE DEPTNO = 30;
2.4 기존 테이블의 열 구조만 복사하여 새 테이블 생성하기
-- DEPT와 EMP 조인한 결과로 테이블을 생성하는 CREATE문 CREATE TABLE EMPDEPT_DDL AS SELECT E.EMPNO, E.ENAME, E,JOB, E.MGR, E.HIREDATE, E.SAL, C.COMM, D.DEPTNO, D.DNAME, D.LOC FROM EMP E, DEPT D WHERE 1 <> 1;
* sql 디벨로퍼에 특정 테이블에 들어가서 sql탭을 클릭하면, 테이블 생성관련 sql이 있으니,
기존 테이블에서 조금 변경된 테이블을 생성해야할 때 써먹자
** CREATE로 테이블을 하나씩 만드는 경우는 엄청 많지는 않다. 하지만,
SQL 디벨로퍼 PC |(방화벽)| -> DB(AWS) <->자바(서버) [DB와 자바는 서로 소통가능]
- 간혹 DB가 SQL 디벨로퍼 같은 클라이언트 프로그램의 접속을 막아두는 경우가 있다.
- 이때는 1521포트가 아니라, DB(SSH)에 직접 접속하여 작업해야하는 경우가 있다. 이때는 하나씩 타이핑해서 테이블 만들어야 한다고 한다 (참고)
3. 테이블을 변경하는 ALTER
- ALTER 명령어는 이미 생성된 객체를 변경할 때 사용한다.
- 테이블에 새 열을 추가 또는 삭제하거나 열의 자료형 또는 길이 변경 등 테이블 구조 변경과 관련 기능 수행
3.1 ALTER를 이용한 테이블 열 변경
--테이블에 열추가 ALTER TABLE EMP_ALTER ADD HP VARCHAR2(20); --테이블 열 이름 변경 ALTER TABLE EMP_ALTER RENAME COLUMN HP TO TEL; --테이블 열 속성 변경 ALTER TABLE EMP_ALTER MODIFY EMPNO NUMBER(5); --테이블 열 삭제 ALTER TABLE EMP_ALTER DROP COLUMN TEL;
* ALTER를 통한 열변경은 툴을 통해 간단하게 해결할 수 있다.
3.2 테이블 변경
--테이블 이름변경 RENAME EMP_ALTER TO EMP_RENAME; --테이블 데이터 삭제 TRUNCATE TABLE EMP_RENAME; --테이블 삭제 DROP TABLE EMP_RENAME;
- TRUNCATE는 WHERE절을 명시하지않은 DELETE와 같은 결과가 나온다.
DDL이기때문에 롤백이 안된다는 차이점이 있다.
- DROP는 데이터베이스 객체를 삭제하는 데 사용한다. 테이블에 적용하면, 테이블이 삭제되므로, 저장된 데이터도 모두 삭제 된다.
'DataBase > Oracle' 카테고리의 다른 글
SQL 사용자,권한,롤 관리 (0) 2023.09.05 SQL - 제약 조건 (0) 2023.09.05 SQL - 트랜잭션 제어와 세션 (0) 2023.09.04 SQL - DML (0) 2023.09.01 오라클 sql - 인라인 뷰를 사용한 TOP-N SQL (0) 2023.09.01