Database & MySQL
Database
기본 용어
- 기본적으로 데이터가 기록되는 곳은 Table
- 여러 Table이 담긴 곳이 Database
- 용어를 구분하기 위해 Database 대신 Schema라는 용어를 사용함 - 즉, Table이 그루핑 하는 것이 Schema
- 이 모든 것을 포괄하는 것이 Database server
- Table의 가로축은 row, 세로축은 column
MySQL
- MySQL Cheat Sheet · GitHub
- 핵심은 SELECT -> 가장 많이 사용하고, 다양한 조합이 가능하다.
- WHERE를 빠뜨리면 돌이킬 수 없는 재앙이 일어난다. 특히, UPDATE, DELETE에서는 반드시 필요하므로 한 번 더 확인하는 습관을 갖자.
주요 쿼리
MySQL 서버 접속(로컬)
- 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)