select*
from employee;
select *
from department;
delete from shop_buy
where member_id='honggd';
delete from shop_member
where member_id='honggd';
create table shop_nickname(
member_id varchar2(20),
nickname varchar2(100),
constraints fk_member_id foreign key(member_id) references shop_member(member_id),
constraints pk_member_id primary key(member_id)
);
insert into shop_nickname
values('sinsa','신솨112');
create table tb_cons_ck(
gender char(1),
num number,
constraints ck_gender check(gender in ('M','F')),
constraints ck_num check(num between 0 and 100)
);
insert into tb_cons_ck
values('M',50);
insert into tb_cons_ck
values('F',100);
create table dml_sample(
id number,
nick_name varchar2(100) default '홍길동',
name, varchar2(100) not null,
enroll_date date default sysdate not null
);
select * from deml _sample;
insert into dml_sample
values(100, default,'신사임당',default);
insert into dml_sample
values(100, default,'신사임당',default);
insert into dml_sample
values(100, default,'신사임당',default);
insert into dml_sample(id, nick_name, name, enroll_date)
values(200, '제임스','이황',sysdate);
insert into dml_sample(name, enroll_date)
values('세종',sysdate);
insert into dml_sample (id, enroll_date)
values(300, sysdate);
insert into dml_sample (name)
values('윤봉길');
create table emp_copy
as
select*
from employee
where 1 = 2;
select * from emp_copy;
insert into emp_copy(
select*
from employee
);
rollback;
insert into emp_copy(emp_id, emp_name,emp_no)(
select emp_id, emp_name, emp_no
from employee
);
select *
from user_cons_columns
where;
select* from emp_copy;
select*
from user_tab_cols
where table_name = 'EMP_COPY';
alter table emp_copy
modify quit_yn default 'N'
modify hire_date default sysdate;
insert into emp_copy (emp_id,emp_name,emp_no,email,phone,dept_code,job_code,sal_level,salary,bonus,manager_id)
values (100,'홍길동','123456-7890000','naver.com','01000000000','D5','J3','S4',2520000,0.25,204);
values (150,'jay','523456-5890000','google.com','01050005000','D1','J1','S1',1520000,0.50,205);
create table emp_hire_date
as
select emp_id, emp_name, hire_date
from employee
where 1=2;
select*from emp_hire_date
create table emp_manager
as
select emp_id,
emp_name,
manager_id,
emp_name manager_name
from employee
where 1=2;
drop data emp_manager
select*from emp_hire_date;
select*from emp_manager;
alter table emp_manager
modify manager_name null;
insert all
into emp_hire_date values(emp_id, emp_name, hire_date)
into emp_manager values(emp_id, emp_name, manager_id, manager_name)
select E.*,
(select emp_name from employee where emp_id = E.manager_id) manager_name
from employee E;
insert all
into dml_sample values (1, '치킨','홍길동',default)
into dml_sample values (2, '고구마','장발장',default)
into dml_sample values (3, '베베','유관순',default)
select * from dula;
select * from emp_copy;
update emp_copy
set dept_code = 'D1'
where emp_id = '101';
commit;
rollback;
update emp_copy
set salary = salary + 500000
where dept_code = 'D5'
update emp_copy
set salary=(select salary from emp_copy where emp_name='홍길동')
where emp_name = 'jay';
update emp_copy
set job_code = (select job_code from job where job_name = '과장'),
dept_code = (select dept_id from department where dept_title = '해외영업3부')
where emp_name = '임시환';
select * from emp_copy;
delete from emp_copy
where emp_id= '100';
delete from emp_copy;
truncate table emp_copy;
select * from emp_copy;
insert into emp_copy
(select * from employee);
select*
from user_tab_comments
select *
from user_col_comments
where table_name = 'DEPARTMENT'
select * from
desc tbl_files;
comment on table tbl_files is '파일경로 테이블';
comment on column tbl_files.fileno is '파일 고유번호';
comment on column tbl_files.fileno is '파일 경로';
select *
from user_constraints
where table_name = 'EMPLOYEE';
select*
from user_cons_columns
where table_name = 'EMPLOYEE';
select constraint_name,
uc.table_name,
ucc.column_name,
uc.constraint_type,
uc.search_condition
from user_constraints uc
join user_cons_columns ucc
using(constraint_name)
where uc.table_name ='EMPLOYEE';
create table tb_cons_nn (
id varchar2(20) not null,
name varchar2(100)
);
insert into tb_cons_nn values (null, '홍길동');
insert into tb_cons_nn values ('honggd, '홍길동');
select * from tb_cons_nn;
update tb_cons_nn
set id =''
where is 'honggd';
---------------------------------------------------------
--unique
---------------------------------------------------------
--이메일,주민번호, 닉네임
--전화번호는 uq사용하지 말것
--중복을 허용하지 않음
create table tb_cons_uq(
no number not null,
email varchar2(50),
--테이블레벨
constraint uq_email unique(email)
);
insert into tb_cons_uq values(1, 'abc@naver.com');
insert into tb_cons_uq values(2, '가나다@naver.com');
insert into tb_cons_uq values(3, 'abc@naver.com');
insert into tb_cons_uq values(4, null); --null허용
select * from tb_cons_uq;
---------------------------------------------------------
--primary key
---------------------------------------------------------
--레코드(행) 식별자
--not null + unique기능을 가지고 있으며, 테이블당 한개만 설정가능
create table tb_cons_pk(
id varchar2(50),
name varchar2(100) not null,
email varchar2(200),
constraint pk_id primary key(id),
constraint uq_email2 unique(email)
);
insert into tb_cons_pk
values('honggd','홍길동','hgd@google.com');
select*from tb_cons_pk;
select constraint_name,
uc.table_name,
ucc.column_name,
uc.constraint_type,
uc.search_condition
from user_constraints uc
join user_cons_columns ucc
using(constraint_name)
where uc.table_name ='TB_CONS_PK';
--복합 기본키(main key = primary ket / pk)
--여러컬럼을 조합해서 하나의 pk로사용
--사용된 컬럼 하나라도 unll이어서는 안된다.
create table tb_order_pk (
user_id varchar2(50),
order_date date,
amount number default 1 not null,
constraint pk_user_id_order_date primary key(user_id, order_date)
);
insert into tb_order_pk
values('honggd', sysdate,3);
select*
from tb_order_pk
---------------------------------------------------------
--foreign key
---------------------------------------------------------
--참조 무결성을 유지하기 위한 조건
--참조하고 있는 부모테이블의 지정 컬럼값 중에서만 값을 취할 수 있게 하는것
--참조하고 있는 부모테이블의 지정컬럼은 PK, UQ제약조건이 걸려있어야 한다.
--departent.dept_id(부모테이블) <-----employee.dept_code(자식테이블)
--자식테이블의 컬럼에 foreign key제약조건을 지정
create table shop_member(
member_id varchar2(20),
member_name varchar2(30) not null,
constraint pk_shop_member_id primary key(member_id)
);
insert into shop_member values('honggd','홍길동');
insert into shop_member values('sara','사라');
insert into shop_member values('min','민');
select * from shop_member;
create table shop_buy(
buy_no number,
member_id varchar2(20),
product_id varhar2(50),
buy_date date default sysdate,
constraints pk_shop_buy_no primary key(buy_no),
constraints fk_shop_buy_member_id foreign key(member_id)
references shop_member(member_id)
);
insert into shop_buy
values(1,'honggd', 'soccer_shoes', default);
insert into shop_buy
values(2,'sara', 'basketball_shoes', default);
insert into shop_buy
values(3,'k12345', 'basketball_shoes', default);
select*from shop_buy;
select buy_no, member_id, member_name, product_id, buy_date
from shop_buy join shop_member
using(member_id);
--정규화 Normalization
--이상현상 방지(anormaly)
select*
from employee;
select *
from department;
--삭제 옵션
--on delete restricted : 기본값. 참조하는 자식행이 있는경우, 부모행 삭제불가
--자식행을 먼저 삭제후, 부모행을 삭제
--on delete set null : 부모행 삭제시 자식컬럼은 null로 변경
--on delete casecade : 부모행 삭제시 자식행 삭제
delete from shop_buy
where member_id='honggd';
delete from shop_member
where member_id='honggd';