본 게시글은 유튜브 생활코딩 온라인강의를 시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.

생각의 흐름에 따라 작성된 게시글입니다. 가독성이 떨어질 수 있습니다.

생활코딩 유튜브

 

생활코딩

일반인에게 프로그래밍을 알려주는 온라인/오프라인 활동 입니다.

www.youtube.com

생활코딩 사이트

 

생활코딩

hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다.  어떻게 공부할 것인가를 생각해보기 전에 왜 프로그래밍을 공부하는 이유에 대한 이유를 함께 생각해보면 좋을 것 같습니다. 아래 영상을 한번 보시죠. 온라인 강의 소개 입문자의 가장 큰 고충은 '무엇을 모르는지 모르는 상태'일 겁니다. 온라인에는 프로그래밍을 익히는 데 필요한 거의 모든 정보가 있지만, 이 지식들은

opentutorials.org

생활코딩 WEP3 PHP & MySQL을 수강하기 위한 선수과목인

WEB2 - PHPDATABASE2 - MySQL에 대한 수강 기록입니다.

수강 일정은 야학의 수강계획표에 따릅니다.


#0.

MySQL에서 Create, Read, Update, Delete를 알아보자.

 

#1.

w3schools에서 MySQL의 Create를 다음과 같이 소개하고 있다.

 

SQL INSERT INTO Statement

SQL INSERT INTO Statement The SQL INSERT INTO Statement The INSERT INTO statement is used to insert new records in a table. INSERT INTO Syntax It is possible to write the INSERT INTO statement in two ways. The first way specifies both the column names and

www.w3schools.com

mysql> USE opentutorials
Database changed
mysql> SHOW TABLES;
+-------------------------+
| Tables_in_opentutorials |
+-------------------------+
| topic                   |
+-------------------------+
1 row in set (0.00 sec)

mysql> DESC topic;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int          | NO   | PRI | NULL    | auto_increment |
| title       | varchar(100) | NO   |     | NULL    |                |
| description | text         | NO   |     | NULL    |                |
| created     | datetime     | NO   |     | NULL    |                |
| author      | varchar(30)  | YES  |     | NULL    |                |
| profile     | varchar(100) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

저번 시간에 우리가 만든 topic 테이블의 구조는 다음과 같다.

INSERT를 이용하여 새로운 row를 추가해보자.

mysql> INSERT INTO topic
    -> (title, description, created, author, profile)
    -> VALUES('MySQL', 'MySQL is...', NOW(), 'Ethan', 'Developer');
Query OK, 1 row affected (0.03 sec)

우리가 추가한 데이터를 보는 방법은 어떻게 하면 될까?

마찬가지로 검색을 통해 알아보자.

 

SQL SELECT Statement

SQL SELECT Statement The SQL SELECT Statement The SELECT statement is used to select data from a database. The data returned is stored in a result table, called the result-set. SELECT Syntax SELECT column1, column2, ... FROM table_name; Here, column1, colu

www.w3schools.com

mysql> SELECT * FROM topic;
+----+-------+-------------+---------------------+--------+-----------+
| id | title | description | created             | author | profile   |
+----+-------+-------------+---------------------+--------+-----------+
|  1 | MySQL | MySQL is... | 2020-11-12 19:11:35 | Ethan  | Developer |
+----+-------+-------------+---------------------+--------+-----------+
1 row in set (0.00 sec)

다음과 같이 데이터를 추가하였다.

mysql> SELECT * FROM topic;
+----+------------+------------------+---------------------+--------+---------------------------+
| id | title      | description      | created             | author | profile                   |
+----+------------+------------------+---------------------+--------+---------------------------+
|  1 | MySQL      | MySQL is...      | 2020-11-12 19:11:35 | Ethan  | Developer                 |
|  2 | ORACLE     | ORACLE is...     | 2020-11-12 19:16:06 | Ethan  | Developer                 |
|  3 | SQL Server | SQL Server is... | 2020-11-12 19:16:50 | duru   | Data administrator        |
|  4 | PostgreSQL | PostgreSQL is... | 2020-11-12 19:17:40 | taeho  | Data scientist, Developer |
|  5 | MongoDB    | MongoDB is...    | 2020-11-12 19:18:12 | Ethan  | Developer                 |
+----+------------+------------------+---------------------+--------+---------------------------+
5 rows in set (0.00 sec)

 

#2.

'*' 을 이용하여 모든 데이터를 출력하는 방법을 실습해보았다.

