본문 바로가기
Web 개발/FAST API (인프런 강의 내용)

2 실습2 MySQL 접속 및 사용

by yororing 2024. 4. 25.

00 개요

  • 목적: docker를 이용하여 MySQL에 접속하여 데이터를 저장하기 위한 table 생성하는 실습 진행

01 docker 접속

  • 조건: 접속하기 전 사용하고자 하는 docker 가 실행(run) 중이어야 함
    • docker 열어서 해당 컨테이너 실행하기 (run)
# 문법
docker exec -it 컨테이너명 bash

$ docker exec -it todos bash
bash-4.4#
  • docker 안에 있는 todos 컨테이너의 bash 쉘을 사용하게 하는 명령어

02 MySQL 접속

# 문법
bash-4.4# mysql -u 사용자 -p

bash-4.4# mysql -u root -p
  • root 사용자를 통해 mysql에 접속하게 하는 명령어
  • -p 옵션 뒤에 입력 안하고 enter 누를 시 비밀번호를 따로 입력해주겠다는 뜻
  •  enter 누를 시 'Enter password:'라고 뜸 - 비밀번호(todos) 입력 후 enter 누르면 mysql에 접속하게 됨
bash-4.4# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

03 MySQL 사용

1. 데이터베이스 조회

# 문법
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| todos              |
+--------------------+
5 rows in set (0.00 sec)
  • 5개의 데이터베이스 출력됨
  • 마지막 'todos' 데이터베이스는 우리가 환경변수로 컨테이너가 동작을 할 때 생성을 요청을 했던 데이터베이스라서 생성되어 있는 것
  • 그 외에 4개의 데이터베이스는 MySQL이 시스템 관리를 위해 기본적으로 생성한 데이터베이스들임

2. 데이터베이스 사용

# 문법
USE 데이터베이스명;

mysql> use todos;
Database changed
  • 'todos' 데이터베이스 사용하게 하는 명령어

3. 테이블 생성

# 문법
CREATE TABLE 테이블명(
    컬럼명1 데이터타입 조건,
    컬럼명2 데이터타입 조건,
    컬럼명3 데이터타입 조건,
    ...
    );
    
mysql> create table todo(
    -> id INT NOT NULL AUTO_INCREMENT,
    -> contents VARCHAR(256) NOT NULL,
    -> is_done BOOLEAN NOT NULL,
    -> PRIMARY KEY (id)
    -> );
Query OK, 0 rows affected (0.08 sec)
  • CREATE TABLE이라는 명령어 사용하여 테이블 생성함
  • 테이블명: todo
  • INT: 정수로 데이터타입 지정
  • NOT NULL: 빈값이 될 수 없음을 지정
  • AUTO_INCREMENT: 별도로 입력하지 않아도 자동으로 id 값이 1씩 늘어나며 할당됨
  • VARCHAR(256): 캐릭터 256자로 데이터타입 지정
  • BOOLEAN: boolean으로 데이터타입 지정
  • PRIMARY KEY (id): id 컬럼을 PRIMARY KEY로 지정

4. 레코드 추가

1) 한 레코드 추가

# 문법
INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...)
    VALUES (컬럼1값, 컬럼2값, ...);

mysql> insert into todo (contents, is_done)
    -> values ("FastAPI Section 0", true);
Query OK, 1 row affected (0.03 sec)
  • id 값은 별도로 입력 안해도 AUTO_INCREMENT 옵션으로 인해 MySQL이 자동으로 id값을 할당함

2) 여러 레코드 추가

# 문법
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
    VALUES (컬럼1값, 컬럼2값, ...),
           (컬럼1값, 컬럼2값, ...),
           (컬럼1값, 컬럼2값, ...);

mysql> insert into todo (contents, is_done)
    -> values ("FastAPI Section 2", true),
    ->        ("FastAPI Section 3", false);
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

5. 전체 테이블 확인

# 문법
SELECT * FROM 테이블명;

mysql> select * from todo;
+----+-------------------+---------+
| id | contents          | is_done |
+----+-------------------+---------+
|  1 | FastAPI Section 0 |       1 |
|  2 | FastAPI Section 2 |       1 |
|  3 | FastAPI Section 3 |       0 |
+----+-------------------+---------+
3 rows in set (0.00 sec)
  • contents와 is_done 값은 우리가 입력한 대로 값이 들어감을 확인
  • id 값은 우리가 따로 입력하지 않아도 자동으로 1부터 하나 씩 값이 올라가며 할당됨을 확인

'Web 개발 > FAST API (인프런 강의 내용)' 카테고리의 다른 글

2 실습4 ORM 모델링  (0) 2024.05.02
2 실습3 데이터베이스 연결  (0) 2024.04.25
2 실습1 MySQL 컨테이너 실행 (docker)  (1) 2024.04.24
2 데이터베이스  (0) 2024.04.24
1 실습6 ERROR 처리  (0) 2024.04.18