- 기본적으로 데이터가 기록되는 곳은 Table
- 여러 Table이 담긴 곳이 Database
- 용어를 구분하기 위해 Database 대신 Schema라는 용어를 사용함 - 즉, Table이 그루핑 하는 것이 Schema
- 이 모든 것을 포괄하는 것이 Database server
- Table의 가로축은 row, 세로축은 column
- MySQL Cheat Sheet · GitHub
- 핵심은 SELECT -> 가장 많이 사용하고, 다양한 조합이 가능하다.
- WHERE를 빠뜨리면 돌이킬 수 없는 재앙이 일어난다. 특히, UPDATE, DELETE에서는 반드시 필요하므로 한 번 더 확인하는 습관을 갖자.
- MySQL server start
- Terminal에서 위치 이동
- 해당 위치에서 root 접속 및 비밀번호 입력
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| learningsql |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
SHOW TABLES;
+-----------------------+
| Tables_in_learningsql |
+-----------------------+
| author |
| topic |
+-----------------------+
2 rows in set (0.00 sec)
- 각 column은 이름과 데이터타입이 필수
- 테이블에 존재하는 각 row의 고유값이 PRIMARY KEY이기 때문에 필수이며 보통 id 를 사용함.
CREATE TABLE mytable(
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
password VARCHAR(20) NOT NULL,
PRIMARY KEY(id));
INSERT INTO mytable (name, email, password) VALUES ('Allen', 'allen@gmail.com', '1234');
SELECT * FROM mytable;
+----+-------+-----------------+----------+
| id | name | email | password |
+----+-------+-----------------+----------+
| 1 | Allen | allen@gmail.com | 1234 |
+----+-------+-----------------+----------+
1 row in set (0.00 sec)
SELECT name, email FROM mytable;
+-------+-----------------+
| name | email |
+-------+-----------------+
| Allen | allen@gmail.com |
+-------+-----------------+
1 row in set (0.00 sec)
SELECT * FROM mytable WHERE name="Sally";
+----+-------+-----------------+----------+
| id | name | email | password |
+----+-------+-----------------+----------+
| 3 | Sally | sally@gmail.com | 1234 |
+----+-------+-----------------+----------+
1 row in set (0.00 sec)
SELECT * FROM mytable WHERE id >= 2;
+----+-------+-----------------+----------+
| id | name | email | password |
+----+-------+-----------------+----------+
| 2 | John | john@gmail.com | 1234 |
| 3 | Sally | sally@gmail.com | 1234 |
+----+-------+-----------------+----------+
2 rows in set (0.00 sec)
DELETE FROM mytable WHERE id=2;
SELECT * FROM mytable;
+----+-------+-----------------+----------+
| id | name | email | password |
+----+-------+-----------------+----------+
| 1 | Allen | allen@gmail.com | 1234 |
| 3 | Sally | sally@gmail.com | 1234 |
+----+-------+-----------------+----------+
2 rows in set (0.00 sec)
UPDATE mytable SET name = 'Smith' WHERE name = 'Allen';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
SELECT * FROM mytable;
+----+-------+-----------------+----------+
| id | name | email | password |
+----+-------+-----------------+----------+
| 1 | Smith | allen@gmail.com | 1234 |
| 3 | Sally | sally@gmail.com | 1234 |
+----+-------+-----------------+----------+
2 rows in set (0.00 sec)