<09자료 참고>
select table_name from user_tables;
select * from user_objects;
select * from user_constraints;
select * from user_catalog;
#. 테이블 생성 연습
게시판
create table board(
num number,
title varchar2(20),
content varchar2(40),
gdate date,
name varchar2(10));
create, drop, alter
alter table board add ip varchar2(15);
alter table board modify content varchar2(100);
문1> num에 primary key 제약조건 추가.
alter table board modify num primary key;
alter table board add constraints pp /???
문2> title에 not null 제약조건 추가.
alter table board modify title not null;
문3> name varchar(12)로 구조변경.
alter table board modify name varchar(12);
문4> name필드(컬럼)삭제.
alter table board drop column name;
문5> num에 primary key 제약조건 삭제
alter table board drop primary key;
문6> board 테이블 삭제
drop table board;
#. 테이블 복사
column 순서 바꾸고 싶을 때 테이블 복사
create table empbu(a,b) as (select ename, empno from emp); //a,b처럼 column명도 바꿀 수 있음!
-------------------------------------------------------------------------------------------------------------------------
1. BONUS 테이블에 ETC COLUMN을 추가하여라. 단, 자료형은 VARCHAR2(50) 사용하여라.
alter table bonus add etc varchar2(50);
2. EMP_30 테이블에 DEPTNO NUMBER(2)을 추가하여라.
alter table emp_30 add deptno number(2);
3. emp 테이블에서 이름 필드에 unique constraint를 설정하고 data dictionary에서 확인 하여라.
alter table emp add constraints emp_ename_uk unique(ename);
4. 전 문제에서 생성한 emp테이블에 있는 emp_ename_uk을 삭제하고 data dictionary에서 확인하시오.
alter table emp drop constraints emp_name_uk;
5. alter table emp disable(enable) constraint emp_primary_key;
6. 이전에 생성한 emp_30 테이블의 이름을 emp_temp30으로 변경하여라.
rename emp_30 to emp_temp30;
7.이전에 생성한 emp_temp30 테이블의 모든 자료를 삭제하고 사용하고 있던 기억 공간을 모두 해제하여라.
truncate table emp_temp30;
-> 데이터를 찾을 수 없습니다. //쓸데없는 기억공간까지 모두 다 지워버림!
8.emp_temp30의 테이블을 삭제하여라.
drop table emp_temp30;
-------------------------------------------------------------------------------------------------------------------------
1. emp 테이블에 있는 모든 constraint를 조회하시오.
select *(constraint_name) from user_constraints where table_name='EMP';
desc user_constraints;
2. emp 테이블에 SAL, COMM을 제외한 모든 COLUMN과 행을 포함하는 EMP_DEMO 테이블을 생성하시오.
create table emp_demo as (select empno, ename, job, mgr, hiredate, deptno from emp);
3. emp테이블과 dept 테이블을 이용하여 아래의 내용을 포함하는 테이블(emp_dept)을 생성하라.
create table emp_dept as(select a.empno, a.ename, a.job, b.dname, b.loc from emp a, dept b
where a.deptno=b.deptno);
4. emp테이블과 salgrade 테이블을 이용하여 아래의 내용을 포함하는 테이블(emp_grade)을 생성하라.
create table emp_grade as(select a.empno, a.ename, a.job, a.sal, a.comm, b.grade from emp a, salgrade b
where a.sal between b.losal and b.hisal);
//테이블을 통으로 복사할때 제약조건은 따라오지 않아!왜냐면, 제약조건 이름은 따로지정하니까..
5.dept 테이블의 primary key를 disable로 설정하시오.
alter table dept disable constraint pk_dept cascade;
//연동되어 있을 때 아버지 먼저, 그다음 아들을...
6.3번에서 생성한 테이블에 empno를 primary key로 설정하시오.
alter table emp_dept add constraints pk_empno primary key(empno);
7. 4번에서 생성한 테이블에 sal의 정밀도를 정수 부분을 12자리 소수 이하 4자리를 기억할 수 있도록 변경하시오.
alter table emp_grade modify sal number(16,4); //(전체자리수,소수 이하 자리수)
8. 3번에서 작성한 테이블의 내용과 기억 장소를 모두 해제하는 sql문을 작성하시오.
truncate table emp_dept; //truncate는 delete all과 commit 모두 하는 것임!
9. 3번과 4번에서 생성한 테이블을 모두 삭제하시오.
drop table emp_grade;
drop table emp_dept;
'DB(SQL)' 카테고리의 다른 글
[MySQL] Mysql 설치 (mysql 5.5.54) (0) | 2017.03.15 |
---|---|
[SQL] commit (0) | 2017.02.28 |
[SQL] 제약조건 연습 (0) | 2017.02.28 |
[SQL] 함수 연습2 (0) | 2017.02.28 |
[SQL] 함수 연습1 (0) | 2017.02.28 |