티스토리 뷰
SQL (Structured Query Language) 구조화된 질의 언어
- DDL (Data Definition Language) : DB 스키마 정의 조작
- DML (Data Manipulation Language) : Data 조작
- DCL (Data Control Language) : Data 제어
DDL = 데이터 정의 언어 (Data Definition Language)
- CREATE : 테이블, 뷰, 프로시저 등을 생성
- ALTER : 테이블, 뷰 프로시저 등을 수정
- DROP : 테이블, 뷰, 프로시저 등을 삭제
<CREATE>
CREATE TABLE
CREATE TABLE 테이블명(
컬럼명 DATA_TYPE(SIZE),
...
CONSTRAINT 제약조건명 제약조건 (컬럼명...)
);
ex) TEST table 생성
CREATE TABLE TEST(
TEST_ID NUMBER,
TEST_NAME VARCHAR2(100),
TEST_NICKNAME VARCHAR2(1000)
);
CREATE VIEW
** VIEW : 실제 테이블을 가지고 만든 가상 테이블
** JOIN 된 상황에서는 INSERT / DELETE 불가
ex)
CREATE OR REPLACE VIEW V_EMP
AS
SELECT * FROM EMP;
CREATE SEQUENCE
SELECT 할 때 마다 NEXTVAL 값이 올라감
ex) 1
CREATE SEQUENCE 시퀀스명(
INCREAMENT BY 정수 (기본값 1) -- 정수값 만큼 증감
START WITH 정수 -- 시작 번호
MAXVALUE 정수 -- 최대값 지정
MINVALUE 정수 -- 최소값 지정
CYCLE || NOCYCLE -- 반복 여부
CACHE 정수 || NOCACHE -- 정수값 만큼 미리 생성
);
SELECT TESTSEQ.NEXTVAL FROM DUAL;
ex) 2
CREATE SEQUENCE SEQ_EMPID01
START WITH 300
INCREMENT BY 5
NOCYCLE
NOCACHE;
NEXTVAL : 시퀀스의 다음 값
CURRVAL : 시퀀스의 현재 값
SELECT SEQ_EMPID01.NEXTVAL, SEQ_EMPID01.CURRVAL
FROM DUAL;
ex) 3
CREATE SEQUENCE SEQ_EMPID02
START WITH 5
INCREMENT BY 5
MAXVALUE 15
CYCLE
NOCACHE;
START WITH 값은 처음에만 나오고 다음부터는 나오지 않음
CYCLE일 경우 MAXVALUE를 넘어가지 않는 범위 내에서 INCREMENT BY 만큼 증가하며 반복하여 돈다.
SELECT SEQ_EMPID02.NEXTVAL, SEQ_EMPID02.CURRVAL
FROM DUAL;
AS (TABLE 복제)
- 전체복제
- CREATE TABLE 새로운 테이블명 AS SELECT * FROM 테이블명
- 원하는 컬럼만 복제
- CREATE TABLE 새로운 테이블명 AS SELECT 컬럼명 FROM 테이블명
- 구조(전체 컬럼)만 복제
- CREATE TABLE 새로운 테이블명 AS SELECT * FROM 테이블명 WHERE 1=2;
- (WHERE 조건을 거짓으로 한다. 때문에 NO ROWS SELECTED 이고 컬럼들만 복사)
예제)
--Q1) SIZE가 10인 문자형 컬럼 ID와 PW를 가진 TEST 테이블을 생성해보자
CREATE TABLE TEST(
ID VARCHAR2(10),
PW VARCHAR2(10)
);
--Q2) 사원 테이블(EMP)의 모든 구조와 데이터를 TEST01로 복사하여 생성해보자.
CREATE TABLE TEST01
AS
SELECT *
FROM EMP;
--Q3) 사원 테이블에서 사원의 번호와 이름을 TEST02로 복사하여 생성해보자.
CREATE TABLE TEST02
AS
SELECT EMPNO, ENAME
FROM EMP;
--Q4) 사원 테이블에서 사원의 번호와 이름을 TEST03으로 복사하여 생성해보자.
--단, 컬럼명을 M1, M2로 변경하면서 복사하자.
CREATE TABLE TEST03
AS
SELECT EMPNO AS "M1", ENAME AS "M2"
FROM EMP;
CREATE TABLE TEST03(M1, M2)
AS
SELECT EMPNO, ENAME
FROM EMP;
--Q5) 사원 테이블의 구조만 TEST04로 복사하여 생성해보자.
CREATE TABLE TEST04
AS
SELECT *
FROM EMP
WHERE 1 = 2;
--Q6) 부서 테이블(DEPT) 의 구조만 TEST05로 복사하여 생성해보자.
CREATE TABLE TEST05
AS
SELECT *
FROM DEPT
WHERE 1 = 2;
<ALTER>
ALTER TABLE
테이블 수정
ALTER TABLE 테이블명
- ADD(컬럼명 DATA_TYPE ...)
- MODIFY(컬럼명 DATA_TYPE ...)
- DROP COLUMN 컬럼명 || DROP(컬럼명)
ex) TEST 테이블에 SIZE가 20인 문자형 컬럼 ADDR을 추가하자.
ALTER TABLE TEST
ADD(ADDR VARCHAR2(20));
ALTER SEQUENCE
시퀀스 수정
ALTER SEQUENCE 시퀀스명
[INCREAMENT BY 정수(기본값 1)]
[{MAXVALUE 정수}][{MINVALUE 정수}]
[{CYCLE|NONCYCLE}]
[{CACHE 정수|NONCACHE}]
** START WITH 값은 수정 불가!!
<DROP>
테이블 삭제
DROP TABLE 테이블명 (PURGE);
ex) TEST 테이블을 삭제하자.
DROP TABLE TEST PURGE;
* PURGE 붙이지 않으면 DROP 해도 임시 저장 파일은 남아 있다.
* PURGE 붙이면 임시 저장 파일 까지 모두 날아간다.
'DB > Oracle' 카테고리의 다른 글
SQL 기초 4. CONSTRAINT (제약조건) (0) | 2019.11.29 |
---|---|
SQL 기초 3. DCL (Data Control Language) 데이터 제어 언어 (0) | 2019.11.29 |
SQL 기초 1. DML (Data Manipulation Language) 데이터 조작 언어 (0) | 2019.11.28 |
SQL 기초 (0) | 2019.11.28 |
데이터베이스 기본 개념 (0) | 2019.11.28 |
- Total
- Today
- Yesterday
- select
- 추상화
- 캡슐화
- MVC
- ojdbc6.jar
- 객체
- Delete
- 객체지향
- .
- controller
- JdbcTemplate
- view
- OOP
- java
- Scott/Tiger
- jdbc
- Oracle
- 다형성
- 상속
- JDBC 프로그램 작성단계
- java 환경설정
- Update
- model
- INSERT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |