SQL(Primary/Foreign Key)

김혜민·2024년 2월 13일

SQL

목록 보기
10/21

1. Primary key

  • 테이블의 각 레코드를 식별-> 테이블 당 하나의 기본키를 가짐
  • 중복되지 않은 고유값을 포함-> Null값 포함 x

1-1) primary key 생성 문법

create table tablename
(
	column1 datatype not null,
    column2 datatype not null,
    ...
    Constraint constraint_name
      primary key (column 1, column 2...)
      
 );

1-2) 하나의 칼럼을 기본키로 설정

create table person
(
	pid int not null, <-primary key이기 때문에 반드시 not null!
    name varchar(16),
    ...
    primary key (pid)
);

1-3) 여러개의 칼럼을 기본키로 설정

create table animal
(
	name varchar(16) not null, <-primary key이기 때문에 반드시 not null!
    type varchar(16) not null,
    age int,
    primary key (name, type) <- 궐호 안에 같이 써주면 됨!
);

1-4) primary key 삭제

alter table tablename
drop primary key;

1-5) 다시 primary key 생성

alter table tablename
add primary key (column 1, column 2...);

1-6) 여러개의 칼럼을 기본키로 다시 설정

alter table tablename
add constraint pk_tablename primary key(column1, column2...);

2. Foreign key

  • 한 테이블을 다른 테이블과 연결
  • 참조되는 테이블의 항목은 그 테이블의 기본키(혹은 단일값)

2-1) foreign key 생성문법

create table tablename
(
	column1 datatype not null,
    column2 datatype not null,
    column3 datatype,
    ...
    (Constraint constraint_name) <- 생략가능
      Primary key(column1, column2,..),
    (Constraint constraint_name) <- 생략가능
      Foreign key(column3, column4...) References REF_tablename(REF_column)

);
  • create table 에서 Foreign key를 지정하는 경우, Constraint는 생략가능!

2-2) 자동 생성된 constraint 확인방법

show create table tablename;

2-3) Foreign key 삭제

alter table tablename
drop foreign key FK_constraint;

*삭제해도 desc 치면 key에 mul이라고 뜨지만 show create table tablename 치면
key 'fk_이름'이라고만 뜸!

2-4) table 생성 이후 foreign key 지정

alter table tablename
add foreign key (column) references ref_tablename(ref_column)
profile
성장하는 주니어 데이터 분석가입니다!

0개의 댓글