네이버 부스트코스 웹 프로그래밍(풀스택) todo-list 과제를 끝내고 정리하기 (과제관련 소스코드는 없습니다.)
mysql -uroot -p
나의 mysql 계정으로 접속한다.
SHOW DATABASES;
생성된 데이터베이스를 확인할 수 있다.
use 데이터베이스이름;
해당 데이터베이스에 접속한다.
SHOW TABLES;
테이블의 목록을 확인할 수 있다.
CREATE DATABASE 데이터베이스이름 default CHARACTER SET UTF8;
👉 todo_db 라는 데이터베이스를 생성하기
CREATE DATABASE todo_db default CHARACTER SET UTF8;
DROP DATABASE 데이터베이스이름;
use mysql
SELECT USER, HOST FROM user;
👉 유저확인
mysql> use mysql;
Database changed
mysql> SELECT USER, HOST FROM user;
+------------------+-----------+
| USER | HOST |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| todo_user | localhost |
+------------------+-----------+
유저 확인 후, 삭제하고 싶은 유저가 있다면
DELETE FROM USER WHERE user = '유저이름';
👉 todo_user 삭제하기
mysql> DELETE FROM USER WHERE user = "todo_user";
+------------------+-----------+
| USER | HOST |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
❗ ERROR
ERROR 1396 (HY000): Operation CREATE USER failed for 'todo_user'@'localhost'
나중에 같은 이름으로 계정을 생성하려 할 때 이런 에러가 발생한다면
mysql> delete from mysql.user where user = 'todo_user';
mysql> delete from mysql.db where user = 'todo_user';
mysql> flush privileges;
로 남아있는 data를 삭제시켜주어야 한다.
root 계정 접속 후
CREATE USER '유저이름'@'localhost' identified by '패스워드';
👉 pw가 todo, name 이 todo_user인 유저생성
CREATE USER 'todo_user'@'localhost' identified by 'todo';
GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 유저이름@localhost;
flush privileges;
exit
👉 todo_user에게 todo_db에 대한 권한부여
GRANT ALL PRIVILEGES ON todo_db.* TO todo_user@localhost;
flush privileges;
exit
mysql -utodo_user -p
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| todo_db |
+--------------------+
👉 todo_db 데이터베이스에 권한이 생겼음
todo_user 계정으로 접속
mysql -utodo_user -p
데이터베이스 목록보기
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| todo_db |
+--------------------+
mysql> use todo_db;
Database changed
mysql> show tables;
Empty set (0.01 sec)
CREATE TABLE 테이블이름 (
컬럼명 데이터타입 ... ,
컬럼명 데이터타입 ... ,
...
);
👉 todo 라는 테이블 생성하기
CREATE TABLE todo (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
name VARCHAR(100) NOT NULL,
sequence INT(1) NOT NULL,
type VARCHAR(20) DEFAULT 'TODO',
regdate DATETIME DEFAULT NOW(),
PRIMARY KEY (id)
);
desc 테이블이름;
👉 todo 테이블 정보보기
mysql> desc todo;
+----------+-----------------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------+------+-----+-------------------+-------------------+
| id | bigint unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| name | varchar(100) | NO | | NULL | |
| sequence | int | NO | | NULL | |
| type | varchar(20) | YES | | TODO | |
| regdate | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+----------+-----------------+------+-----+-------------------+-------------------+
6 rows in set (0.02 sec)
👉 todo 테이블 모든 데이터 확인하기
mysql> SELECT * FROM todo;
Empty set (0.01 sec)
INSERT into 테이블이름 (컬럼1, 컬럼2, ...) values (컬럼1에 넣을 데이터, 컬럼2에 넣을 데이터 ...);
👉 todo 테이블에 데이터 넣기
AUTO_INCREMENT
설정으로 자동으로 1부터 시작한다.mysql> INSERT into todo (title, name, sequence) values ("sql공부", "yong", "1");
mysql> INSERT into todo (title, name, sequence) values ("java공부", "yong", "1");
mysql> SELECT * FROM todo;
+----+----------+------+----------+------+---------------------+
| id | title | name | sequence | type | regdate |
+----+----------+------+----------+------+---------------------+
| 1 | sql공부 | yong | 1 | TODO | 2021-04-21 07:02:12 |
| 2 | java공부 | yong | 1 | TODO | 2021-04-21 07:02:19 |
+----+----------+------+----------+------+---------------------+
2 rows in set (0.00 sec)
DELETE FROM 테이블이름 where 조건;
👉 todo 테이블에서 id가 2인 데이터 삭제하기
mysql> DELETE FROM todo where id=2;
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM todo;
+----+---------+------+----------+------+---------------------+
| id | title | name | sequence | type | regdate |
+----+---------+------+----------+------+---------------------+
| 1 | sql공부 | yong | 1 | TODO | 2021-04-21 07:02:12 |
+----+---------+------+----------+------+---------------------+
1 row in set (0.00 sec)
UPDATE 테이블이름 SET 바꿀 속성 WHERE 조건;
👉 todo 테이블에서 id가 1인 데이터의 type을 DOING으로 바꾸기
mysql> UPDATE todo SET type = "DOING" WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM todo;
+----+---------+------+----------+-------+---------------------+
| id | title | name | sequence | type | regdate |
+----+---------+------+----------+-------+---------------------+
| 1 | sql공부 | yong | 1 | DOING | 2021-04-21 07:02:12 |
+----+---------+------+----------+-------+---------------------+
1 row in set (0.00 sec)
IF 문 처럼 사용하기
👉 todo 테이블에서 id가 1인 데이터가 type이 "TODO"면 "DOING"으로, "DOING" 이면 "DONE"으로 수정하기
UPDATE todo
SET type = CASE
WHEN type = TODO THEN DOING
WHEN type = DOING THEN DONE
ELSE DONE
END
WHERE id = 1;