SQL

DDL : 테이블 구조 생성,수정,삭제

hihijh826 2023. 12. 19. 17:04
728x90
반응형
SMALL


[create table]

 -데이터형
CHAR(size) : 고정 길이 문자 데이터. 입력된 자료의 길이와 상관없이
정해진 길이만큼 저장 영역 차지
VARCHAR2(size) :  가변 길이 문자 데이터. 실제 입력된 문자열의 길이 만큼 저장 영역을 차지. 최대 크기 명시 
NUMBER : 최고 40자리까지의 숫자 저장 가능
NUMBER(W): w자리까지의 수치로 최대 38자리까지 가능
NUMBVER(w,d) : w는  전체 길이, d는 소수점 이하 자릿수


1. 테이블 생성 CREATE TABLE

1) 테이블 생성하기


CREATE TABLE table_name
(column_name, data_type expr,.);

사원번호 , 사원이름,. 급여 3개의 칼럼으로 구성된 테이블 생성

CREATE TABLE EMP01(
EMPNO NUMBER(4),
ENAME VARCAHR2(20),
SAL NUMBER(7,2));




** 2) 서브 쿼리로 테이블 생성하기
: 이미 존재하는 테이블과 동일한 구조와 내용을 갖는 새로운 테이블 생성( 데이터도 복사)

 

컬럼을 일일이 정의하는 대신 AS절을 이용해 이미 존재하는 테이블과 동일한 구조와 내용을 갖는 테이블 생성
create table em02
as
select * from emp;




**3) 원하는 컬럼으로 구성된 복제 테이블 생성
: 기존 테이블에서 원하는 컬럼만 선택적으로 복사해서 생성 가능

CREATE TABLE EMP03
AS
SELECT EMPNO, ENAME FROM EMP;



4) 원하는 행으로 구된 복제 태이블 생성
: 기존 테이블에서 원하는 행만 선택적으로 복사해서 생성가능

CREATE TABLE EMP05
AS
SELECT * FROM EMP //모든 열을 선택 
WHERE DEPTNO=10; //원하는 행만 복사



5)테이블의 구조만 복사
: 서브쿼리를 이용하여 테이블을 복사하되 데이터는 복사하지 않고 기존 테이블의 복사하는 것

CREATE TABLE EMP06
AS
SELECT * FROM EMP WHERE 1=0;
// WHERE 1=0;조건은 항상 거짓. 이를 이용해 테이블의 데이터는 복사하지 않고 구조만 복사




2. 테이블 구조 변경 ALTER TABLE (ADD,MODIFY,DROP)

1) 새로운 칼럼 추가
ALTER TABLE ADD
: 기존 테이블에 새로운 컬럼을 추가 
- 테이블 맨 마지막에 추가
- 이전에 추가해 놓은 로우가 존재시 그 로우에도 컬럼이 추가되지만,
컬럼 값은 NULL 값으로 입력

ALTER TABLE TABLE_NAME
ADD ( COLUMN_NMAE, DATA_TYPE EXPR, ...);

 

직급 칼럼 추가
ALTER TABLE EMP01
ADD(JOB VARCHAR2(9));



2)기존 칼럼 속성 변경
- 컬럼에 대해서 데이터 타입이나 크기, 기본 값들을 변경한다는 뜻 

ALTER TABLE TABLE_NAME
MODIFY (COLUMN_NAME, DATATYPE EXPR,...);

 

직급 칼럼을 최대 30글자까지 저장할 수 있도록 변경
ALTER TABLE EMP01
MODIFY(JOB VARCHAR2(30));




3) 기존 칼럼 삭제 (특정 부분만 삭제) 


ALTER TABLE TABLE_NAME
DROP COLUMN COLUMN_NAME;

 

직급 컬럼 삭제
ALTER TABLE EMP01
DROP COLUMN JOB;





3. 테이블 구조 삭제  (기존 테이블 제거)


DROP TABLE TABLE_NAME;

 

DROP TABLE EMP01;

 

 

**

이미 사용하던 테이블과 동일한 테이블을 만들려면 DROP TABLLE 로 테이블 삭제 후
기존에 있던 부서 테이블과 동일한 구조를 갖되 데이터는 복사하지 않은 브서테이블 생성

DROP TABLE DEPT01;

CREATE TABLE DEPT01
AS 
SELECT * FROM DEPT WHERE 1=0;


4. 테이블의 모든 로우 제거


TRUNCATE TABLE_NAME;

 

테이블의 모든 로우(행) 제거
TRUNCATE TABLE EMP02;



5. 테이블 명 변경 



RENAME OLD_NAME TO NEW_NAME


728x90
반응형
LIST