DB/명령프롬프트 - mysql 예시

[MySQL] product table - 테이블 생성 예제

congs 2023. 3. 27. 09:04
mysql> create database shop; //데이터베이스 생성
Query OK, 1 row affected (0.01 sec)

mysql> show databases; //데이터베이스 생성 확인
+--------------------+
| Database           |
+--------------------+
| ezen               |
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| shop               |
| sys                |
| test               |
| world              |
+--------------------+
9 rows in set (0.00 sec)

mysql> use shop; //shop데이터베이스 사용
Database changed

mysql> create table product( //product테이블 생성
    -> num int not null,
    -> type_a varchar(45) not null,
    -> type_b varchar(45) not null,
    -> price int,
    -> amount int,
    -> sale_amount int,
    -> register_data date,
    -> primary key(num));
Query OK, 0 rows affected (0.01 sec)

mysql> show tables; //table생성 확인
+----------------+
| Tables_in_shop |
+----------------+
| product        |
+----------------+
1 row in set (0.00 sec)

mysql> desc product; //table설정 확인
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| num           | int         | NO   | PRI | NULL    |       |
| type_a        | varchar(45) | NO   |     | NULL    |       |
| type_b        | varchar(45) | NO   |     | NULL    |       |
| price         | int         | YES  |     | NULL    |       |
| amount        | int         | YES  |     | NULL    |       |
| sale_amount   | int         | YES  |     | NULL    |       |
| register_data | date        | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

!!! 여기서 product테이블의 num에 ai설정 못한거 확인 -> 다시 설정 !!!

mysql> alter table product modify num int not null auto_increment; //설정변경(설정추가)
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc product; //변경한 설정확인
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| num           | int         | NO   | PRI | NULL    | auto_increment |
| type_a        | varchar(45) | NO   |     | NULL    |                |
| type_b        | varchar(45) | NO   |     | NULL    |                |
| price         | int         | YES  |     | NULL    |                |
| amount        | int         | YES  |     | NULL    |                |
| sale_amount   | int         | YES  |     | NULL    |                |
| register_data | date        | YES  |     | NULL    |                |
| name          | varchar(45) | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

!!! 여기서 product테이블에 name을 안넣은것을 확인 -> 추가 설정 넣기 !!!

1. 추가 설정넣기
mysql> insert into product(type_a, type_b, name, price, amount, sale_amount, register_data)
    -> values('티셔츠', '긴소매', '폴라티셔츠', 15000, 34, 100, 20201015);
Query OK, 1 row affected (0.00 sec)

2. 넣은 설정 위치 변경하기
- alter table 테이블명 modify column 칼럼명 자료형 after 이동할 칼럼명;
- 이동할 칼럼명의 뒤에 칼럼이 들어감.
mysql> alter table product modify column name varchar(45) after type_b;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

//정보 입력
mysql> insert into product(type_a, type_b, name, price, amount, sale_amount, register_data)
    -> values('티셔츠', '반소매', '순면라운드 반팔티', 15900, 10, 153, 20200915),
    -> ('티셔츠', '반소매', '순면라운드 반팔티', 15900, 10, 153, 20200915),
    -> ('티셔츠', '반소매', '에어 나시', 9000, 33, 33, 20201110),
    -> ('패션운동복', '트레이닝상의', '피트니스상의', 30000, 34, 55, 20201105),
    -> ('패션운동복', '트레이닝하의', '피트니스하의', 50000, 55, 34, 20201106),
    -> ('아우터', '재킷', '양면 롱 후리스 자켓', 233000, 100, 42, 20201105),
    -> ('아우터', '패딩', '롱 패딩 점퍼', 47400, 10, 45, 20201101);
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

//결과
mysql> select * from product;
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
| num | type_a     | type_b       | name                | price  | amount | sale_amount | register_data |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
|   1 | 티셔츠     | 긴소매       | 폴라티셔츠          |  15000 |     34 |         100 | 2020-10-15    |
|   2 | 티셔츠     | 반소매       | 순면라운드 반팔티   |  15900 |     10 |         153 | 2020-09-15    |
|   3 | 티셔츠     | 반소매       | 순면라운드 반팔티   |  15900 |     10 |         153 | 2020-09-15    |
|   4 | 티셔츠     | 반소매       | 에어 나시           |   9000 |     33 |          33 | 2020-11-10    |
|   5 | 패션운동복 | 트레이닝상의 | 피트니스상의        |  30000 |     34 |          55 | 2020-11-05    |
|   6 | 패션운동복 | 트레이닝하의 | 피트니스하의        |  50000 |     55 |          34 | 2020-11-06    |
|   7 | 아우터     | 재킷         | 양면 롱 후리스 자켓 | 233000 |    100 |          42 | 2020-11-05    |
|   8 | 아우터     | 패딩         | 롱 패딩 점퍼        |  47400 |     10 |          45 | 2020-11-01    |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
8 rows in set (0.00 sec)

< 상품을 최신 순으로 정렬 >
mysql> select * from product order by register_data desc;
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
| num | type_a     | type_b       | name                | price  | amount | sale_amount | register_data |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
|   4 | 티셔츠     | 반소매       | 에어 나시           |   9000 |     33 |          33 | 2020-11-10    |
|   6 | 패션운동복 | 트레이닝하의 | 피트니스하의        |  50000 |     55 |          34 | 2020-11-06    |
|   5 | 패션운동복 | 트레이닝상의 | 피트니스상의        |  30000 |     34 |          55 | 2020-11-05    |
|   7 | 아우터     | 재킷         | 양면 롱 후리스 자켓 | 233000 |    100 |          42 | 2020-11-05    |
|   8 | 아우터     | 패딩         | 롱 패딩 점퍼        |  47400 |     10 |          45 | 2020-11-01    |
|   1 | 티셔츠     | 긴소매       | 폴라티셔츠          |  15000 |     34 |         100 | 2020-10-15    |
|   2 | 티셔츠     | 반소매       | 순면라운드 반팔티   |  15900 |     10 |         153 | 2020-09-15    |
|   3 | 티셔츠     | 반소매       | 순면라운드 반팔티   |  15900 |     10 |         153 | 2020-09-15    |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
8 rows in set (0.00 sec)