본문 바로가기
이론/DB

[무조건 따라해보기] TABLE

by 6161990 2021. 5. 26.

 TABLE

  • CREATE TABLE 테이블명(컬럼명 자료형 제약조건, 컬럼명 자료형 제약조건)
  • CHAR(SIZE) : 고정 길이 문자열 타입
  • VARCHAR2(SIZE) : 가변 길이 문자열 타입
  • NUMBER : 최고 40자리까지 저장할 수 있는 숫자 타입
  • DATE : 날짜
  • LONG : 가변 길이 문자열 타입, 최대 2Gbyte

 

 

CREATE TABLE EMP (

EMPNO NUMBER(10) CONSTRAINT EMPNO_PK PRIMARY KEY,

ENAME VARCHAR2(20),

JOB VARCHAR2(20),

MGR NUMBER(10), HIREDATE DATE default sysdate,

SAL NUMBER(10),

COMM NUMBER(10),

DEPTNO NUMBER(10)

);

 

 

 


📍 서브쿼리로 테이블 만들기

CREATE TABLE 테이블명 AS 서브쿼리

 

--서브쿼리로 테이블 구조 복사해 테이블 만들기

CREATE TABLE EMP02 AS SELECT EMPNO, ENAME, JOB FROM EMP01 WHERE 1=0;

SELECT * FROM EMP02;

 

 

--테이블 데이터 복사 (컬럼이름이 같지 않아도됨, 순서만 지켜주면 OK)

INSERT INTO EMP02(EMPNO, ENAME, JOB) SELECT EMPNO, ENAME, JOB FROM EMP;

SELECT * FROM EMP02;

 

 

 

--30번 부서에 근무하고 있는 사원들의 사원번호, 이름, 근무부서 이름을 가지고 있는 테이블을 생성한다

CREATE TABLE EMP03

AS SELECT A1.EMPNO, A1.ENAME, A2.DNAME

FROM EMP A1, DEPT A2

WHERE A1.DEPTNO = A2. DEPTNO AND A1.DEPTNO =30;

 

 

 

--각 부서별 급여 총합, 평균, 최고액, 최저액, 사원수를 가지고 있는 테이블을 생성하시오

--ERROR. WHY? 그룹함수를 통해 DATA를 가져왔지만 그 DATA를 저장할 컬럼이 없기 때문에 테이블 생성 불가

CREATE TABLE EMP 04

AS

SELECT SUM(SAL), TRUNC(AVG(SAL)), MAX(SAL), MIN(SAL), COUNT(SAL)

FROM EMP

GROUP BY DEPTNO;

 

--별칭을 부여해야한다

CREATE TABLE EMP 04

AS SELECT SUM(SAL) AS SUM, TRUNC(AVG(SAL)) AS AVG,

MAX(SAL) AS MAX, MIN(SAL) AS MIN, COUNT(SAL) AS COUNT

FROM EMP

GROUP BY DEPTNO;

 

 


📍 테이블 구조 변경하기

  • ALTER 구문을 이용하면 테이블 구조를 변경할 수 있다.
  • ALTER TABLE[테이블명] ADD (컬럼명 자료형 제약조건)
  • ALTER TABLE[테이블명] MODIFY (컬럼명 자료형 제약조건)
  • ALTER TABLE[테이블명] RENAME TO [테이블명]
  • ALTER TABLE[테이블명] RENAME COLUMN 컬럼명1 TO 컬럼명2
  • ALTER TABLE[테이블명] DROP COLUMN 컬럼명
  • DROP TABLE[테이블명]

CREATE TABLE TEST_TABLE20(

DATA1 NUMBER NOT NULL,

DATA2 NUMBER NOT NULL );

 

--컬럼 추가

ALTER TABLE TEST_TABLE1 ADD(DATA3 NUMBER NOT NULL);

 

--컬럼의 데이터 타입 변경

ALTER TABLE TEST_TABLE1 MODIFY (DATA3 VARCHAR2(100));

 

--테이블 이름 변경

ALTER TABLE TEST_TABLE1 RENAME TO TEST_TABLE2;

 

--컬럼 이름 변경

ALTER TABLE TEST_TABLE1 RENAME RENAME COLUMN DATA3 TO DATA4;

 

--컬럼 삭제

ALTER TABLE TEST_TABLE1 DROP COLUMN DATA4;

 

--테이블 삭제

DROP TABLE TEST_TABLE1;