본문 바로가기

개발/database

[DB] 테이블 생성과 관리

<CREATE TABLE>

table 이름 규칙 

1. 문자로 시작. 1~12byte 길이 가질 수 있다.

2. 이름은 영 대문자, 소문자, 숫자, _, $, # 만 포함 가능

3. 다른 객체 이름과 중복되면 안됨

4. 일반적으로 복수형이다. exmployees, departments...

5. 이름 대소문자는 구별하지 않는다. " "로 묶을 경우에는 대소문자 구별한다.

create table "Test"(c1 varchar2(1));

 

data type

 

create table

=(DDL) 테이블 생성. 

create table [schema.] 테이블명( 열이름 데이터타입, 열이름 데이터타입...);

 

ex) dept, emp table만들기

create table dept( deptno number(2), dname varchar2(14), loc varchar2(13));

create table emp
(
	empno number(4,0);
        ename varchar2(10),
        job varchar2(9),
        mgr number(4,0),
        hiredate date,
        sal number(7,2),
        comm number(7,2),
        deptno number(2,0)
);

 

서브쿼리로 테이블 생성

=CTAS(Create TAble As Select) 지정 테이블과 같은 구조를 갖는 테이블을 생성.

NOT NULL 제약조건 외 제약조건들은 복사 안된다.

create table 테이블명 as select 서브쿼리;

 

예제

create table emp2 as select * from employees;

 

<ALTER TABLE>

=테이블 구조 변경, 새로운 열 추가, 열 수정 등..


--열 수정
alter table 테이블명
modify (컬럼 데이터타입, 컬럼 데이터타입...);

 

🍏열 추가

=ADD로 열 추가, 새로운 열은 무조건 마지막 열이 된다.

--열 추가
alter table 테이블명
add (컬럼 데이터타입, 컬럼 데이터타입...);

예제

alter table emp_dept50
add (job varchar2(10));

select * from emp_dept50;--확인

 

🍏 수정

=MODIFY로 열 수정

데이터 타입의 크기는 얼마든지 늘릴 수 있지만(가능한 범위 내에서)

열의 크기 축소는 데이터를 손상시킬시 진행할 수 없습니다.

 

구조

--열 수정
alter table 테이블명
modify (컬럼 데이터타입, 컬럼 데이터타입...);

 

예제

--열 크기 변경
alter table emp_dept50
modify (first_name varchar2(30));

--열 크기 감소
alter table emp_dept50
modify (first_name varchar2(10));

 

🍏열 삭제

=drop column으로 열을 삭제. 되돌릴 수 없다.

구조

alter table 테이블명
drop column 컬럼;

예제

--drop column
alter table emp_dept50
drop column job_id;

--확인
desc emp_dept50;

 

🍏열 이름 변경

=rename column으로 열 이름 변경

구조

alter table 테이블명
rename column 예전이름 To 새이름;

예제

--change name
alter table emp_dept50
rename column job To jb_id;

--check
desc emp_dept50;

 

🍏SET UNUSED

set unused= 하나 이상의 열을 '사용되지 않았음'으로 표시

alter table 테이블명
set unused 열;

dorp unused=unused로 표시된 열 제거

alter table 테이블명 
drop unused columns;

 

예제

--unused로 설정
alter table emp_dept50 set unused (first_name);

--check
desc emp_dept50;

--drop unused columns
alter table emp_dept50 drop unused columns;

 

🍏객체 이름 변경

RENAME 옛이름 TO 새이름

 

<DROP TABLE>

=데이터와 구조 모두 삭제. 모든 인덱스 삭제. rollback 불가

cascade constraints=참조 제약조건 있는 열 포함해도 테이블 삭제

drop table 테이블명 [cascade constraints]

 

ex)

--drop
drop table emplyees_dept50;
--아래구문은 error날것이다.
desc employees_dept50;

 

<TRUNCATE>

=테이블 데이터 비우기.

구조는 남기고 데이터를 한꺼번에 지운다. rollback불가.

(delete는 한행씩 지워서 오래 걸리지만 rollback가능)

 

truncate table 테이블명;

 

예제)

truncate table emp2; --truncate
select * from emp2; --check

'개발 > database' 카테고리의 다른 글

[DB] View  (0) 2024.12.18
[DB] 제약조건  (0) 2024.12.18
[DB] Transaction  (0) 2024.12.18
[DB] 데이터 조작(DML)  (0) 2024.12.18
[DB] 서브 쿼리  (0) 2024.12.17