MySQL 테이블에 데이터 넣고 확인하기 (INSERT & SELECT 기초)

2025년 04월 17일 by __admin

    MySQL 테이블에 데이터 넣고 확인하기 (INSERT & SELECT 기초) 목차

저번 포스팅은 CREATE DATABASE와 CREATE TABLE 명령어를 사용하여 데이터를 저장할 구조적인 틀, 즉 데이터베이스와 테이블을 만드는 방법을 학습했는데요, MySQL 테이블에 데이터 넣고 확인하는 방법을 배우겠습니다. my_first_db 데이터베이스 안에 user_id, username, email, signup_date 컬럼을 가진 users 테이블을 성공적으로 생성했죠. 하지만 아직 이 테이블은 텅 비어 있는 껍데기에 불과합니다. 이번 장에서는 드디어 이 테이블 안에 실제 데이터를 채워 넣고, 저장된 데이터를 화면에 조회해보는 방법을 배우겠습니다. 데이터를 다루는 가장 기본적인 작업인 '삽입(Insert)'과 '조회(Select)'를 위한 SQL 명령어를 익히게 될 것입니다. 이 명령어들은 데이터를 관리하는 데 있어 핵심적인 역할을 하므로 잘 익혀두시기 바랍니다.

 

1. 테이블에 새 데이터 추가하기: INSERT INTO

테이블에 새로운 데이터 행(Row), 즉 레코드(Record)를 추가할 때 사용하는 명령어는 INSERT INTO 입니다. 마치 엑셀 시트에 새로운 행을 추가하고 각 셀에 값을 입력하는 것과 유사합니다.

INSERT INTO 문의 기본적인 형식은 다음과 같습니다.

INSERT INTO 테이블_이름 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);

 

각 부분을 좀 더 자세히 살펴보겠습니다.

  • INSERT INTO 테이블_이름: 데이터를 추가할 대상 테이블의 이름을 명시합니다. 우리는 users 테이블에 데이터를 넣을 것입니다.
  • (컬럼1, 컬럼2, ...): 값을 넣어줄 컬럼들의 목록을 괄호 안에 쉼표로 구분하여 나열합니다. 어떤 컬럼에 값을 넣을지 명확하게 지정하는 역할을 합니다. 이 부분은 생략할 수도 있지만, 명시적으로 적어주는 것이 실수를 줄이고 코드를 이해하기 쉽게 만드는 좋은 습관입니다.
  • VALUES (값1, 값2, ...): 실제로 테이블에 삽입될 값들의 목록을 괄호 안에 쉼표로 구분하여 나열합니다. 여기에 나열된 값들은 앞에서 지정한 컬럼 목록의 순서와 정확히 일치해야 하며, 각 컬럼에 정의된 데이터 타입(예: INT, VARCHAR, DATE)에도 맞아야 합니다.

이제 users 테이블에 첫 번째 사용자 데이터를 한번 넣어볼까요? 사용자 ID는 1, 이름은 'hong_gildong', 이메일은 'hong@example.com', 가입 날짜는 오늘 날짜인 '2025-04-17'로 해보겠습니다.

INSERT INTO users (user_id, username, email, signup_date)
VALUES (1, 'hong_gildong', 'hong@example.com', '2025-04-17');

 

