Day 10 SQL 테이블, 데이터타입, 제약조건
2023. 3. 16. 08:59ㆍSQL
테이블(Table)
데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조
✔스키마: DB 구조와 제약조건에 관한 명세를 기술한 집합의 의미
create table 테이블명(
필드명1 데이터타입 제약조건,
필드명2 데이터타입 제약조건,
필드명3 데이터타입 제약조건,
...
필드명n 데이터 타입 제약조건
)
✔데이터 타입 (Data Type)
1) 숫자형 타입
tinyint: 정수형 데이터 타입(1byte) | 범위 :-128 ~ 127 표현
smallint: 정수형 데이터 타입(2byte) | 범위 :-32768 ~ 32767 표현
mediumint: 정수형 데이터 타입(3byte)| 범위 : -8388608 ~ 8388607 표현
int: 정수형 데이터 타입(4byte) | 범위 : -21억 ~ 21억 표현
->보통 int가 기본형이라서, 가장 속도가 빠르게 방이 생성되고, 안정적으로 사용된다.
bigint : 정수형 데이터 타입(8byte) | 범위 : 무제한
float: 부동 소수형 데이터 타입(4byte)
double : 부동 소수형 데이터 타입 (8byte)
-> 보통 추천
decimal(길이,소수): 고정 소수형 데이터 타입 (길이 + 1byte)
2) 문자형 타입
cher: 고정 길이 데이터 타입 (최대 255byte)
-> 지정된 길이보다 짧은 데이터가 입력될 때, 나머지 공간을 공백으로 채움
-> 왠만해서 안쓰는게 좋음
varchar: 가변 길이 데이터 타입 (최대 65535byte)
-> 지정된 길이보다 짧은 데이터를 입력 시, 나머지 공간은 채우지 않음
text : 문자열 데이터 타입 (최대 65535byte)
longtext : 문자열 데이터 타입 (무제한)
3) 이진 데이터타입
binary 또는 byte: char의 형태의 이진 데이터 타입(최대 255byte)
-> 데이터베이스에 이진 데이터 타입을 넣지 않는다.
-> 사진,음악 저장시 서버의 특정 디렉토리에 저장하지 DBMS에 저장하지 않는다.
-> 위치의 주소만 DB에 저장한다.
varbinary : varchar의 형태의 이진 데이터 타입(최대 65535byte)
4) 날짜 데이터 타입
date : 날짜(년도,월,일) 형태의 데이터 타입 (3byte)
time : 시간(시,분,초) 형태의 데이터 타입 (3byte)
datetime: 날짜와 시간 형태의 데이터 타입 (8byte)
timestamp: 1970년 1월 1일부터 시작한 ms(1/1000초) 타입의 시간이 저장(4byte)
✔ 제약조건 (constraint)
데이터의 무결성을 지키기 위해 데이터를 입력 받을 때 실행 되는 검사/규칙
1) not null
-> 해석: 절대 비어있으면 안됨, null X.
-> 중복값은 O
2)unique
-> 중복값 X.
-> null값 O
3) primary key
-> null 값 X
-> 중복값 x
-> 테이블의 단 하나만 사용 가능 !
-> 해당 테이블에 대표가 되는 키
4) foreign key
-> primary key를 가진 테이블과 연결하는 역할
-> ex) 테이블 1 ID를 테이블2 ID에 적용시키려면
primarykey = 테이블1 ID, foreign key = 테이블2 ID
5) default
-> null 값을 삽입할 때 기본이 되는 값이 저장할수 있게 함
6) enum
-> 원하는 범위를 설정하고 해당 범위의 값만 저장 #권장하지 않는다.#
ex) enum('남자','여자') = 남자,여자 이외엔 저장 불가 !
데이터베이스 사용하기
데이터베이스 확인
show database;
데이터베이스 생성
create database kdt(데이터베이스명);
데이터베이스 삭제
drop database kdt;
데이터베이스 사용하기(만들었으면 실행해야함)
use kdt;
테이블 만들기 및 사용하기
테이블 만들기
#create table 테이블명(분류 데이터타입, 제약조건,
분류2 데이터타입, 제약조건,
분류3 데이터타입, 제약조건,
);
예시)
crete table member(
userid varchar(20) primary key,#최상위 루트 키
userpw varchar(200) not null, #빈공간 불가
username varchar(20) not null,
hp varchar(20) not null,
email varchar(50) not null,
gender varchar(10) not null,
ssn1 varchar(6) not null,
ssn2 varchar(7) not null,
zipcode varchar(5), #제약조건 없음
address1 varchar(100),
address2 varchar(100),
address3 varchar(100),
regdate datetime default now(), #생성 날짜 기본값 null에 now()함수 적용
point int default 0 #point는 기본값 0
);
#테이블상태 확인하기
#desc 테이블명
desc member;
#테이블 삭제
#drop table 테이블명;
drop table member;
#테이블 필드 추가
#alter table 테이블명 add 컬럼명 데이터타입 제약조건
alter table member add mbti varchar(20) ;
#테이블 필드 수정
# alter table 테이블명 modify column 컬럼명 데이터타입 제약조건
alter table member modify column mbti varchar(20);
#테이블 필드 삭제
#alter table 테이블명 drop 컬럼명
alter table member drop mbti
#테이블 데이터 삽입(2가지)
#insert into 테이블명 values (값1,값2.....)
#insert into 테이블명 (필드명1,필드명2..) values (값1,값2......)
예시)
insert into word values('apple','사과',1);
insert into word (eng,kor,lev) values ('melon','멜론',1);
2번째 방법은 필드개수와 값 개수가 동일해야한다. (만약 다르다면 값에 null 입력)
728x90
'SQL' 카테고리의 다른 글
Day12 MySQL_ foreign key + join + union (0) | 2023.03.20 |
---|---|
SQL( AUTO_INCREMET) (0) | 2023.03.19 |
Day11 연산자와 데이터 검색, 정렬 (0) | 2023.03.17 |
1. 테이블 만들어서 데이터 삽입해보기 (0) | 2023.03.17 |
Day 10 데이터베이스 관리(DBMS)_MySQL (0) | 2023.03.15 |