그렇다면 특정 column만 출력하고 싶으면 어떻게 할 수 있을까?

mysql> SELECT id, title, created FROM topic;
+----+------------+---------------------+
| id | title      | created             |
+----+------------+---------------------+
|  1 | MySQL      | 2020-11-12 19:11:35 |
|  2 | ORACLE     | 2020-11-12 19:16:06 |
|  3 | SQL Server | 2020-11-12 19:16:50 |
|  4 | PostgreSQL | 2020-11-12 19:17:40 |
|  5 | MongoDB    | 2020-11-12 19:18:12 |
+----+------------+---------------------+
5 rows in set (0.00 sec)

모든 것을 의미하는 '*'대신 column의 타입 이름을 적는 것으로 그 기능을 찾아볼 수 있다.

MySQL의 SELECT 문법에 대하여 공식 메뉴얼을 살펴보자.

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.10 SELECT Statement

13.2.10 SELECT Statement SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_referenc

dev.mysql.com

mysql> SELECT * FROM topic WHERE author="Ethan";
+----+---------+---------------+---------------------+--------+-----------+
| id | title   | description   | created             | author | profile   |
+----+---------+---------------+---------------------+--------+-----------+
|  1 | MySQL   | MySQL is...   | 2020-11-12 19:11:35 | Ethan  | Developer |
|  2 | ORACLE  | ORACLE is...  | 2020-11-12 19:16:06 | Ethan  | Developer |
|  5 | MongoDB | MongoDB is... | 2020-11-12 19:18:12 | Ethan  | Developer |
+----+---------+---------------+---------------------+--------+-----------+
3 rows in set (0.00 sec)

WHERE을 통해서 author column에 Ethan의 값만 가진 row를 출력할 수 있다.

mysql> SELECT * FROM topic ORDER BY id DESC;
+----+------------+------------------+---------------------+--------+---------------------------+
| id | title      | description      | created             | author | profile                   |
+----+------------+------------------+---------------------+--------+---------------------------+
|  5 | MongoDB    | MongoDB is...    | 2020-11-12 19:18:12 | Ethan  | Developer                 |
|  4 | PostgreSQL | PostgreSQL is... | 2020-11-12 19:17:40 | taeho  | Data scientist, Developer |
|  3 | SQL Server | SQL Server is... | 2020-11-12 19:16:50 | duru   | Data administrator        |
|  2 | ORACLE     | ORACLE is...     | 2020-11-12 19:16:06 | Ethan  | Developer                 |
|  1 | MySQL      | MySQL is...      | 2020-11-12 19:11:35 | Ethan  | Developer                 |
+----+------------+------------------+---------------------+--------+---------------------------+
5 rows in set (0.00 sec)

ORDER BY를 이용하여 id값이 큰 순서대로 출력할 수도 있다.

여기서 가장 중요한 것은, WHERE 혹은 ORDER BY를 사용하고자 할 때의 그 위치이다.

ORDER BY 같은 경우는 WHERE보다 뒤에서 사용하여야 한다.

그 순서는 아래 코드를 따르며 자세한 설명은 위에 링크된 공식문서를 확인하도록 하자.

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [into_option]
    [FOR {UPDATE | SHARE}
        [OF tbl_name [, tbl_name] ...]
        [NOWAIT | SKIP LOCKED]
      | LOCK IN SHARE MODE]
    [into_option]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}

 

#3.

이미 추가된 데이터를 수정하는 방법은 어떻게 할 수 있을까?

마찬가지로 공식문서에 잘 나와있다. 혹시 공식문서가 어렵다면 이 곳을 참조하자.

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.13 UPDATE Statement

MySQL 8.0 Reference Manual  /  ...  /  SQL Statements  /  Data Manipulation Statements  /  UPDATE Statement 13.2.13 UPDATE Statement UPDATE is a DML statement that modifies rows in a table. An UPDATE statement can start with a WITH clause to defin

dev.mysql.com

 

 

SQL UPDATE Statement

SQL UPDATE Statement The SQL UPDATE Statement The UPDATE statement is used to modify the existing records in a table. UPDATE Syntax UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; Note: Be careful when updating records in a t

www.w3schools.com

