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
Posted by 딩구르
,