Day 10 SQL 테이블, 데이터타입, 제약조건

2023. 3. 16. 08:59SQL

테이블(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