728x90
목차
1. 스키마 정의
2. 자료형
3. 제약조건
1. 스키마 정의
스키마 정의
- DDL
- 데이터베이스 생성
- 테이블 생성
create database sampelDB:
use sampleDB;
create table BusinessCard(Name varchar(255), Address varchar(255), Telephone varchar(255));
insert into BusinessCard values (‘Bob’, ’Seocho-dong 123’, ‘123-4567’);
select * from BusinessCard;
drop table BusinessCard;
2. 자료형
자료형(Data Types)
- 정수형(부호 있음/없음)
- 실수형(길이, 소수점 이하 자리 수)
—> FLOAT, DOUBLE은 2진법
- 문자열
- TEXT 문자열
—> MySQL에서는 4Gbyte까지의 문자열을 지원한다.
- BLOB(Binary Large Object) —> image, file을 관리할때 사용
—> 최대 4Gbyte
- 시간 관련
—> DATETIME과 TIMESTAMP의 차이 : 시작 시점이 다름
1970-01-01 00:00:00 이후(Unix Epoch)에 걸린 시간을 기록
3. 제약조건
제약조건(Constraint)
입력 데이터의 제약조건을 걸어 해당되지 않는 데이터는 입력되지 않음
NOT NULL | 데이터가 NULL 값을 받아들이지 않음 |
UNIQUE | 테이블에 동일한 값이 입력되어 있을 경우 받아들이지 않음 |
PRIMARY KEY | 기본키 제약조건(UNIQUE, NOT NULL 조건) |
FOREIGN KEY | 외래키 제약조건 |
CHECK | 입력값 체크 (예: Age >= 0) 단, MySQL에서는 동작하지 않음 |
DEFAULT | 컬럼값이 입력되지 않으면 기본값을 입력 |
ex - NOT NULL
create table BusinessCard(Name varchar(255) not null, Address varchar(255), Telephone varchar(255));
Insert into BusinessCard values(NULL, ‘Seocho-dong 123’, ‘123-4567); —> 오류
ex - UNIQUE
create table BusinessCard(Name varchar(255) unique, Address varchar(255), Telephone varchar(255));
Insert into BusinessCard values(‘Bob’, ‘Seocho-dong 123’, ‘123-4567);
Insert into BusinessCard values(‘Bob’, ‘Seocho-dong 345’, ‘321-4321); —> 오류
ex - PRIMARY KEY —> 후보키 중에 하나를 선택하는 것(unique한 값을 선택, 하나 이상)
create table BusinessCard(id int not null, Name varchar(255), Address varchar(255), Telephone varchar(255), primary key(id));
Insert into BusinessCard values(1, ‘Bob’, ‘Seocho-dong 123’, ‘123-4567);
Insert into BusinessCard values(2, ‘Bob’, ‘Seocho-dong 345’, ‘321-4321);
select * from BusinessCard;
ex - FOREIGN KEY —> 참조무결성(insert와 delete시, 순서가 존재한다.)
create table BusinessCard(id int not null, Name varchar(255), Address varchar(255), Telephone varchar(255), primary key(id));
create table Salary(id int not null, salary_amount int, business_card_id int not null, primary_key(id), foreign key(business_card_id) references BusinessCard(id));
insert into BusinessCard values(1, ‘Bob’, ‘Seocho-dong 123’, ‘123-4567’);
insert into Salary values(1, 5000, 1);
select * from BusinessCard;
select * from Salary;
—> 참조무결성으로 BusinessCard에 데이터가 먼저 들어간 다음 Salary에 데이터가 들어가야한다.
—> 삭제할때는 반대로 Salary에서 데이터를 삭제 후, BusinessCard에서 삭제해야한다.
ex - CHECK
create table BusinessCard(Name varchar(255), Address varchar(255), Telephone varchar(255), Age int, check(Age > 0));
insert into BusinessCard values(‘Bob’, ‘Sinsa-dong 345’, ‘321-4321’, 0); —> 오류
ex - DEFAULT
create table BusinessCard(Name varchar(255), Address varchar(255) default ’SEOUL’, Telephone varchar(255));
insert into BusinessCard values(‘Bob’, NULL, ‘123-4567’);
select * from BusinessCard;
ex - AUTO INCREMENT
create table BusinessCard(ID int auto_increment, Name varchar(255), Address varchar(255), Telephone varchar(255), primary key(id));
insert into BusinessCard(Name, Address, Telephone) values (‘Bob’, ’SEOUL’, ‘123-4567’);
select * from BusinessCard;
728x90
'IT > SQL' 카테고리의 다른 글
MySQL[11] - 스키마 수정, 스키마 삭제 (0) | 2022.06.02 |
---|---|
MySQL[10] - 중복정보 수정, 정규형, 참조무결성 (0) | 2022.05.29 |
MySQL[8] -서브쿼리, 집합연산 (0) | 2022.05.26 |
MySQL[7] - LIKE 검색, NULL값, GROUP BY/HAVING (0) | 2022.05.25 |
MySQL[6] - SELECT INTO, INSERT INTO SELECT (0) | 2022.05.25 |