Oracle

[Oracle] DDL

eunnys 2024. 2. 13. 12:48

*** DDL

- 관계형 데이터베이스의 객체를 조작하는 명령문

- 테이블, 시퀀스, , 시노님, 인덱스 등이 있다.

- create, alter, drop

- 테이블에는 5개의 제약조건이 있다 (PK, FK, NN, UQ, CK)

- default : 기본값으로 저장되도록 함

 

 

create table 테이블명

(

컬럼명 데이터타입 제약조건

...

);

 

 

-- 테이블 생성하기

create table fitness

(

userid varchar2(50) constraints members_id_PK primary key,

username varchar2(50) constraints members_name_NN not null,

gender char(1) constraints members_gender_CK check (gender in ('F', 'M')),

birth date,

height number(6,2),

weight number(6,2),

join_date date default sysdate

);

 

 

-- 데이블 확인하기

select * from fitness;

 

 

-- 테이블 삭제하기

drop table fitness;

 

 

-- 어느 데이블에 어떤 제약조건이 걸려있는지 확인

-- 일반테이블 외에 제약조건을 관리하는 메타테이블로 확인 가능

select *

from user_constraints

where table_name = 'members';

 

 

-- 키워드를 관리하는 메타테이블 조회(DBA(데이터베이스 관리자계정)만 가능)

select * from v$reserved_words;

 

 

-- 테이블 삭제하기

drop table my_table;

 

 

-- 테이블 생성하기

create table my_table

(

user_id varchar2(10),

user_name varchar2(50)

);

 

 

-- 행 삽입하기

insert into my_table

values

('Hong', '홍길동');



insert into my_table

(user_name) -- user_name에 저팔계가 들어가고 user_id는 null이됨

values

('저팔계');



insert into my_table

(user_id)

values

('Son');



insert into my_table

(user_name, user_id) -- 컬럼의 순서를 정해줌

values

('전우치', 'Jeon');



insert into my_table

values

('a', '김길동');



insert into my_table

values

('b', '이길동');



insert into my_table

values

('c', '최길동');

 

 

-- 테이블 확인하기

select * from my_table;

 

 

-- 저장하기

commit;

 

 

-- 이전 상태로 되돌리기

rollback;

 

 

 

-- [문제] 테이블을 생성하시오

-- 아이디: 숫자 3자리 (PK)

-- 상품명: 가변길이 50자리 (NN)

-- 단가: 숫자 7자리 (NN)

-- 이익율: 숫자(5,1) 0.1

 

drop table product;

 

create table product

(

product_id number(3) primary key,

product_name varchar2(50) not null,

unit_price number(7) not null,

ratio number(5,1)

);

 

 

-- 데이터 추가하기

insert into product

values

(1, 'TV리모콘', 15000, 0.1);



insert into product

values

(2, '스마트폰', 250000, 0.2);



commit;

 

 

-- 전체 데이터를 지우기

delete product;

 

rollback;

 

select * from product;

 

 

-- 특정 데이터만 지우기

delete product

where product_id = 1;

 

select * from product;



rollback;



select * from product;

 

 

-- 전체 데이터 수정하기

update product

set unit_price = 20000;



rollback;

 

 

-- 특정 데이터만 수정학기

update product

set unit_price = 20000

where product_id = 1;



select * from product;



commit;