|
DML |
DDL |
DCL |
Insert |
Create |
Grant | |
Select | |||
Revoke | |||
|
Update |
Alter | |
| |||
TCL | |||
Delete |
Truncate | ||
Commit | |||
Merge |
Drop | ||
Rollback |
데이터 정의어 (DDL)
테이블 생성
예제 :
SQL> CREATE TABLE address
(id NUMBER(3), name VARCHAR2(50),
addr VARCHAR2(100), phone VARCHAR2(30),
email VARCHAR2(100));
SQL> DESC address; ← 만들어진 테이블의 내용 확인
예제 : 서브쿼리 절을 이용하여 주소록 테이블의 구조와 데이터를 복사하여 addr_second
테이블을 생성하세요.
SQL> CREATE TABLE addr_second(id, name, addr, phone, email)
AS SELECT * FROM address;
예제 : 주소록 테이블에서 id , phone 칼럼만 복사하여 addr_third 테이블을 생성하세요
SQL> CREATE TABLE addr_third
AS SELECT id, phone FROM address;
테이블 구조만 복사 (내용은 복사 안 함)
예제 : 주소록 테이블에서 id, name 칼럼만 복사하여 addr_forth 테이블을 생성하세요.
단, 데이터는 복사하지 않습니다.
SQL> CREATE TABLE addr_forth
AS SELECT id, name
FROM address
WHERE 1=2;
문제 : emp 테이블에서 empno,ename 만 가진 emp2 테이블을 만들고 자료를 전부 가지고 오세요
테이블 구조 변경
예제 : 주소록 테이블에 날짜 타입을 가지는 birth 칼럼을 추가하세요.
SQL> ALTER TABLE address
ADD (birth date);
예제 : 주소록 테이블에 문자 타입을 가지는 comment 칼럼을 추가하여라.
기본값은 'No Comment'로 지정하여라.
SQL> ALTER TABLE address
ADD (comments varchar2(200) DEFAULT 'No Comment');
칼럼 삭제
예제 : 주소록 테이블에서 comment 칼럼을 삭제하여라.
SQL> ALTER TABLE address DROP COLUMN comments;
SQL> DESC address;
칼럼 변경
예제 : 주소록 테이블에서 phone 칼럼의 데이터 타입의 크기를 50으로 증가시키세요.
SQL> ALTER TABLE address
MODIFY phone VARCHAR2(50);
※ 수정할 때 크기를 늘이는 것은 괜찮지만 줄일 경우 기존에 들어 있던 데이터보다
작은 값으로 줄이려고 할 경우 에러가 난다.
테이블 이름 변경
예제 :
SQL> RENAME addr_second TO client_address
테이블 삭제
예제 :
SQL> DROP TABLE addr_third
TRUNCATE 명령문
문법> TRUNCATE TABLE [schema.] table
※ TRUNCATE 명령어는 테이블 구조는 그대로 유지하고 데이터와 할당된 공간을 삭제하는 명령문이다.
데이터 딕셔너리
DBA_tables : 전부다
All_tables : 접근가능한것
User_tables : 내것만 볼 수 있다.
예제 : 현재 scott 계정이 생성한 모든 객체 보기
SQL> SELECT table_name FROM user_tables
예제 : 현재 scott 계정이 조회 가능한 모든 객체 보기
SQL> SELECT table_name FROM ALL_tables
예제 : DBA 나 SELECT ANY TABLE 권한을 가진 사용자만 접근할 수 있다
SQL> SELECT owner,table_name FROM dba_tables
연습문제
아래 표를 참조하여 다음 질문에 답하세요.
Table name : Member
칼럼이름 |
데이터타입 |
설 명 |
USERID |
VARCHAR2(10) |
사용자아이디 |
USERNAME |
VARCHAR2(10) |
회원이름 |
PASSWD |
VARCHAR2(10) |
비밀번호 |
IDNUM |
VARCHAR2(10) |
주민등록번호 |
PHONE |
NUMBER(13) |
전화번호 |
ADDRESS |
VARCHAR2(20) |
주소 |
REGDATE |
DATE |
가입일 |
INTEREST |
VARCHAR2(15) |
관심분야 |
1. 위 표를 참조하여 테이블을 만드세요
SQL> create table member
(userid varchar2(10), username varchar2(10), passwd varchar2(10),
idnum varchar2(10), phone number(13), address varchar2(20),
regdate date, interest varchar2(15));
2. 회원 테이블의 구조와 데이터 집합이 같은 member_second 테이블을 생성하세요.
SQL> create table member_second
as select *
from member;
3. 회원 테이블의 userid, username, passwd 칼럼만 복사하여 member_third 테이블을 생성하세요.
SQL> create table member_third
as select userid, username, passwd
from member;
4. 회원 테이블과 구조는 동일하고 데이터는 가지지 않는 member_forth 테이블을 생성하세요.(구조만)
SQL> create table member_forth
as select *
from member
where 1=2;
6. 회원 테이블에 email 칼럼을 추가하세요. 단 email 칼럼의 데이터 타입은 VARCHAR2(50)이다.
SQL> alter table member
add (email varchar2(50));
7. 회원 테이블에 국적을 나타내는 country 칼럼을 추가하고 기본값을 ‘Korea’로 지정하여라.
SQL> alter table member
add (country varchar2(30) default 'Korea');
8. 회원 테이블에서 email 칼럼을 삭제하여라.
SQL> alter table member drop column email;
9. 회원 테이블의 address 칼럼의 데이터 크기를 30으로 증가시켜라
SQL> alter table member
modify address varchar2(30);
10. member_second 의 테이블 이름을 potential_member 로 변경하여라.
SQL> rename member_second to potential_member;
'Oracle > Oracle - SQL' 카테고리의 다른 글
SQL정리 11장 Index (0) | 2012.01.11 |
---|---|
SQL정리 10장 제약조건 (Constraint) (0) | 2012.01.11 |
SQL정리 8장 DML (0) | 2012.01.10 |
SQL정리 7장 서브쿼리 (0) | 2012.01.09 |
SQL정리 6장 join (0) | 2012.01.07 |