위 SQL 문을 실행하면 users 테이블에 새로운 행 하나가 성공적으로 추가됩니다. 여기서 몇 가지 중요한 점을 확인해 봅시다.

  • VALUES 절에 나열된 값들(1, 'hong_gildong', 'hong@example.com', '2025-04-17')은 INSERT INTO 절 다음에 괄호 안에 명시된 컬럼들(user_id, username, email, signup_date)의 순서와 정확히 일치합니다. 즉, 1은 user_id에, 'hong_gildong'은 username에 들어가는 식입니다.
  • 숫자 값(1)은 그대로 쓰지만, 문자열 값('hong_gildong', 'hong@example.com')과 날짜 값('2025-04-17')은 반드시 작은따옴표(')로 감싸주어야 합니다. (큰따옴표(")도 사용 가능하지만, SQL 표준이나 다른 시스템과의 호환성을 위해 작은따옴표 사용이 더 일반적입니다.)
  • user_id는 INT 타입이므로 숫자 1을, username과 email은 VARCHAR 타입이므로 문자열을, signup_date는 DATE 타입이므로 'YYYY-MM-DD' 형식의 날짜 문자열을 넣어주었습니다. 각 컬럼에 정의된 데이터 타입에 맞는 값을 넣어주는 것이 중요합니다.

만약 테이블의 모든 컬럼에 대해, 테이블 정의 시 컬럼이 나열된 순서 그대로 값을 넣는다면 컬럼 목록 (컬럼1, 컬럼2, ...) 부분을 생략할 수도 있습니다.

-- 모든 컬럼에 순서대로 값을 넣는 경우 (컬럼 목록 생략 가능)
INSERT INTO users VALUES (1, 'hong_gildong', 'hong@example.com', '2025-04-17');

하지만 이 방식은 테이블 구조가 변경(예: 컬럼 순서 변경 또는 새 컬럼 추가)될 경우 오류가 발생할 수 있으므로, 가급적 어떤 컬럼에 어떤 값을 넣는지 명시적으로 컬럼 목록을 적어주는 것이 더 안전하고 권장되는 방법입니다.

 

여러 행의 데이터 한 번에 추가하기

데이터를 한 행씩 추가하는 대신, 여러 행의 데이터를 한 번의 INSERT INTO 문으로 추가할 수도 있습니다. 이렇게 하면 여러 번 명령을 실행하는 것보다 더 효율적입니다. VALUES 절 뒤에 추가할 행의 값들을 괄호로 묶어 쉼표로 구분하여 나열해주면 됩니다.

 
INSERT INTO users (user_id, username, email, signup_date)
VALUES
(2, 'lee_sunsin', 'lee@example.com', '2025-04-16'),
(3, 'kim_yuna', 'kim@example.com', '2025-04-17');

위 명령문을 실행하면 users 테이블에 'lee_sunsin'과 'kim_yuna' 두 명의 사용자 데이터가 동시에 추가됩니다. 각 괄호 (...) 가 하나의 행을 나타냅니다.

 

2. 테이블에 저장된 데이터 꺼내보기: SELECT

이제 users 테이블에 세 명의 사용자 데이터가 들어갔습니다. 테이블에 저장된 데이터를 확인하고 싶을 때 사용하는 명령어가 바로 SELECT 입니다. SQL에서 아마 가장 많이 사용하게 될 명령어일 것입니다. SELECT 문은 테이블에서 원하는 데이터를 조회하여 결과 집합(Result Set) 형태로 보여줍니다.

테이블의 모든 데이터 조회하기 (SELECT * FROM ...)

가장 간단하게 테이블의 모든 행과 모든 열의 데이터를 조회하는 방법은 SELECT 뒤에 별표(*)를 사용하는 것입니다. 별표(*)는 '모든 컬럼'을 의미하는 와일드카드 문자입니다.

SELECT * FROM 테이블_이름;

 

users 테이블의 모든 데이터를 조회해 봅시다.

SELECT * FROM users;

이 명령어를 실행하면, 다음과 유사한 결과가 표 형태로 나타날 것입니다. (GUI 도구에서는 깔끔한 격자 형태로 보여줄 것이고, 명령줄에서는 텍스트 기반의 표로 보여줄 것입니다.)

 

user_id user_name email  signup_date
1 hong_gildong hong@example.com 2025-04-17
2 lee_sunsin lee@example.com 2025-04-16
3 kim_yuna kim@example.com 2025-04-17

 

Sheets로 내보내기

SELECT *는 테이블의 전체 내용을 빠르게 훑어볼 때 편리합니다. 하지만 테이블에 컬럼이 아주 많거나 데이터 양이 방대할 경우에는 모든 데이터를 가져오는 것이 비효율적일 수 있습니다.

 

테이블에서 원하는 컬럼만 골라서 조회하기 (SELECT 컬럼1, 컬럼2, ... FROM ...)

테이블의 모든 컬럼이 아니라 특정 컬럼의 데이터만 보고 싶을 때는 SELECT 뒤에 별표(*) 대신 원하는 컬럼들의 이름을 쉼표(,)로 구분하여 직접 나열해주면 됩니다.

SELECT 컬럼1, 컬럼2, ... FROM 테이블_이름;

예를 들어, users 테이블에서 모든 사용자의 이름(username)과 이메일 주소(email)만 조회하고 싶다면 다음과 같이 작성합니다.

 
SELECT username, email FROM users;

결과는 다음과 같이 username과 email 컬럼만 포함된 형태로 나타납니다.

 

user_name email
hong_gildong hong@example.com
lee_sunsin lee@example.com
kim_yuna kim@example.com
Sheets로 내보내기

이번에는 사용자 ID(user_id)와 가입 날짜(signup_date)만 조회해 볼까요?

SELECT user_id, signup_date FROM users;

 

 

결과는 다음과 같습니다.

user_id signup_date
1 2025-04-17
2 2025-04-16
3 2025-04-17

 

Sheets로 내보내기

이렇게 필요한 컬럼만 지정하여 조회하면 불필요한 데이터 전송을 줄여 성능상 이점이 있고, 결과를 파악하기도 더 쉽습니다.

참고로, SELECT 절에 컬럼 이름을 나열하는 순서에 따라 결과 테이블에 표시되는 컬럼의 순서도 결정됩니다. 예를 들어 SELECT email, username FROM users; 라고 실행하면 결과 테이블에는 email 컬럼이 username 컬럼보다 먼저 나타납니다.

이번 장에서는 테이블에 새로운 데이터를 추가하는 INSERT INTO 명령어와, 테이블의 데이터를 조회하는 가장 기본적인 SELECT 명령어 사용법을 배웠습니다. 데이터베이스를 다루는 데 있어 가장 빈번하게 사용되는 데이터 조작 언어(DML - Data Manipulation Language)의 첫걸음을 뗀 셈입니다.

하지만 아직 우리는 테이블에 있는 '모든' 데이터만 조회할 수 있습니다. 만약 'hong_gildong'이라는 특정 사용자의 정보만 보거나, '2025-04-17'에 가입한 사용자만 골라서 보고 싶다면 어떻게 해야 할까요? 그리고 이미 입력된 데이터가 잘못되었을 때 수정하거나, 더 이상 필요 없는 데이터를 삭제하려면 어떻게 해야 할까요?

 

다음 장에서는 바로 이러한 질문들에 답을 줄 수 있는 UPDATE (데이터 수정)와 DELETE (데이터 삭제) 명령어, 그리고 SELECT 문과 함께 사용되어 원하는 조건의 데이터만 필터링하는 데 핵심적인 역할을 하는 WHERE 절에 대해 배우게 될 것입니다. 데이터베이스 활용 능력을 한 단계 더 끌어올릴 준비를 하세요!