본문 바로가기
DBMS

TABLE만들기 & DDL언어

by 바다의 공간 2025. 1. 20.

데이터를 입력받을 공간을 하나 만드는 것

 

 DDL 언어 -CREATE (데이터베이스 또는 테이블을 생성하는 문법) 
-ALTER (테이블,데이터베이스를 수정하는 문법)
-DROP (테이블,데이터베이스를  삭제하는 문법)
-TURNCATE (테이블,데이터베이스를 삭제하는 문법)
(DELETE랑 비슷한데, TRUNCATE는 일괄삭제만됨, DELETE는 복원이 가능)

 

📒 CREATE TABLE 테이블명(

               컬럼명 자료형 [제약조건]

                ;)

 

↑ 위 로직이 문법

 

CREATE TABLE EMPLOYEES (

    EMPLOYEE_ID NUMBER,

    FIRST_NAME VARCHAR2(100),

    LAST_NAME VARCHAR2(100)

    ;

EM테이블을 만들거고 ID컬럼은 숫자로 받을것, VARCHAR2는 100자 제한으로 만든다.

라는 테이블 제작명령어이다.


 

🤷‍♂️ TABLE(컬럼도 거의 유사하게 동일함)생성시 주의사항

A. 테이블 이름은 영문자로 시작해야한다.

B. 테이블명은 영문자, 숫자, 특수문자($#_)만 사용할 수 있다.

C.  테이블 명은 중복이 될 수 없고 유일해야한다.

D. 테이블명은 30자를 초과할 수 없다.

E. SQL 예약어를 사용할 수 없다.

->SELECT "SELECT" 로 사용은가능하지만 절대 권장하지않음

F. 테이블명은 한글도 사용할 수 있다.

->한글로는권장하지않음

 


🤷‍♂️ DROP

DROP : 테이블을 삭제하는 문법

 

DROP TABLE 테이블명;


🤷‍♂️ TRUNCATE 

TRUNCATE : 테이블 내의 데이터를 삭제하는 문법

A.  WHERE절을 사용하지 못한다.

B. TRUNCATE TABLE 테이블명;


🤷‍♂️ ALTER  

ALTER : 테이블을 수정하는 문법 / 테이블의 구조를 변경함

 

* 공통문법 : ALTER TABLE 테이블명 <- 불변의 진리로 그대로 따라감

테이블 이름을 수정 RENAME TO 새로운 테이블명;
테이블 컬럼을 추가 ADD (새로운 컬럼명 자료형(용량));
테이블 컬럼명 변경 RENAME COLUMN 기존 컬럼명  TO 새로운컬럼명;
테이블 컬럼TYPE 수정 MODIFY (기존컬럼명 자료형(용량));
테이블 컬럼명 삭제 DROP COLUMN 기존컬럼명;

 

EX ) 

ALTER TABLE 테이블명 RENAME TO 새로운 테이블명;

ALTER TABLE EMPLOYEES RENAME TO EMPLOTEES2;


TABLE 실습

CREATE TABLE TBL_USER(

USER_NAME VARCHAR2(100),

USER_AGE NUMBER

); 을 하게되면 TABLE이 나와야되는데 좌측에 리스트에는 바로보이지않을수있다.

그럴경우는 FOLDER -> F5를 누르면 확인할 수 있습니다.

 

 

TABLE이름 수정해보기

--테이블 이름 수정해보기

ALTER TABLE TBL_USER RENAME TO TBL_MY_USER;

SELECT * FROM HR.TBL_MY_USER;

 

--테이블 이름 변경

ALTER TABLE TBL_USER RENAME TO TBL_MY_USER;

SELECT * FROM HR.TBL_MY_USER;

 

--새로운 컬럼 만들기

ALTER TABLE TBL_MY_USER ADD (USER_GRENDER CHAR(4));

 

--만든 컬럼 그대로 삭제하기

ALTER TABLE TBL_MY_USER DROP COLUMN USER_GRENDER;

 

-- 테이블 컬럼명 변경

ALTER TABLE TBL_MY_USER RENAME COLUMN USER_NAME TO USER_NICKNAME;

 

-- 테이블 컬럼 TYPE 수정

ALTER TABLE TBL_MY_USER MODIFY (USER_NICKNAME VARCHAR2(77));

 

-- 새로운 컬럼 삽입 추가

INSERT INTO TBL_MY_USER VALUES('A',22);

INSERT INTO TBL_MY_USER VALUES('B',33);

INSERT INTO TBL_MY_USER VALUES('C',44);

SELECT * FROM TBL_MY_USER;

 

TRUNCATE TABLE TBL_MY_USER;


ETC)  서브 쿼리란?

결과값들이 TABLE로 넘어감: 컬럼, 데이터, 제약조건 등으 그대로 복사됨

이관,백업할 때 유용하게 쓰임! 그러나 이동할때 깨질수도있어서 소량의 DB(1만개 이하)일때 사용함

 

내가원하는 임시테이블에 데이터를 그대로 복사할때 서브쿼리는 유용합니다.

 

 


[실습]

# 자동차 테이블 생성해보기

- 자동차 테이블 생성

 

* 자동차 번호 EX) 1번 소나타, 2번 아반테 3번 산타페..

* 자동차 이름

* 자동차 브랜드

* 출시날짜

* 색상

* 가격

 

나는 위 테이블을 만들기 위해서 넘버를 지정해주려고 했는데 숫자, 가격만 NUMBER로 넣고 

나머지는 모두 문자형이 동반되고 안쓰이면 회수될 수있는 자료형인 VARCHAR2로 만들었다.

또한 DATE는 날짜형이라서 DATE로 만들었따.


CREATE TABLE TBL_CAR(

CAR_NUMBER NUMBER(10),

CAR_NAME VARCHAR2(10),

CAR_BRAND VARCHAR2(10),

CAR_DATE DATE,

CAR_COLOR VARCHAR2(10),

CAR_PRICE NUMBER

);

 

여기까지했는데 TABLE형으로 나오지 않아서 당황했다 생각해보니 SELECT로 

내가 볼 TABLE을 선택해주었어야 했기때문에 

다시 아래 쿼리문으로 선택을 해주었다.

 

SELECT * FROM TBL_CAR;

SELECT를 했더니 이렇게 TABLE을 확인할 수 있었다.

 

TBL은 약간 약어같은 느낌인데 테이블 약어래요

NAVER은 N_이런식

SAMSUNG은 S_이런식으로 내부적으로 협약이 되어있다.

회사 생각하면 그럴거같다.