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;