생활코딩/DataBase
[MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE
hayjo
2020. 9. 24. 17:25
[강의 출처] opentutorials.org/course/3161/19538
MySQL의 CRUD - 생활코딩
MySQL의 CRUD 2018-02-12 01:23:10
opentutorials.org
CRUD
- 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리기능 Create, Read, Update, Delete 연산을 묶어서 일컫는 말 [출처-위키]
- 데이터베이스라면 Create, Read 기능은 필수. (Update, Delete 기능은 역사, 회계 등 특정 분야에 따라 배제될 수도 있다.)
테이블 구조 확인
mysql> USE dbname; -- 해당 테이블이 들어있는 DB 지정
mysql> DESC table_name; -- Description
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Column1 | varchar(100) | NO | | NULL | |
| Column2 | text | YES | | NULL | |
| Date | datetime | NO | | NULL | |
| String | varchar(30) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
데이터 INSERT
mysql> INSERT INTO example (Column1, Column2, Date, String)
VALUES('Column1Data', 'Column2Data', NOW(), 'StringData');
/*
example이라는 테이블의
Column1, Column2, Date, String 행에 각각
'Column1Data', 'Column2Data', 현재 시간, 'StringData' 라는 데이터를 입력한다
*** id행은 auto_increment 옵션이 있어서 생략시 자동으로 추가됨 ***
*/
Query OK, 1 row affected (0.01 sec)
데이터 SELECT
모든 데이터 출력(*)
mysql> SELECT * FROM example;
+----+--------------+--------------+---------------------+-------------+
| id | Column1 | Column2 | Date | String |
+----+--------------+--------------+---------------------+-------------+
| 1 | Column1Data | Column2Data | 2020-09-24 07:23:17 | StringData |
| 2 | Column1Data2 | Column2Data2 | 2020-09-24 07:32:06 | StringData2 |
| 3 | Column1Data3 | Column2Data3 | 2020-09-24 07:32:16 | StringData3 |
| 4 | Column1Data4 | Column2Data4 | 2020-09-24 07:32:25 | StringData4 |
| 5 | Column1Data5 | Column2Data5 | 2020-09-24 07:32:34 | StringData5 |
+----+--------------+--------------+---------------------+-------------+
5 rows in set (0.00 sec)
특정 컬럼만 출력
mysql> SELECT id,Column1,Date FROM example;
+----+--------------+---------------------+
| id | Column1 | Date |
+----+--------------+---------------------+
| 1 | Column1Data | 2020-09-24 07:23:17 |
| 2 | Column1Data2 | 2020-09-24 07:32:06 |
| 3 | Column1Data3 | 2020-09-24 07:32:16 |
| 4 | Column1Data4 | 2020-09-24 07:32:25 |
| 5 | Column1Data5 | 2020-09-24 07:32:34 |
+----+--------------+---------------------+
5 rows in set (0.00 sec)
특정 로우만 출력
mysql> SELECT id, Column1, Date FROM example WHERE String='StringData4';
+----+--------------+---------------------+
| id | Column1 | Date |
+----+--------------+---------------------+
| 4 | Column1Data4 | 2020-09-24 07:32:25 |
+----+--------------+---------------------+
1 row in set (0.00 sec)
--example 테이블에서 String 컬럼의 값이 StringData4인 열을 출력하되 id, Column1, Data 행만 출력
특정 정렬로 출력
mysql> SELECT id, Column1, Date FROM example ORDER BY id DESC;
+----+--------------+---------------------+
| id | Column1 | Date |
+----+--------------+---------------------+
| 5 | Column1Data5 | 2020-09-24 07:32:34 |
| 4 | Column1Data4 | 2020-09-24 07:32:25 |
| 3 | Column1Data3 | 2020-09-24 07:32:16 |
| 2 | Column1Data2 | 2020-09-24 07:32:06 |
| 1 | Column1Data | 2020-09-24 07:23:17 |
+----+--------------+---------------------+
5 rows in set (0.00 sec)
--example 테이블에서 id, Column1, Date 행의 데이터를 id 기준으로 역순으로 출력
특정 개수까지만 출력
(SQL에는 10억 건 이상의 데이터도 저장 가능하지만, 그 데이터를 화면에 다 출력하면 컴퓨터가 멈춰버린다.)
mysql> SELECT id, Column1, Date FROM example ORDER BY id DESC LIMIT 2;
+----+--------------+---------------------+
| id | Column1 | Date |
+----+--------------+---------------------+
| 5 | Column1Data5 | 2020-09-24 07:32:34 |
| 4 | Column1Data4 | 2020-09-24 07:32:25 |
+----+--------------+---------------------+
2 rows in set (0.00 sec)
-- 2건까지만 출력
이외 상세한 문법은 MySQL 공식문서에서 확인할 수 있다.
데이터 UPDATE
*WHERE문 생략하지 않도록 주의. 생략시 전체 데이터가 SET문 값으로 변경됨*
mysql> UPDATE example SET Column1='Column1Data1', Column2='Column2Data2' WHERE id=1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
-- example 테이블에서 id가 1인 로우의 Column1 값을 Column1Data1, Column2 값을 Column2Data2로 변경
mysql> SELECT * FROM example;
+----+--------------+--------------+---------------------+-------------+
| id | Column1 | Column2 | Date | String |
+----+--------------+--------------+---------------------+-------------+
| 1 | Column1Data1 | Column2Data2 | 2020-09-24 07:23:17 | StringData |
| 2 | Column1Data2 | Column2Data2 | 2020-09-24 07:32:06 | StringData2 |
| 3 | Column1Data3 | Column2Data3 | 2020-09-24 07:32:16 | StringData3 |
| 4 | Column1Data4 | Column2Data4 | 2020-09-24 07:32:25 | StringData4 |
| 5 | Column1Data5 | Column2Data5 | 2020-09-24 07:32:34 | StringData5 |
+----+--------------+--------------+---------------------+-------------+
5 rows in set (0.00 sec)
데이터 DELETE
*WHERE문 생략하지 않도록 주의. 생략시 전체 데이터가 삭제됨*
mysql> DELETE FROM example WHERE id = 5;
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM example;
+----+--------------+--------------+---------------------+-------------+
| id | Column1 | Column2 | Date | String |
+----+--------------+--------------+---------------------+-------------+
| 1 | Column1Data1 | Column2Data2 | 2020-09-24 07:23:17 | StringData |
| 2 | Column1Data2 | Column2Data2 | 2020-09-24 07:32:06 | StringData2 |
| 3 | Column1Data3 | Column2Data3 | 2020-09-24 07:32:16 | StringData3 |
| 4 | Column1Data4 | Column2Data4 | 2020-09-24 07:32:25 | StringData4 |
+----+--------------+--------------+---------------------+-------------+
4 rows in set (0.00 sec)
-- example 테이블에서 id가 5인 로우를 삭제
테이블 이름 변경
mysql> RENAME TABLE old TO new;
id 재설정 [참조]
ALTER TABLE tablename DROP id
ALTER TABLE tablename ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id), AUTO_INCREMENT=1