티스토리 뷰

데이터 타입

데이터타입 설명
숫자 데이터 타입 SMALLINT 정수형 데이터 타입 (2byte)
INT 정수형 데이터 타입 (4byte)
BIGINT 정수형 데이터 타입 (8byte) 무제한 수 표현 가능
FLOAT(p) 부동 소수형 데이터 타입(4byte) 소수점 아래 7자리까지
문자 데이터 타입 CHAR(n) 고정 길이 문자형 (1~255 byte)
VARCHAR(n) 가변 길이 문자형 (1~65,535 byte)
LONGTEXT 대용량 문자열 데이터 타입
LONGBLOB 대용량 바이너리(2진법) 데이터 타입, 동영상 같은 거
날짜/시간 데이터 타입 DATE 날짜 데이터 타입 YYYY-MM-DD
DATETIME 날짜/시간 데이터 타입 YYYY-MM-DD HH:MM:SS

char(10) <= xyz : 10자리 중 3글자를 저장, 7자리가 남음 - 작업을 빨리 해서 성능 우수, 공간낭비가 있다.

varchar(10) <= xyz : 들어오는 문자열의 길이에 따라 변함, 3만큼만 저장 - 공간효율 우수 (권장)

 

 

제약조건

제약조건 유형 설명
NOT NULL - 컬럼에 NULL값이 들어오는 걸 막음
- 사번, 이름, 주민번호, 전화번호등의 필수 컬럼에 선언
- 데이터 타입 몰라서 모두 다 들어올 수 있음
* null값 : 모르는 값, 정의되지 않은 값으로 0(숫자)과 공백(문자)과는 다른 특수한 값
UNIQUE - 중복되지 않는 유일한 값을 입력해야 하는 제약조건
- 주민번호, 전화번호, 메일 등 고유한 값이 필요한 컬럼에 선언
PRIMARY KEY - 기본키 제약조건으로 NOT NULL + UNIQUE 성격 모두 가진 제약조건
 (NN UK를 동시에 가진 것 중에 고르는 느낌)
- PK 제약조건이 선언된 컬럼엔 null값이나 중복된 값이 입력될 수 없음
- PK 제약조건은 테이블 당 한번만 선언 가능(대표)
- 사번, 학번, 회원/제품번호 등의 컬럼에 사용(개인적인 건 보안상의 문제로 제외)
FOREIGN KEY - 외래키 제약조건으로 특정 테이블에서 다른 테이블을 참조하는 제약조건
- FOREIGN KEY 제약조건 때문에 테이블과 테이블이 연결됨
CHECK - 컬럼이 만족해야하는 조건문을 지정하는 제약조건

 

테이블 생성

create table 테이블명

(컬럼명1 데이터타입(컬럼사이즈),

 컬럼명2 데이터타입(컬럼사이즈));

create table test1
(id int,
 name varchar(10),
 start_date date,
 phone varchar(20));
 
-- describe로 확인
desc test1;

 

테이블명 : members

컬럼명 member_id member_name birth job phone
데이터타입 int varchar date varchar varchar
컬럼사이즈 - 8 - 20 20
제약조건 PK NN NN - UK
create table members
 (member_id int primary key,
 member_name varchar(8) not null,
 birth date not null,
 job varchar(20),
 phone varchar(20) unique key);

desc members;

 

테이블명 : products

컬럼명 prod_id prod_name price make_date company
데이터타입 int varchar int date varchar
컬럼사이즈 - 20 - - 10
제약조건 PK NN CK (price > 0) - NN
create table products
 (prod_id int primary key,
 prod_name varchar(20) not null,
 price int check (price > 0),
 make_date date,
 company varchar(10) not null);

desc products;

check는 괄호 안에 조건문 넣어야함 (좌변 =(비교연산자) 우변) 형태

 

 

테이블명 : orders

컬럼명 order_num member_id prod_id order_date
데이터타입 int int int date
컬럼사이즈 - - - -
제약조건 PK FK FK -
Default값 - - - now()
select now()
from dual;

create table orders
 (order_num int,
 member_id int,
 prod_id int,
 order_date datetime default now(),
 primary key(order_num),
 foreign key(member_id) references members(member_id),
 foreign key(prod_id) references products(prod_id));
 
 desc orders;

order_num int primary key, < column level 문법 > 한 칸 띄우고 제약조건 : not null 선언 시 필수(많이 씀)

밑에 따로 제약조건 선언 < table level 문법 > : foreign key 선언 시 필수

foreign key 뒤에는 부모 테이블과 부모 컬럼명을 넣어야 함(references)

 

 

테이블 생성 Review 및 추가 속성

AUTO_INCREMENT 속성 : 1부터 시작해서 1씩 증가하는 값을 반환하는 속성

- 시작/증가 값 변경하고 싶은 경우, 테이블 생성 후 테이블 수정 구문 (alter table)로 변경 가능

- 숫자 데이터 타입에 프라이머리 또는 유니크 타입이어야 함

- null 값을 지정하면 자동으로 값이 입력

 

테이블 생성 시 auto_increment 속성 선언 문법

creat table 테이블명
 (컬럼1  int auto_increment primary key,
 컬럼2 데이터타입,
 컬럼3 데이터타입);
create table stu20
 (stu_id int auto_increment primary key,
 stu_name varchar(5) not null,
 age int check (age > 19));

desc stu20;

 

 

- 테이블 생성 후 auto_increment 입력값(시작값) 변경 (default = 1)
문법) SQL> alter table 테이블명 auto_increment=입력값;

- 증가값 변경 (default =1)
문법) SQL> set @@auto_increment_increment=증가값;

- 현재 몇 번까지 사용됐는지 확인하는 방법
문법) SQL> select last_insert_id();

 

 

select now() 만 써도 됐었는데 from dual;을 안 붙이면 오류뜨기도 했다. 왜 그런지 찾아봐야겠음.

댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함