목차
[MySQL] Table 값 입력 : INSERT
테이블을 입력하는 명령어는 INSERT 입니다. INSERT를 사용해서 입력하는 다양한 방법에 대해 알아보겠습니다. 테이블은 지난번 포스트에서 생성한 user 테이블을 사용하겠습니다.
mysql> desc users;
+------------+--------------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+-------------------+
| id | int | NO | PRI | NULL | auto_increment |
| username | varchar(50) | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| password | text | NO | | NULL | |
| birthdate | date | YES | | NULL | |
| created_at | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+--------------+------+-----+-------------------+-------------------+
6 rows in set (0.01 sec)
하나의 행에 여러 값 삽입하기
INSERT INTO users (username, email, password, birthdate, created_at)
VALUES ('JohnDoe', 'johndoe@example.com', 'mypassword', '1990-05-10', '2023-06-16 10:30:00');
위의 쿼리(Query)는 한 번에 하나의 행을 "users" 테이블에 삽입합니다.
여러 행에 여러 값 한번에 삽입하기
INSERT INTO users (username, email, password, birthdate, created_at)
VALUES
('JaneSmith', 'janesmith@example.com', 'secret123', '1988-12-15', '2023-06-16 11:45:00'),
('AliceJohnson', 'alicejohnson@example.com', 'abc123', '1995-07-22', '2023-06-16 14:20:00'),
('BobWilliams', 'bobwilliams@example.com', 'qwerty456', '1992-03-05', '2023-06-16 15:55:00');
위의 쿼리는 한 번의 INSERT 문으로 여러 개의 행을 "users" 테이블에 삽입합니다
SELECT 문을 사용하여 다른 테이블의 데이터 삽입하기
INSERT INTO users (username, email, password, birthdate, created_at)
SELECT name, email, password, birthdate, created_at FROM temporary_users;
위의 쿼리는 다른 테이블인 "temporary_users"의 데이터를 선택하여 "users" 테이블에 삽입합니다. SELECT 문을 사용하여 데이터를 가져올 수 있습니다.
INSERT IGNORE를 사용하여 중복 데이터 무시하기
INSERT IGNORE INTO users (username, email)
VALUES ('JohnDoe', 'johndoe@example.com');
위의 쿼리는 "users" 테이블에 'username'과 'email' 열을 삽입합니다. 중복된 데이터가 존재하는 경우, INSERT IGNORE를 사용하여 중복 데이터를 무시하고 삽입 작업을 진행합니다.
INSERT INTO SELECT 문 사용하기
INSERT INTO users (username, email, birthdate)
SELECT username, email, birthdate FROM new_users WHERE created_at > '2023-06-01';
위의 쿼리는 "new_users" 테이블에서 'created_at'이 '2023-06-01' 이후인 데이터를 선택하여 'username', 'email', 'birthdate' 열을 "users" 테이블에 삽입합니다.
[MySQL] Table 값 읽기 : SELECT
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| ex_db |
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
7 rows in set (0.03 sec)
mysql> use ex_db
Database changed
mysql> show tables;
+-----------------+
| Tables_in_ex_db |
+-----------------+
| person |
| users |
+-----------------+
2 rows in set (0.01 sec)
mysql>
위와 같이 예전에 만들어 놓은 users 테이블을 사용해서 불러오는 다양한 방법에 대해 알아보겠습니다.
모든 사용자 선택하기
mysql> SELECT * FROM users;
+----+--------------+--------------------------+-----------+------------+---------------------+
| id | username | email | password | birthdate | created_at |
+----+--------------+--------------------------+-----------+------------+---------------------+
| 1 | JaneSmith | janesmith@example.com | secret123 | 1988-12-15 | 2023-06-16 11:45:00 |
| 2 | AliceJohnson | alicejohnson@example.com | abc123 | 1995-07-22 | 2023-06-16 14:20:00 |
| 3 | BobWilliams | bobwilliams@example.com | qwerty456 | 1992-03-05 | 2023-06-16 15:55:00 |
+----+--------------+--------------------------+-----------+------------+---------------------+
3 rows in set (0.01 sec)
위 쿼리는 users 테이블의 모든 값을 불러옵니다.
특정 열의 값 선택하기
mysql> SELECT username, email FROM users;
+--------------+--------------------------+
| username | email |
+--------------+--------------------------+
| JaneSmith | janesmith@example.com |
| AliceJohnson | alicejohnson@example.com |
| BobWilliams | bobwilliams@example.com |
+--------------+--------------------------+
3 rows in set (0.00 sec)
특정 열의 값만을 위와 같이 선택할 수 있습니다.
조건(Condition) 걸어 선택하기
mysql> SELECT * FROM users ORDER BY created_at DESC;
+----+--------------+--------------------------+-----------+------------+---------------------+
| id | username | email | password | birthdate | created_at |
+----+--------------+--------------------------+-----------+------------+---------------------+
| 3 | BobWilliams | bobwilliams@example.com | qwerty456 | 1992-03-05 | 2023-06-16 15:55:00 |
| 2 | AliceJohnson | alicejohnson@example.com | abc123 | 1995-07-22 | 2023-06-16 14:20:00 |
| 1 | JaneSmith | janesmith@example.com | secret123 | 1988-12-15 | 2023-06-16 11:45:00 |
+----+--------------+--------------------------+-----------+------------+---------------------+
3 rows in set (0.00 sec)
users 테이블에서 생성 순서에 따라 선택하는방법입니다.
선택 개수 제한하기
mysql> SELECT * FROM users LIMIT 2;
+----+--------------+--------------------------+-----------+------------+---------------------+
| id | username | email | password | birthdate | created_at |
+----+--------------+--------------------------+-----------+------------+---------------------+
| 1 | JaneSmith | janesmith@example.com | secret123 | 1988-12-15 | 2023-06-16 11:45:00 |
| 2 | AliceJohnson | alicejohnson@example.com | abc123 | 1995-07-22 | 2023-06-16 14:20:00 |
+----+--------------+--------------------------+-----------+------------+---------------------+
2 rows in set (0.00 sec)
2개 값만 출력하게끔 개수에 제한을 둡니다.
특정 열의 값 중에 중복을 제거하고 출력 하기
mysql> SELECT DISTINCT birthdate FROM users;
+------------+
| birthdate |
+------------+
| 1988-12-15 |
| 1995-07-22 |
| 1992-03-05 |
+------------+
3 rows in set (0.00 sec)
위의 경우 중복이 없지만 중복이 발생할 경우 중복을 제거 해줍니다.
수식 처리 후 값 선택하기
mysql> SELECT username, YEAR(CURRENT_DATE()) - YEAR(birthdate) AS age FROM users;
+--------------+------+
| username | age |
+--------------+------+
| JaneSmith | 35 |
| AliceJohnson | 28 |
| BobWilliams | 31 |
+--------------+------+
3 rows in set (0.00 sec)
데이터 베이스의 값을 이용해서 나이를 위와 같이 미리 계산 가능 합니다.
앞서 사용한 코드는 아래 txt 파일 입력하였으니 참조 하세요
'데이터베이스(db) > mysql' 카테고리의 다른 글
[MySQL]데이터베이스 업데이트하는 여러가지 예제(Update) (0) | 2023.06.26 |
---|---|
[MySQL] 테이블 생성 예제 및 설명(PRIMARY, VARCHAR, TEXT, DATETIME, DEFAULT, CURRENT_TIMESTAMP) (0) | 2023.06.19 |
[MySQL] MySQL 구조 및 접속방법: 표, 데이터베이스, 서버(Table, Schema, Server) (0) | 2023.06.15 |