데이터베이스/Oracle SQL

오라클 SQL과 PL/SQL ( DDL - CREATE )

동띠기 2021. 8. 23. 21:39
728x90

DDL 명령과 딕셔너리

사람이 사용하는 다양한 말들이 여러가지 품사로 구분되는 것 처럼 오라클에서 사용하는 다양한 명령어들도 아래와 같이 구분이 됩니다.

DDL : CREATE(생성) , ARTER(수정), TRUNCATE(잘라내기), DROP(삭제)
DML : INSERT(입력), UPDATE(변경) , DELETE(삭제) , MERGE(병합)
DCL : GRANT(권한 주기) , REVOKE (권한 뺏기)
TCL : COMMIT(확정), ROLLBACK(취소)
SELECT : 어떤 분류에서는 DQL 이라고 하기도 합니다.

이러한 명령어들을 이용하여 데이터를 관리하는 것입니다.
오라클 데이터베이스 내부에 데이터를 관리하기 위해 다양한 저장 객체를 생성하게 되는데 이것을 오브젝트라고 부르고 오브젝트 중에 특별한 데이터를 저장하기 위한 별도의 저장공간을 세그먼트 라고 부릅니다.
쉽게 이야기 하면 데이터베이스라는 커다란 창고안에 오브젝트나 세그먼트라는 통에 물건을 담아두면 된다고 생각하면 됩니다.
이런 오브젝트를 생성, 변경, 관리하는 명령어 DDL에 대해서 살펴보겠습니다.

 

CREATE - 새로 생성하라
이 명령은 새로운 오브젝트나 스키마를 생성할 떄 사용하는 명령어 입니다.

일반 테이블 생성하기

CREATE TABLE new_table ( no NUMBER(3), name VARCHAR2(10), birth DATE );

1) 위 SQL은 new_table라는 이름의 테이블을 생성합니다.
2) no라는 컬럼은 숫자 데이터만 들어갈 수 있으며 최대 길이는 3자리 까지 입니다.
3) name 컬럼은 가변형 문자가 들어갈 수 있으며 최대 길이는 10바이트 까지 입니다.
4) birth 컬럼은 날짜 데이터만 들어갈 수 있습니다.

 

지금은 사용자가 값을 입력하지 않을 경우 기본적으로 NULL값이 자동으로 입력됩니다.
하지만 NULL값은 좋지 않음으로 사용자가 값을 입력하지 않을 경우 NULL 값 외에 다른 특정한 값을 저장하면서 생성하는 방법을 알아보겠습니다.

CREATE TABLE tt02 ( no NUMBER(3, 1) DEFAULT 0, name VARCHAR2(10) DEFAULT 'No Name', hiredate DATE DEFAULT SYSDATE );

위 sql을 보면 DEFAULT 라는단어를 볼 수 있는데 사용자가 값을 입력하지 않을 경우 DEFAULT 뒤에 적힌 값을 자동으로 넣으라는 의미입니다. 한번 확인해 보겟습니다.

INSERT INTO tt02 (no) VALUES(1);
SELECT * FROM tt02;

INSERT 명령으로 no컬럼에만 1을 입력한 후 tt02 테이블을 SELECT하니까 나머지 컬럼에도 테이블 생성 시에 DEFAULT뒤에 지정했던 값이 들어가 있는 것이 확인됩니다.

한글 이름으로 테이블 생성하기.

CREATE TABLE 한글테이블 ( 컬럼1 NUMBER, 컬럼2 VARCHAR2(10), 컬럼3 DATE );

한글로도 테이블이나 컬럼이름이 한글로 가능합니다. 하지만 실제 사용할 때 테이블 이름이나 컬럼 이름이 한글일 경우 불편함이 있으니 잘 고려한 후 사용하기 바랍니다.

 

테이블 생성할때 제한사항

1. 테이블 이름은 반드시 문자로 시작해야 합니다. 숫자로 시작할 수 없고 숫자가 포함되는 것은 가능합니다. 특수문자도 가능하지만 테이블 생성 시 "" 큰따옴표로 감싸야 하며 권장하지 않습니다.
2. 테이블이름이나 컬럼이름은 최대 30바이트 까지 가능합니다. 한글은 15글자까지 가능합니다.(1글자 2바이트)
3. 테이블 이름은 한 명의 사용자가 다른 오브젝트의 이름과 중복으로 사용할 수 없습니다. 예를 들어 scott사용자가 테이블명을 test로 생성한 후 다른 테이블 이름을 test로 동일하게 사용할 수 없다는 것입니다.
그러나 scott 사용자가 test테이블을 만들어도 다른 사용자인 hr사용자는 test라는 테이블 이름을 사용할 수 있습니다.
4. 테이블이름, 오브젝트 이름을 오라클이 사용하는 키워드를 사용하지 않기 권장합니다. 오라클에서 미리 정해진 SELECT, FROM 등과 같은 단어를 말합니다. 생성이 안되는건 아니지만 사용 시에 아주 불편하고 위험 할 수 있습니다.

728x90