KDT 수업/MySQL

Day1: MySQL 데이터 타입 / 제약조건

니니는 진짜 전설이다 2023. 3. 15. 17:30

주석 쓰는법

  • 한줄주석: # 또는 -- 쓰고 뒤에 글쓰기
  • 여러줄 주석: /*  (여기에 쓰기)  */

 

데이터베이스(Database)

: 데이터베이스는 체계화된 데이터의 모임으로서, 여러 사용자들이 공유하여 사용할 수 있도록 통합하여 관리되는 데이터의 집합을 의미한다. >> 여러 종류의 데이터들이 체계적으로 저장, 관리되어 있는 시스템을 말한다.

데이터베이스는 주로 컴퓨터 시스템에서 사용되며, 파일 시스템과 달리 데이터의 중복을 최소화하고 데이터의 일관성, 무결성, 보안성, 효율성 등을 보장하며 데이터에 대한 효과적인 검색과 업데이트를 가능하게 한다.

 


테이블(table)

: 데이터베이스에서 가장 기본적인 개념 중 하나로, 데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조이다.

테이블은 열(Column)과 행(Row)으로 이루어져 있으며, 각 열은 특정한 데이터 유형을 가지고 있다. 테이블은 하나 이상의 열로 구성되며, 각 열은 일반적으로 고유한 이름을 가지고 있다.

 


스키마(Schema)

: 데이터베이스에서 스키마(Schema)는 데이터베이스 구조를 정의하는 개념이다. 스키마는 데이터베이스에서 사용되는 테이블, 필드, 제약조건 등의 구조를 정의하며(일종의 청사진), 데이터의 유효성과 일관성을 유지하기 위한 중요한 역할을 한다.

 

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억

bigint: 정수형 데이터타입(8byte), 무제한 표현

float: 부동 소수형 데이터타입(4byte)
decimal: 고정 소수형 데이터타입(길이 + 1byte)
double: 부동 소수형 데이터타입(8byte)
    


2. 문자형 타입

char: 고정 길이 데이터타입(최대 255byte). 지정된 길이보다 짧은 데이터를 입력할 때 나머지 공간을 공백으로 채움
varchar: 가변 길이 데이터타입(최대 65535byte). 지정된 길이보다 짧은 데이터를 입력할 때 나머지 공간을 채우지 않음
text: 문자열 데이터타입(최대 65535byte)
longtext: (거의)무제한 문자열 데이터타입

 


3. 이진 데이터 타입

binary 또는 byte: char의 형태의 이진 데이터타입(최대 255byte)
varbinary: varchar의 형태의 이진 데이터타입(최대 65535byte)

 

 

4. 날짜 데이터타입

date: 날짜(년도, 월, 일) 형태의 데이터타입(3byte)
time: 시간(시, 분, 초) 형태의 데이터타입(3byte)
datetime: 날짜와 시간 형태의 데이터타입(8byte)
timestamp: 1970년 1월 1일 0시 0분 0초부터 시작한 ms타입의 시간이 저장(4byte)
1000

 

 


제약조건(constrait)

데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙을 의미

 

not null

  • null값을 허용하지 않는다
  • 중복값을 허용한다

unique

  • 중복값을 허용하지 않음
  • null 값을 허용한다

primary key

  • null값을 허용하지 않는다
  • 중복값을 허용하지 않는다
  • 테이블에 단 하나만 사용할 수 있음
  • 해당 테이블의 대표가 되는 키

foreign key

  • primary key 를 가진 테이블과 연결하는 역할

default

  • null값을 삽입할 때 기본이 되는 값을 저장할 수 있게 함

enum

  • 원하는 범위를 설정하고 해당 범위의 값만 저장한다
    예) enum('남자', '여자')   => 이렇게 쓰면 이렇게만 넣을 수 있음. 그냥 남 여 안들어감
  • 권장하는 방법은 아님

 

 


1. 데이터베이스 생성하기

create database 데이터베이스명; 

create database kdt;

여기서 데이터베이스명은 kdt

워크벤치에서는 끝에 세미콜론을 넣어줘야 한다

