- primary key : 중복된 데이터와 null 값을 입력하지 못하게 하는 제약
- unique : 중복된 데이터를 입력하지 못하게 하는 제약
- not null : null 값을 입력 못하게 하는 제약
- check : 사용자가 지정한 데이터만 허용하겠금 하는 제약
- foreign key : 부모 테이블의 데이터를 참조하기 위해서 사용하는 제약
cmd에서 @demo 돌리기
alter table emp
add constraint emp_empno_pk primary key(empno);
select constraint_name, table_name
from user_constraints
where table_name='EMP';
alter table 테이블명
add constraint 제약조건명 primary key(컬럼명);
-- 에러발생: 무결성 제약 조건(C##SCOTT.EMP_EMPNO_PK)에 위배
update emp
set empno = 7788
where ename='KING';
사원번호 : NULL
사원이름: JACK
월급: 3000
insert into emp(empno, ename, sal)
values( null, 'JACK', 3000 );
-- SQL 오류:
-- ORA-01400: NULL을 ("C##SCOTT"."EMP"."EMPNO") 안에 삽입할 수 없습니다
alter table dept
add constraint dept_deptno_pk primary key(deptno);
테이블: cuppang_order
컬럼명: order_id (주문번호), prod_name(상품명), prod_price(상품가격), order_date(주문날짜), order_cnt(수량)
drop table cuppang_order;
create table cuppang_order
( order_id number(10),
prod_name varchar2(50),
prod_price number(10,2),
order_date date,
order_cnt number(10) );
alter table cuppang_order
add constraint cp_order_id primary key(order_id);
insert into cuppang_order
values(1, '서울우유', 2400, to_date('2025/07/01', 'RRRR/MM/DD'), 1);
insert into cuppang_order
values(2, '바나나 우유', 1500, to_date('2025/07/02', 'RRRR/MM/DD'), 3);
-- 제약 확인
select a.constraint_name, a.constraint_type, b.column_name
from user_constraints a, user_cons_columns b
where a.constraint_name = b.constraint_name
and lower(a.table_name) = 'cuppang_order';
drop table cuppang_order;
create table cuppang_order
( order_id number(10) constraint cp_order_id_pk primary key ,
prod_name varchar2(30),
prod_price number(10,2),
order_date date,
order_cnt number(10) );
-- alter table cuppang_order
-- add constraint cp_order_id primary key(order_id);
insert into cuppang_order
values( 1, '서울우유', 2400, to_date('2025/07/01','RRRR/MM/DD'), 1 );
insert into cuppang_order
values( 2, '바나나 우유', 1500, to_date('2025/07/02','RRRR/MM/DD'), 3 );
-- 제약 확인
select a.constraint_name, a.constraint_type, a.table_name, b.column_name
from user_constraints a, user_cons_columns b
where a.constraint_name = b.constraint_name
and lower(a.table_name) = 'cuppang_order';
create table employees
( employee_id number(10) constraint emp_id_pk primary key,
first_name varchar2(20),
last_name varchar2(20),
email varchar2(20),
phone_number varchar2(30),
hire_date date,
job_id varchar2(10),
salary number(20),
commission_pct number(10,2),
manager_id number(10),
department_id number(10) );
insert into employees
select *
from hr.employees;
select * from employees;
create table departments
( department_id number(10) constraint dept_id_pk primary key,
department_name varchar2(30),
manager_id number(10),
location_id number(10) );
insert into departments
select *
from hr.departments;
select * from departments;