티스토리 뷰
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
 
- 객체
 - JdbcTemplate
 - INSERT
 - ojdbc6.jar
 - 다형성
 - controller
 - model
 - java
 - 객체지향
 - 캡슐화
 - view
 - JDBC 프로그램 작성단계
 - java 환경설정
 - 상속
 - Scott/Tiger
 - jdbc
 - MVC
 - select
 - 추상화
 - Update
 - OOP
 - .
 - Oracle
 - Delete
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
