데이터베이스에 데이터를 저장하고 관리하는 법을 배워보자.
데이터는 저장 - 조회 - 갱신 - 삭제의 단계를 거치게 된다.
이 중 조회 단계는 앞서 배웠다. 이번에 저장, 갱신, 삭제하는 방법들을 배워보자.


📌 데이터베이스 생성

데이터베이스를 생성해보자. 예시로 강의 평가 데이터베이스를 만들어보자.

CREATE DATABASE course_rating;

실행 후 새로고침을 하면 SCHEMAS에 course_rating 데이터베이스가 생성된다.

만약 이 상태에서 한 번 더 실행을 하면 어떻게 될까 ❓
같은 이름의 데이터베이스가 이미 존재한다는 오류가 발생한다.

오류를 확인하지 않고도 같은 데이터베이스가 이미 존재하는지 확인할 수 있는 방법이 있다.

CREATE DATABASE IF NOT EXISTS course_rating;

IF NOT EXISTS는 만약 존재하지 않는다면 이라는 의미이다.
즉, course_rating이라는 데이터베이스가 없을 경우에만 SQL문을 실행하라는 의미이다.

테이블을 생성해보자.

상단에서 왼쪽에서 5번째 버튼을 클릭하면 테이블을 생성할 수 있다.
이후 Schema를 선택하라는 문구가 뜬다. Schema데이터베이스이다.

사용할 데이터베이스를 지정하는 방법은 두 가지가 있다.

  • 데이터베이스의 이름을 더블클릭
  • SQL문을 실행하여 지정
USE course_rating;

📌 테이블 생성

학생(student) 정보를 담을 테이블을 생성해보자.

  • 이름, 학번, 전공, 이메일 주소, 핸드폰 번호, 입학일을 나타내는 컬럼
  • id컬럼은 PK(기본키)로 설정
  • INT는 숫자형
  • VARCHAR는 문자열, 괄호() 안의 숫자는 문자열의 최대 길이를 의미
  • DATE는 날짜 타입
  • PK 는 Primary Key (기본키)
  • NN는 NOT NULL
  • AI는 Auto Increment로 점점 증가하는 숫자값을 자동으로 넣어준다.

📝 데이터 타입

MySQL에서 일반적으로 쓰이는 데이터 타입을 세 가지 카테고리로 분류할 수 있다.

  • Numeric types 숫자형 타입
  • Date and Time types 날짜 및 시간 타입
  • Sting types 문자열 타입

📌 Numeric types 숫자형 타입

📝 정수형

1) TINYINT

작은 범위 정수들을 저장할 때 쓰이는 데이터 타입으로 최소 128 ~ 최대 127까지의 정수를 저장할 수 있다. SIGNED양수, 0, 음수를 나타내고, UNSIGNED0과 양수를 나타낸다.

  • TINYINT SIGNED : -128 ~ 127 (기본값)
  • TINYINT UNSIGED : 0 ~ 255

2) SMALLINT

TINYINT 보다 좀 더 큰 범위의 정수를 나타낼 때 쓰는 데이터 타입이다.

  • SMALLINT SIGNED : -32768 ~ 32767
  • SMALLINT UNSIGNED : 0 ~ 65535

3) MEDIUMINT

더 넓은 범위를 나타내는 데이터 타입이다.

  • MEDIUMINT SIGNED : -8388608 ~ 838860\
  • MEDIUMINT : 0 ~ 16777215

4) INT

더 넓은 범위를 나타내는 데이터 타입이다.

  • INT SIGNED : -2147483648 ~ 2147483647
  • INT UNSIGNED : 0 ~ 4294967295

5) BIGINT

아주 큰 범위의 정수를 저장하는 데이터 타입이다.

  • BIGINT SIGNED : -9223372036854775808 ~ 9223372036854775807
  • BIGINT UNSIGNDE : 0 ~ 18446744073709551615

📝 실수형 타입

1) DECIMAL

  • 자주 쓰이는 실수형 타입 중 하나로 보통 DECIMAL(M, D) 형식으로 나타낸다.
  • M은 전체 최대 자리수, D는 소수점 뒤의 최대 자리 수
  • DECIMAL(5, 2)라면 -999.99 ~ 999.99
  • M은 최대 65, D는 최대 30까지의 값을 가질 수 있다.
  • DECIMAL 대신 DEC, NUMERIC, FIXED라고 써도 된다.

2) FLOAT
3) DOUBLE

📌 Date and Time types 날짜 및 시간 타입

  1. DATE
    2022-04-04 처럼 연, 월, 일 순서로 나타낸다.

  2. DATETIME
    2022-04-04-09:57:00 처럼 연, 월, 일, 시, 분, 초를 나타낸다.

  3. TIMESTAMP
    겉으로는 DATETIME과 같지만 TIMESTAMP에는 UTC 라는 전세계 여러 시간대(time-zone)이 존재해서 이를 기준으로 나타낼 수 있다.

  4. TIME
    09:59:31 처럼 시, 분, 초를 나타낸다.

📌 Sting types 문자열 타입

  1. CHAR
    CHAR(30) 이런 형식으로 나타낼 수 있고 괄호 안은 최대 몇 자까지 저장할 수 있는지를 나타낸다. 0 ~ 255까지 저장 가능하다.

  2. VARCHAR
    0 ~ 65,535까지 저장 가능하다.

  3. TEXT
    최대 65535까지 저장 가능하다.


📌 CREATE TABLE문 설명

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`)):
  • course_rating 데이터베이스 안에 student 테이블을 생성
  • id 컬럼은 기본값, NULL이 있으면 안 되고, 자동으로 증가하는 숫자 값들이 들어간다.
  • NULL은 값이 NULL이라는 게 아닌, NULL이 있어도 되고 없어도 된다는 뜻이다.
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);

이렇게 작성해도 위 코드와 같은 결과가 나타난다.

❗ 주의
따옴표( ' )가 아닌 벡틱( ` ) 을 사용해야 한다.


0개의 댓글

Powered by GraphCDN, the GraphQL CDN