ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE
    생활코딩/DataBase 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
    

    댓글

Designed by Tistory.