MySQL실행 및 DB생성/확인은 다음과 같이 할 수 있다.
root@cnt-VirtualBox:/usr/bin# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.32-0ubuntu0.22.04.2 (Ubuntu)
Copyright (c) 2000, 2023, 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> CREATE DATABASE EXDB;
Query OK, 1 row affected (0.02 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| EXDB |
| TESTDB |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
EXDB라는 DB가 생성된것을 확인 할 수 있다.
이제 table을 생성할 차래이다.
우선 데이터의 행 식별값인 id, 이름인 title, 본문내용의 discription, 생성된 날짜를 알려주는 create를 만들도록 할 것이다.]
id는 정수이며 값이 1씩 증가하도록 할것이다.
mysql> use EXDB;
Database changed
mysql> CREATE TABLE topic (
-> id int(11) NOT NULL AUTO_INCREMENT,
-> title varchar(45) NOT NULL,
-> description text,
-> created datetime NOT NULL,
-> PRIMARY KEY(id)
-> ) ENGINE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.04 sec)
우선 EXDB를 지정하고 table을 생성한다.
id는 정수의 11자까지 출력하며 비어있지 않고 자동으로 값이 증가하도록 하였다.
title는 가변 문자형인 varchar로 45자까지 출력 가능하며 비어있지 않는 값이다.
description은 text type이다.
created는 datatime라는 날짜와 시간을 알려주는 type이며 비어있지 않는 값이다.
PRIMARY KEY는 id로 지정하였는데 이의 장점은 id를 우선 색인하도록 하며 값의 중복을 막을 수 있다.
마지막줄에 있는 ENGINE은 물리적 저장장치에서 데이터를 어떤 식으로 구성하고 읽어올지를 결정하는 역할을 한다.
-- InnoDB는 따로 스토리지 엔진을 명시하지 않으면 default로 설정되는 스토리지 엔진이다.
InnoDB는 트랜잭션을 지원하고, 커밋과 롤백 그리고 데이터 복구 기능을 제공하므로 데이터를 효과적으로 보호할 수 있다.
InnoDB는 기본적으로 row-level locking을 제공하며, 또한 데이터를 clustered index에 저장하여 PK기반의 query의 비용을 줄인다.
또한, PK 제약을 제공하여 데이터 무결성을 보장한다.
여기서 clustered index에 저장한다는 것은 데이터를 PK순서에 맞게 저장한다는 뜻이므로 order by 등 쿼리에 유리할 수 있다.
또한 row-level locking을 제공한다는 뜻은 테이블에 CRUD할 때, 로우별로 락을 잡기 때문에 multi-thread에 보다 효율적이라는 말이다.
mysql> SHOW TABLES;
+----------------+
| Tables_in_EXDB |
+----------------+
| topic |
+----------------+
1 row in set (0.00 sec)
mysql> DESC topic;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(45) | NO | | NULL | |
| description | text | YES | | NULL | |
| created | datetime | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
다음을 보면 table이 제대로 생성되었음을 확인 할 수 있으며 DESC tipic;을 통해 topic의 구조까지 확인 할 수 있다.
까먹고 데이터 삽입 및 확인은 안했는데 어차피 로그인페이지 작성시 하게 되기떄문에 넘어가겠다. 다음 링크에서 확인하면 된다.
'프로그래밍 및 코딩 > PHP' 카테고리의 다른 글
Login page만들기_end (0) | 2023.04.09 |
---|---|
Login page 만들기_로그인 및 세션 생성 (0) | 2023.04.09 |
Login page 작성_php 사용자 인증 (0) | 2023.04.04 |
Login page 작성_html, css 작성 및 DB생성 (0) | 2023.04.03 |
GET / POST (0) | 2023.04.02 |