꺄르륵
[Oracle SQL Developer] 기초 I - TABLE 본문
작성 규칙_
0또는1이상 "[]" , 1 이상 반드시 사용한다. "|"
테이블 생성하기 - CREATE
객체 생성 - CREATE
객체 삭제 - DROP
객체 안의 DATA 생성 - INSERT
객체 안의 DATA 삭제 - DELETE
* 사용형식
CREATE TABLE 테이블명 (
-- 테이블명은 중복되지 않게 설정한다.
컬럼명1 데이이터타입[(크기)] [NOT NULL|NULL],
:
컬럼명n 데이이터타입[(크기)] [NOT NULL|NULL][,]
-- 컬럼의 제약사항을 나타낸다.
-- 컬럼에 대한 정의 부분 크기는 따로 작성하지 않는다면 기본으로 BYTE가 DEFAULT로 적용된다.
-- NOT NULL|NULL 중 DEFAULT는 NULL이 적용된다. NOT NULL을 적용하려면 직접 입력해줘야한다.
[
CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[, 컬럼명...]),
CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[, 컬럼명...])
REFERENCES 테이블명(컬럼명[, 컬럼명...])]);
-- 테이블의 제약사항을 나타낸다.
-- 기본키설정명은 유일해야되며 중복되면 안된다.
-- 외래키설정명은 유일해야한다. 외래키는 각 참조할 테이블이 다를 경우 외래키 설정을 각각 작성해줘야한다.
-- 외래키를 가지고 있는 테이블은 원본 테이블(참조할 테이블)을 생성 전에는 사용할 수 없다.
CREATE TABLE EMPLOYEE (
E_EMP_NO CHAR(4) NOT NULL,
E_NAME VARCHAR2(10) NOT NULL,
E_ADDRESS VARCHAR2(50) NOT NULL,
E_TEL_NO VARCHAR2(12),
E_POSITION VARCHAR2(10) NOT NULL,
E_DEPARTMENT VARCHAR2(20) NOT NULL,
-- 각 테이블에 들어가는 컬럼의 제약사항을 작성한다.
CONSTRAINT PK_EMP PRIMARY KEY (E_EMP_NO)
-- 기본키 및 외래키를 설정해주며, 외래키는 참조받을 테이블이 이미 생성되어있어야 한다.
);
생성된 테이블에 값 넣기 - INSERT
- INSERT, UPDATE, DELETE 문이 포함된다
1) INSERT
- 생성된 테이블에 자료를 삽입할 때 생성
* 사용형식
INSERT INTO 테이블명 [(컬럼LIST)]
VALUES (값LIST);
- 컬럼LIST : 저장하고자하는 데이터의 순서와 MAPPING되는 컬럼명
컬럼명을 ','로 분리하여 기술하고, 생략하면 테이블 생성시 기술됨.
모든 컬럼과 순서에 맞춰 데이터를 정의해야함.
NOT NULL 로 설정된 컬럼은 반드시 작성해줘야 한다.
- 값LIST : '컬럼리스트'로 정의된 컬럼에 저장할 값 정의 순서와 갯수가 일치해야함.
사용예) 사원테이블(EMPLOYEE)에 신규사원정보를 입력하시오
사원번호 : E101
사원명 : 홍길동
주소 : 홍길시 동구 길홍동 500
전화번호 : 10-1234-5678
직위 : 사원
부서 : 개발부
사원번호 : E102
사원명 : 강감찬
주소 : 서울시 영등포구 당산동 500
전화번호 : 02-6789-7891
직위 : 부장
부서 : 총무부
-- 컬럼명을 생략하고 값을 입력하는 경우
INSERT INTO EMPLOYEE VALUES ('E102','강감찬','서울시 영등포구 당산동 500','02-6789-7891','부장','총무부');
-- 컬럼명을 작성하고 값을 입력하는 경우
INSERT INTO EMPLOYEE(E_EMP_NO, E_NAME,E_ADDRESS,E_TEL_NO,E_POSITION,E_DEPARTMENT)
-- CHAR, VARCHAR2 문자와 문자열의 구분이 없기때문에 모두 문자열로 취급한다.
-- 표현은 '내용' 으로 사용한다.
-- 컬럼리스트 순서에 맞춰서 값리스트를 작성해준다.
VALUES ('E101', '홍길동', '홍길시 동구 길홍동 500', '10-1234-5678', '사원', '개발부');
-- NULL 값을 넣어주는 경우 NULLABLE 인 E_TEL_NO을 빼거나 ' ', 해당 위치에 NULL 로 컬럼리스트에 기술을 해준다.
INSERT INTO EMPLOYEE(E_EMP_NO, E_NAME,E_ADDRESS,E_POSITION,E_DEPARTMENT)
VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123', '팀장', '개발부');
INSERT INTO EMPLOYEE VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123',NULL,'팀장', '개발부');
INSERT INTO EMPLOYEE VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123', ' ' ,'팀장', '개발부');
-- SELECT문을 쓸때 * = ALL 모든 컬럼 이라는 뜻이다.
-- 테이블에 입력된 값 출력해보기
SELECT * FROM EMPLOYEE;
테이블 복사하기 - COPY
1) COPY
테이블에 저장된 자료와 구조만 복사한다. 기본키 및 외래키는 복사되지 않는다.
* 사용형식
CREATE TABLE 복사할 테이블명 AS SELECT 문 복사될 테이블;
-- EMPLOYEE 테이블의 모든 내용을 복사해온다.
CREATE TABLE EMPLOYEECOPY AS SELECT * FROM EMPLOYEE;
테이블 구조 변경 처리하기 - ALTER
* 사용형식
1). 테이블명 바꾸기
ALTER TABLE 수정 전 테이블명 RENAME TO 수정할 테이블명;
ALTER TABLE EMPLOYEECOPY RENAME TO EMP;
2). 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼명 데이터타입[(크기)] [NOT NULL|NULL];
ALTER TABLE EMP
ADD E_SALARY NUMBER (8);
-- NOT NULL 을 쓰지못하는 이유? 이미 입력된 데이터가 있으면 걔가 NOT NULL이여야 되는데
-- 추가하려고하면 이미 NULL 값이라
3). 제약사항(기본키 및 외래키) 추가
ALTER TABLE 테이블명
ADD CONSTRAINT 기본키명 PRIMARY KEY (컬럼명[, 컬럼명...]),
CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[, 컬럼명...])
REFERENCES 테이블명(컬럼명[, 컬럼명...]);
ALTER TABLE EMP
ADD CONSTRAINT PK_EMP_COPY PRIMARY KEY (E_EMP_NO);
4). 컬럼명 변경
ALTER TABLE 테이블명
RENAME COLUMN 수정 전 컬럼명 TO 수정 후 컬럼명;
ALTER TABLE EMP
RENAME COLUMN E_ADDRESS TO E_ADDR;
5). 컬럼 수정
-- 문자 -> 숫자로 변경하는 경우는 이미 숫자로 맞춰놔야 변경이 가능하다.
-- 데이터타입의 크기를 줄이는 경우 데이터가 잘려나갈수 있으므로 주의가 필요하다.
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입[(크기)] [NOT NULL|NULL];
-- 두 가지 이상을 변경시킬때는 ( ) 안에 묶어줘서 처리를 한다.
ALTER TABLE EMP
MODIFY (E_ADDR VARCHAR2 (70), E_TEL_NO VARCHAR2 (25));
6). 삭제
- 컬럼이나 제약사항(기본키, 외래키) 삭제
ALTER TABLE 테이블명
DROP COLUMN|CONSTRAINT 컬럼명|제약사항설정명;
ALTER TABLE EMP
DROP COLUMN E_SALARY;
-- 테이블 삭제
DROP TABLE 테이블명;
DROP TABLE EMP;
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 V - 숫자 함수 (0) | 2019.10.08 |
---|---|
[Oracle SQL Developer] Import (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 IV - SELECT 문 (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 III - 숫자 자료형, 날짜 타입 (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 II - DATA TYPE (0) | 2019.10.04 |