데이터베이스에 데이터를 저장하고 관리하는 법을 배워보자.
데이터는 저장
- 조회
- 갱신
- 삭제
의 단계를 거치게 된다.
이 중 조회
단계는 앞서 배웠다. 이번에 저장
, 갱신
, 삭제
하는 방법들을 배워보자.
데이터베이스를 생성해보자. 예시로 강의 평가 데이터베이스를 만들어보자.
CREATE DATABASE course_rating;
실행 후 새로고침을 하면 SCHEMAS에 course_rating 데이터베이스가 생성된다.
만약 이 상태에서 한 번 더 실행을 하면 어떻게 될까 ❓
같은 이름의 데이터베이스가 이미 존재한다는 오류가 발생한다.
오류를 확인하지 않고도 같은 데이터베이스가 이미 존재하는지 확인할 수 있는 방법이 있다.
CREATE DATABASE IF NOT EXISTS course_rating;
IF NOT EXISTS
는 만약 존재하지 않는다면 이라는 의미이다.
즉, course_rating이라는 데이터베이스가 없을 경우에만 SQL문을 실행하라는 의미이다.
테이블을 생성해보자.
상단에서 왼쪽에서 5번째 버튼을 클릭하면 테이블을 생성할 수 있다.
이후 Schema
를 선택하라는 문구가 뜬다. Schema
는 데이터베이스
이다.
사용할 데이터베이스를 지정하는 방법은 두 가지가 있다.
더블클릭
USE course_rating;
학생(student) 정보를 담을 테이블을 생성해보자.
id
컬럼은 PK(기본키)
로 설정INT
는 숫자형VARCHAR
는 문자열, 괄호() 안의 숫자는 문자열의 최대 길이를 의미DATE
는 날짜 타입PK
는 Primary Key (기본키)NN
는 NOT NULLAI
는 Auto Increment로 점점 증가하는 숫자값을 자동으로 넣어준다.MySQL에서 일반적으로 쓰이는 데이터 타입을 세 가지 카테고리로 분류할 수 있다.
- Numeric types 숫자형 타입
- Date and Time types 날짜 및 시간 타입
- Sting types 문자열 타입
📌 Numeric types 숫자형 타입
📝 정수형
1) TINYINT
작은 범위 정수들을 저장할 때 쓰이는 데이터 타입으로 최소 128 ~ 최대 127까지의 정수를 저장할 수 있다. SIGNED
는 양수, 0, 음수를 나타내고, UNSIGNED
는 0과 양수를 나타낸다.
TINYINT SIGNED
: -128 ~ 127 (기본값)TINYINT UNSIGED
: 0 ~ 2552) SMALLINT
TINYINT 보다 좀 더 큰 범위의 정수를 나타낼 때 쓰는 데이터 타입이다.
SMALLINT SIGNED
: -32768 ~ 32767SMALLINT UNSIGNED
: 0 ~ 655353) MEDIUMINT
더 넓은 범위를 나타내는 데이터 타입이다.
MEDIUMINT SIGNED
: -8388608 ~ 838860\MEDIUMINT
: 0 ~ 167772154) INT
더 넓은 범위를 나타내는 데이터 타입이다.
INT SIGNED
: -2147483648 ~ 2147483647INT UNSIGNED
: 0 ~ 42949672955) BIGINT
아주 큰 범위의 정수를 저장하는 데이터 타입이다.
BIGINT SIGNED
: -9223372036854775808 ~ 9223372036854775807BIGINT UNSIGNDE
: 0 ~ 18446744073709551615📝 실수형 타입
1) DECIMAL
DECIMAL(M, D)
형식으로 나타낸다.M
은 전체 최대 자리수, D
는 소수점 뒤의 최대 자리 수DECIMAL(5, 2)
라면 -999.99 ~ 999.99M
은 최대 65, D
는 최대 30까지의 값을 가질 수 있다.DECIMAL
대신 DEC
, NUMERIC
, FIXED
라고 써도 된다.2) FLOAT
3) DOUBLE
📌 Date and Time types 날짜 및 시간 타입
DATE
2022-04-04
처럼 연, 월, 일 순서로 나타낸다.
DATETIME
2022-04-04-09:57:00
처럼 연, 월, 일, 시, 분, 초를 나타낸다.
TIMESTAMP
겉으로는 DATETIME과 같지만 TIMESTAMP에는 UTC
라는 전세계 여러 시간대(time-zone)이 존재해서 이를 기준으로 나타낼 수 있다.
TIME
09:59:31
처럼 시, 분, 초를 나타낸다.
📌 Sting types 문자열 타입
CHAR
CHAR(30) 이런 형식으로 나타낼 수 있고 괄호 안은 최대 몇 자까지 저장할 수 있는지를 나타낸다. 0 ~ 255까지 저장 가능하다.
VARCHAR
0 ~ 65,535까지 저장 가능하다.
TEXT
최대 65535까지 저장 가능하다.
CREATE TABLE `course_rating`.`student`(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NULL,
`student_number` INT NULL,
`major` VARCHAR(25) NULL,
`email` VARCHAR(50) NULL,
`phone` VARCHAR(15) NULL,
`admission_date` DATE NULL,
PRIMARY KEY (`id`)):
CREATE TABLE `course_rating`.`student`(
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NULL,
`student_number` INT NULL,
`major` VARCHAR(25) NULL,
`email` VARCHAR(50) NULL,
`phone` VARCHAR(15) NULL,
`admission_date` DATE NULL);
이렇게 작성해도 위 코드와 같은 결과가 나타난다.
❗ 주의
따옴표( ' )가 아닌 벡틱( ` ) 을 사용해야 한다.