본문 바로가기
MySQL

KEY

by 개발자공부 2024. 6. 11.

PRIMARY KEY (PK)

각 레코드에 대해 고유하다.

NULL 값이 허용 안됨.(NOT NULL)

레코드를 식별하는 데 사용, 테이블당 하나의 기본키만 지정 가능하다.

// 처음부터 지정
CREATE TABLE users(
	id int primary key
);

// 마지막에 지정
CREATE TABLE users(
	id int not null,
    name varchar(20) not null,
    email varchar(30) not null,
    primary key(id)
);

FOREIGN KEY

외래키.

하나의 테이블에서 다른 테이블의 기본키를 참조한다.

데이터베이스에서 데이터 무결성(Integrity)을 유지하는데 중요한 역할을 한다.

무결성, 일관성 유지/ 관계 정의

CREATE TABLE tb_customer(
	id int not null,
	name varchar(20) not null,
    product varchar(50) not null
    FOREIGN KEY(id) REFERENCES tb_product(id); 
    -- FOREIGN KEY(외래키) REFERENCES 참조할 부모 테이블(키 값)
);

UNIQUE

UNIQUE key는 데이터베이스 테이블의 열(Column)에 적용되는 제약 조건이다. 이를 통해 해당 열의 값들이 고유(unique)하다는 것을 보장한다. 즉, 중복된 값이 허용되지 않는다.

 

또한 UNIQUE 제약 조건은 데이터베이스에서 인덱스(index)를 생성할 때도 사용된다. UNIQUE 제약 조건이 설정된 열은 인덱스를 생성할 때 자동으로 인덱스로 지정되어 검색 속도를 높일 수 있다.

 

특징

  1. 고유한 값 보장: 특정 열에 UNIQUE key가 적용되면 해당 열에 있는 모든 값들이 고유해야 한다. 즉, 중복된 값을 허용하지 않는다.
  2. NULL 값 허용: 기본적으로 UNIQUE key는 NULL 값을 허용한다. 즉, 해당 열에는 NULL 값이 최대 하나까지만 허용된다. (MySQL에서는 하나 이상의 NULL 값도 허용할 수 있도록 설정할 수 있다.)
  3. 인덱스 생성: UNIQUE key는 내부적으로 해당 열에 대한 인덱스를 생성한다. 이는 검색 성능을 향상시키고 중복된 값을 피하기 위한 용도로 사용된다.
  4. 테이블 전체에 대해 적용 가능: UNIQUE key는 단일 열 또는 여러 열에 적용할 수 있다. 즉, 하나의 열에만 고유성을 적용할 수도 있고, 여러 열의 조합에 고유성을 적용할 수도 있다.
  5. 제약 조건: UNIQUE key는 데이터 무결성을 보장하기 위한 제약 조건으로 사용된다. 이를 통해 잘못된 데이터가 테이블에 삽입되는 것을 방지할 수 있다.

+) 이메일 주소 같은 것은 겹치면 안되니까 unique key로 설정.

 

drop table memeber;

-- 멤버 테이블 설계 
-- unique 제약 설정 
create table member(
	id int primary key auto_increment,
    email varchar(50) unique, 
    phone varchar(20), 
    address varchar(100) not null
);



INSERT INTO member (email, phone, address)
VALUES 
( 'hong@test.com', '010-1234-5678', '서울시 강남구'),
( 'kim@test.com', '010-2345-6789', '서울시 서초구'),
( 'lee@test.com', '010-3456-7890', '서울시 종로구'),
( 'park@test.com', '010-4567-8901', '서울시 마포구'),
( 'choi@test.com', '010-5678-9012', '서울시 강서구'),
( 'kang@test.com', '010-6789-0123', '서울시 송파구');

desc `member`;

select * from member;

-- 문제1
-- id가 2인 회원에 전화번를 010-2222-2222 로 수정해주세요 
update member 
set phone ='010-2222-2222'
where id = 2;

-- 문제
-- id가 5인 회원에 이메일과 주소를 'a@naver.com' , '부산시 진구' 로 수정 
update member 
set email ='a@naver.com', address = '부산시 진구'
where id = 5;

-- 문제 3
-- id 1번 회원에 email 을 a@naver.com 으로 수정 해보세요 
update member 
set email = 'a@naver.com'
where id = 1; 
-- email 컬럼에 `a@naver.com` 먼저 들어가 있어서 업데이트 불가 
-- unique 제약이라 중복을 허용하지 않습니다.

'MySQL' 카테고리의 다른 글

Function  (0) 2024.06.11
JOIN  (0) 2024.06.11
INDEX  (0) 2024.06.11
table CRUD  (3) 2024.06.11
데이터베이스  (0) 2024.06.05