테이블에서 생성하는 Key 속성 : 기본키, 참조키, 외래키, 슈퍼키, ...
기본키(Primary Key)는 테이블을 생성할 때 특정 컬럼에 지정하여 사용한다.
유일성 문제(데이터가 중복되면 안됨)의 해결을 위해 PK 사용
기본키 사용시 적용되는 제약 조건
: 중복값(duplication)이 입력될 수 없다.
/ null(미입력상태(의 값, 널 값)) 입력 불가 (not null)
쿼리에서 PK 적용하는 방법
: 지정하고 싶은 컬럼 contraints(제약조건) 영역에 기재
/ 테이블을 모두 설정한 후 소괄호를 닫기 전에 constraints 명령어를 사용하여 기재
컬럼에 입력 될 자료를 예상하여 설정해야 한다.
ex) 동일한 것이 있을 수 있는가? if X => PK 적용 대상
/ 향후 동일한 것이 존재 할 수 있는가? if O => PK 적용 대상 X
/ null 사용 가능 (미입력 상태로 둬도 되는가?) if O => PK 적용 대상
하나의 컬럼 또는 두 개의 컬럼을 묶어서 PK 지정할 수는 있지만, 두 개의 컬럼 각각에 지정할 수는 없다.
테이블을 만들어 둔 상태에서 primary key 적용
alter table list
add primary key (C/N);
alter table list
drop primary key;
create table T/N(
......
constraint primary key(C/N, C/N)
);
create database mallDB;
use mallDB;
create table goodsinfo(
num int unique,
code char(5) primary key,
name char(30),
price int,
maker char(20)
);
insert into goodsinfo values
(1, 'A001', '디지털TV', 520000, '제일'),
(2, 'A002', 'DVD', 240000, '제일'),
(3, 'U101', 'DSLR', 830000, '우수'),
(4, 'U102', '전자사전', 160000, '우수'),
(5, 'H704', '전자렌지', 90000, '하나');
select * from goodsinfo;
set sql_safe_updates = 0;
update goodsinfo set price = 750000 where num = 3;
select * from goodsinfo;
select * from goodsinfo where maker = '%제일%'; #셀 내용 모두 동일
select * from goodsinfo where name like '%TV%'; #셀 내용 중 일부
select * from goodsinfo order by code desc;
select * from goodsinfo order by maker asc, price asc;
delete from goodsinfo where code = 'A002';
select * from goodsinfo;
select
num as 번호,
code as 상품번호,
name as 상품명,
price as 가격,
maker as 제조사
from goodsinfo;