테이블
표 형태로 구성된 2차원 구조, 행과 열로 이루어짐
행은 로우나 레코드로 불리고 열은 컬럼이나 필드로 불림
제약 조건
데이터의 무결성을 지키기 위해 제한하는 조건
데이터의 무결성: 데이터에 결함이 없다는 뜻
예시) 네이버 회원 아이디의 중복
mysql에서 제공하는 대표적인 제약 조건
primary key 제약조건
foreign key 제약조건
unique 제약조건
check 제약조건
default 정의
null 값 허용
기본 키(primary key) 제약조건
행 데이터들 중 데이터를 구분할 수 있는 식별자
예시) 회원 테이블의 아이디, 학생 테이블의 학번
기본 키에 입력되는 값은 중복 불가
null 값 입력 불가
테이블은 기본 키를 1개만 가질 수 있음
create table 에서 설정하는 기본 키 제약조건
use naver_db;
create table member
(mem_id char(8) not null primary key, -- 기본 키 설정
mem_name varchar(10) not null,
mem_number tinyint not null,
addr char(2) not null,
phone1 char(3) null,
phone2 char(8) null,
height tinyint unsigned null,
debut_date date null);
앞으로 회원 아이디(mem_id)는 회원 테이블(member)의 기본 키가 됨
앞으로 입력되는 회원 아이디는 중복될 수 없고 비어있을 수 없음
alter table에서 설정하는 기본 키 제약조건
이미 만들어진 테이블을 수정하는 alter table 구문을 사용
drop table if exists member;
create table member
(
mem_id char(8) not null,
mem_id varchar(10) not null,
height tinyint unsigned null
);
alter table member -- member 변경
add constraint -- 제약조건 추가
primary key (mem_id) -- mem_id 열에 기본 키 제약조건 설정
create table 안에 primary key를 설정한 것과 지금 alter table로 primary key를 설정한 것은 동일한 결과를 가짐
외래 키 제약조건
두 테이블 사이의 관계를 연결
데이터의 무결성을 보장해주는 역할
외래 키가 설정된 일은 다른 데이블의 기본 키와 연결
기본 키가 있는 테이블을 기준 테이블
외래 키가 있는 테이블을 참조 테이블
create table에서 설정하는 외래 키 제약조건
외래키를 생성하는 방법은 create table 끝에 foreign key 키워드를 설정하는 것
DROP TABLE IF EXISTS buy, member;
CREATE TABLE member (
mem_id CHAR(8) NOT NULL primary key,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
CREATE TABLE buy (
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id CHAR(8) NOT NULL,
prod_name CHAR(6) NOT NULL,
FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);
외래 키의 형식은 foreign key(열_이름) reference 기준_테이블(열_이름)
alter table에서 설정하는 외래 키 제약조건
외래 키를 설정하는 또 다른 방법은 alter table 구문을 이용하는것
DROP TABLE IF EXISTS buy;
CREATE TABLE buy (
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id CHAR(8) NOT NULL,
prod_name CHAR(6) NOT NULL
);
alter table buy -- buy 수정
add constraint -- 제약조건 추가
foreign key(mem_id) -- 외래 키 조약조건을 mem_id에 설정
references member(mem_id); -- 참조할 기준 테이블은 member 테이블의 mem_id
on update cascade 문
기준 테이블의 데이터가 삭제되면 참조 테이블의 데이터도 삭제되는 기능
기타 제약조건
고유 키(unique) 제약조건
'중복되지 않은 유일한 값'을 입력해야 하는 조건
기본 키 제약 조건과 달리 null 값 허용
기본 키와 달리 테이블에 여러개 설정 가능
drop table if exists buy, member;
create table member
(
mem_id char(8) not null primary key,
mem_name varchar(10) not null,
height tinyint unsigned null,
email char(30) null unique
);
체크(check) 제약조건
입력되는 데이터를 점검하는 기능을 함
예시) 평균 키에 마이너스 값이 입력되지 않게 하기
drop database if exists member;
create table member
(
mem_id char(8) not null primary key,
mem_name varchar(10) not null,
height tinyint unsigned null check (height >= 100),
phone1 char(3) null
);
기본값(default) 정의
값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 방법
키를 입력하지 않고 기본적으로 160이라고 입력되도록 하기
drop database if exists member;
create table member
(
mem_id char(8) not null primary key,
mem_name varchar(10) not null,
height tinyint unsigned null default 160,
phone1 char(3) null
);
'데이터베이스(DB)' 카테고리의 다른 글
인덱스 (0) | 2024.12.09 |
---|---|
테이블과 뷰(2) (0) | 2024.12.03 |
SQL 고급 문법(4) (0) | 2024.11.25 |
SQL 고급 문법(3) (1) | 2024.11.23 |
SQL 고급 문법(2) (0) | 2024.11.23 |