실행할땐 실행하려는 문장을 긁어두거나 옆에 커서를 두고 Ctrl + Enter

 

 

2. 데이터베이스 확인하기

show databases;

 

 

3. 데이터베이스 삭제하기

drop database 데이터베이스명;

drop database kdt;

 

4. 데이터베이스 선택

# use 데이터베이스명;

use kdt;

 

5. 테이블 만들기

# create table 테이블명( 필드 );

create 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(),
    point int default 0 
);

 

6. 테이블 확인하기

# desc 테이블명;

desc member;

 

7. 테이블 삭제하기 

# drop table 테이블명;

drop table member;

 

8. 테이블 필드 추가

# alter table 테이블명 add 컬럼명 데이터타입 제약조건

alter table member add mbti varchar(10);

 

9. 테이블 필드 수정하기

# alter table 테이블명 modify column 컬럼명 데이터타입 제약조건;

alter table member modify column mbti varchar(20);

 

10. 테이블 필드 삭제

# alter table 테이블명 drop 컬럼명;

alter table member drop mbti;

 

11. 데이터 삽입하기

# insert into 테이블명 values (값1, 값2, 값3... )
# insert into 테이블명 (필드명1, 필드명2, 필드명3 ...) values (값1, 값2, 값3... )

# 먼저 테이블 생성
create table word(
eng varchar(50) primary key,
kor varchar(50) not null,
lev int
);

# desc 특정 테이블의 컬럼 정보를 조회하는 명령어
desc word;

insert into word values('apple', '사과', 1);
select * from word;   #데이터가 잘 들어갔는지 확인
insert into word values('banana', '바나나', 2);
insert into word values('num', '숫자');  #Error Code: 1136. Column count doesn't match value count at row 1	
insert into word values('orange', null, null);  #Error Code: 1048. Column 'kor' cannot be null

insert into word (eng, kor, lev) values ('melon', '메롬', 1);
insert into word (eng, kor, lev) values ('orange', '오렌지', 1);
insert into word (eng, kor) values ('hehe', '히히');
insert into word (eng) values ('grapes'); #Error Code: 1364. Field 'kor' doesn't have a default value

 


먼저 만들어둔 member  테이블에 데이터 삽입해보기

# 삽입
insert into member values ('apple', 1111, '김사과', 000-0000-0000, 'A@mail', 'F', 000000, 2000000, 11111, '서울','강남','테', now(), 0 );
insert into member values ('banana', 2222, '바나나', 000-0000-0000, 'B@mail', 'F', 000000, 2000000, 22222, '서울','강남','테', now(), 0 );
insert into member values ('orange', 3333, '오렌지', 000-0000-0000, 'O@mail', 'M', 000000, 1000000, 33333, '인천','연수','솓', now(), 0 );
insert into member values ('melon', 4444, '이메론', 000-0000-0000, 'M@mail', 'M', 000000, 2000000, 44444, '서울','강남','테', now(), 0 );
insert into member values ('grape', 5555, '포도', 000-0000-0000, 'G@mail', 'F', 000000, 2000000, 55555, '인천', '연수', '송', now(), 0 );

# 전체 확인
select * from member;

 

 

데이터 삭제하기

# delete from 테이블명;
# delete from 테이블명 where 조건절;

delete from member;
# 조건절의 예)
delete from member where userid = 'apple';  # userid가 apple인 사용자를 삭제한다 
delete from member where gender = 'M';

 

데이터 수정하기

# update 테이블명 set 필드명1=값1, 필드명2=값2 ...
# update 테이블명 set 필드명1=값1, 필드명2=값2 ... where 조건절;

update member set point=100;
update member set point=point+50;
update member set point=point+300 where gender='F';

update member set email='banana@naver.com' where userid = 'banana';
#오렌지 회원의 우편번호를 '12345', 주소1은 '서울시 서초구', 주소2는 '양재동', 주소3은 '아파트 101동 101호'로 변경 
update member set zipcode=12345, address1='서울시 서초구', address2='양재동', address3='아파트101동101호' where userid='orange';

 

 


 

외울게 많고 선생님은 타자가 빠르고 중간에 풀어주는 썰들이 재미있었다

오늘치 끝\^o^/