-
[MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE생활코딩/DataBase 2020. 9. 24. 17:25
[강의 출처] opentutorials.org/course/3161/19538
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
'생활코딩 > DataBase' 카테고리의 다른 글
[MySQL] DELETE FROM .. WHERE id IS NULL; (0) 2020.11.08 [MySQL] ALTER TABLE table ... TIMESTAMP (0) 2020.11.08 [MySQL] 테이블 분리와 JOIN (0) 2020.09.28 [MySQL] 환경설정, 스키마와 테이블 생성 (0) 2020.09.21 [개요] 데이터베이스란 (0) 2020.09.21