데이터베이스(db)/mysql

[MySQL] 테이블 값 입력, 읽기-다양한 예제(Insert, Select)

끄적끄적아무거나 2023. 6. 23. 08:36
반응형

 

목차

     

     

     

     

     

     

     

    [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 파일 입력하였으니 참조 하세요

     

    ex_db.txt
    0.00MB

    반응형