mysql> UPDATE topic SET author="Ethan", profile="Developer" WHERE id="4";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> SELECT * FROM topic;
+----+------------+------------------+---------------------+--------+--------------------+
| id | title      | description      | created             | author | profile            |
+----+------------+------------------+---------------------+--------+--------------------+
|  1 | MySQL      | MySQL is...      | 2020-11-12 19:11:35 | Ethan  | Developer          |
|  2 | ORACLE     | ORACLE is...     | 2020-11-12 19:16:06 | Ethan  | Developer          |
|  3 | SQL Server | SQL Server is... | 2020-11-12 19:16:50 | duru   | Data administrator |
|  4 | PostgreSQL | PostgreSQL is... | 2020-11-12 19:17:40 | Ethan  | Developer          |
|  5 | MongoDB    | MongoDB is...    | 2020-11-12 19:18:12 | Ethan  | Developer          |
+----+------------+------------------+---------------------+--------+--------------------+
5 rows in set (0.00 sec)

UPDATE, table이름, SET, 컬럼="수정 할 내용" WHERE "수정할 곳"

위와 같은 문법으로 MySQL에서 Table row의 내용을 update할 수 있다.

강의에선 나오지 않았지만 혹시 column의 이름 혹은 Table으 이름을 바꾸고자 한다면 어떻게 바꿀 수 있을까?

역시 공식문서들에 잘 나와 있다.

 

MySQL :: MySQL 8.0 Reference Manual :: 13.1.36 RENAME TABLE Statement

13.1.36 RENAME TABLE Statement RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ... RENAME TABLE renames one or more tables. You must have ALTER and DROP privileges for the original table, and CREATE and INSERT privileges for the new t

dev.mysql.com

 

 

MySQL :: MySQL 8.0 Reference Manual :: 13.1.9 ALTER TABLE Statement

13.1.9 ALTER TABLE Statement ALTER TABLE tbl_name [alter_option [, alter_option] ...] [partition_options] alter_option: { table_options | ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] | ADD [COLUMN] (col_name column_definition,...) | AD

dev.mysql.com

mysql> ALTER TABLE topic CHANGE profile job VARCHAR(30);
Query OK, 5 rows affected (0.14 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM topic;
+----+------------+------------------+---------------------+--------+--------------------+
| id | title      | description      | created             | author | job                |
+----+------------+------------------+---------------------+--------+--------------------+
|  1 | MySQL      | MySQL is...      | 2020-11-12 19:11:35 | Ethan  | Developer          |
|  2 | ORACLE     | ORACLE is...     | 2020-11-12 19:16:06 | Ethan  | Developer          |
|  3 | SQL Server | SQL Server is... | 2020-11-12 19:16:50 | duru   | Data administrator |
|  4 | PostgreSQL | PostgreSQL is... | 2020-11-12 19:17:40 | Ethan  | Developer          |
|  5 | MongoDB    | MongoDB is...    | 2020-11-12 19:18:12 | Ethan  | Developer          |
+----+------------+------------------+---------------------+--------+--------------------+
5 rows in set (0.00 sec)

 

#4.

드디어 마지막 DELETE이다. 역시 공식문서를 확인해보자.

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.2 DELETE Statement

MySQL 8.0 Reference Manual  /  ...  /  SQL Statements  /  Data Manipulation Statements  /  DELETE Statement DELETE is a DML statement that removes rows from a table. A DELETE statement can start with a WITH clause to define common table expressions

dev.mysql.com

mysql> DELETE FROM topic WHERE id="3";
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM topic;
+----+------------+------------------+---------------------+--------+-----------+
| id | title      | description      | created             | author | job       |
+----+------------+------------------+---------------------+--------+-----------+
|  1 | MySQL      | MySQL is...      | 2020-11-12 19:11:35 | Ethan  | Developer |
|  2 | ORACLE     | ORACLE is...     | 2020-11-12 19:16:06 | Ethan  | Developer |
|  4 | PostgreSQL | PostgreSQL is... | 2020-11-12 19:17:40 | Ethan  | Developer |
|  5 | MongoDB    | MongoDB is...    | 2020-11-12 19:18:12 | Ethan  | Developer |
+----+------------+------------------+---------------------+--------+-----------+
4 rows in set (0.00 sec)

언제나 WHERE에 유의하자. 만약 WHERE 옵션을 명시해주지 않는다면, 모든 row가 사라질 것이다.

 

#5.

본인의 상황에 따라 이후 학습을 진행할지, 다른 곳에 시간을 투자할지 결정하자.

물론 나는 목표가 WEB3 이기에.. 마저 시청할 예정이다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기