AD JB Toolbox 01

MariaDB 강좌 / 첫 실습: 상품 테이블을 만들고 데이터를 넣어 조회하기

상품 정보를 저장하려면 테이블의 열과 데이터 타입을 정의한 뒤 INSERT로 행을 추가하고 SELECT로 조회합니다. 이 실습에서는 shopcourse.products에 상품 세 건을 저장하고 행 수·가격 조건·재고 조건으로 결과가 맞는지 확인합니다.

실습 준비와 처음 실행하는 조건

데이터베이스 생성 강좌를 마쳐 shopcourse의 문자 집합·정렬 규칙을 확인한 상태가 필요합니다. course_user로 같은 서버에 연결하고 아래를 먼저 실행하세요. (none)이 보이는 새 연결이면 USE를 다시 실행해야 합니다.

USE shopcourse;
SELECT DATABASE() AS current_database;
SHOW TABLES LIKE 'products';

처음 실습에서는 products가 없어야 합니다. 이미 있으면 전체 CREATE·INSERT를 반복하지 말고 이전 실습 결과를 확인합니다. 아래 전체 파일은 새 테이블을 처음 만드는 실행용이며 기존 상품 데이터를 덮어쓰는 스크립트가 아닙니다.

상품 표의 구조 정하기

열 타입·역할 예시
product_id INT·자동 증가·기본키: 행을 구분 1
product_name VARCHAR(100): 상품 이름 문자열 노트
category VARCHAR(30): 이번 실습의 분류 문자열 문구
price DECIMAL(10,2): 고정 소수 자릿수의 가격 3500.00
stock INT: 재고 수량; 생략할 때 기본값 0 25

금액처럼 소수 자릿수를 정해 저장할 값에는 DECIMAL을 선택합니다. (10,2)는 전체 자릿수 10 중 소수부 2자리를 지정한 것이지 소수점 앞 10자리와 뒤 2자리를 더하는 뜻이 아닙니다. 실제 입력 범위와 잘못된 값 처리는 데이터 타입·SQL 모드의 영향을 받으므로 값이 아무 숫자나 허용된다고 보지 않습니다.

NOT NULL은 해당 열에 NULL을 저장하지 않는 조건이고, 기본값 0은 값을 생략했을 때 재고를 0으로 넣도록 정의한 것입니다. 재고 0과 정보가 없는 NULL은 의미가 다릅니다. 이 입문 예제는 분류를 문자열로 저장하지만 관계 설계 단계에서는 별도 테이블로 분리할지 검토합니다.

전체 SQL 파일 실행하기

다음 전체 코드를 UTF-8 lesson06-products.sql 파일로 저장합니다. SOURCE 파일 실행 방법에 따라 현재 클라이언트에서 파일을 실행하세요. --abort-source-on-error 접속 옵션은 파일 중간 오류 후 무작정 다음 문장을 진행하는 것을 막는 데 도움이 되지만 이미 실행된 작업을 복구하지는 않습니다.

USE shopcourse;

CREATE TABLE products (
  product_id INT NOT NULL AUTO_INCREMENT,
  product_name VARCHAR(100) NOT NULL,
  category VARCHAR(30) NOT NULL,
  price DECIMAL(10, 2) NOT NULL,
  stock INT NOT NULL DEFAULT 0,
  PRIMARY KEY (product_id)
) ENGINE=InnoDB
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

INSERT INTO products (product_name, category, price, stock)
VALUES
  ('노트', '문구', 3500.00, 25),
  ('머그컵', '생활', 12000.00, 8),
  ('책상 조명', '생활', 28000.00, 0);

SELECT product_id, product_name, category, price, stock
FROM products
ORDER BY product_id;

SELECT COUNT(*) AS product_count FROM products;

CREATE TABLE로 구조를 만든 다음 INSERT의 열 이름 순서에 맞춰 각 행의 값을 넣습니다. 문자열은 작은따옴표로, 숫자는 이 예제처럼 숫자 자체로 적습니다. product_id는 자동 생성하므로 INSERT 열 목록에서 제외했습니다. storage engine은 InnoDB, 문자 설정은 데이터베이스와 일치하게 명시합니다.

전체 문법과 중복 테이블 조건은 CREATE TABLE, 여러 행 추가는 INSERT 공식 문서를 참고하세요. CREATE에 성공했다고 INSERT까지 성공한 것으로 판단하지 말고 각 문장의 오류와 마지막 조회 결과를 확인합니다.

예상 결과와 저장 상태 확인

product_id product_name category price stock
1 노트 문구 3500.00 25
2 머그컵 생활 12000.00 8
3 책상 조명 생활 28000.00 0

마지막 COUNT(*)의 product_count는 3이어야 합니다. product_id 1·2·3은 새로 만든 테이블에 이 세 행만 처음 넣은 조건의 예상값입니다. 다른 데이터가 이미 있었거나 자동 증가 설정을 바꾼 테이블에서는 같은 숫자를 약속하지 않습니다.

DESCRIBE products;
SHOW CREATE TABLE products;

DESCRIBE로 열 이름·타입·NULL 여부·기본키를 보고 SHOW CREATE TABLE로 저장된 전체 정의를 확인합니다. 클라이언트 출력의 정수 표시 폭이나 문장 형식은 버전에 따라 달라질 수 있습니다. 이 실습에서는 실제 열과 제약 조건, InnoDB와 문자 설정을 비교합니다. 조회 결과의 순서를 확인하기 위해 ORDER BY를 지정했으며 SELECT의 기본 순서를 저장 순서라고 가정하지 않습니다.

같은 데이터에서 조회 조건 하나씩 바꾸기

전체 INSERT 파일을 다시 실행하지 않고 조회만 바꿉니다. 첫 번째 조회는 가격이 10000 이상인 상품만 보여 줍니다.

SELECT product_id, product_name, price
FROM products
WHERE price >= 10000
ORDER BY product_id;

머그컵과 책상 조명이 예상됩니다. 기준 숫자만 20000으로 바꾸면 책상 조명만 나오는지 확인하고 10000으로 되돌립니다. WHERE와 정렬을 한꺼번에 바꾸지 않으면 무엇이 결과를 바꿨는지 분리해서 볼 수 있습니다.

SELECT product_id, product_name, stock
FROM products
WHERE stock = 0
ORDER BY product_id;

재고 0 조건에서는 책상 조명이 한 건 나옵니다. 조건만 stock > 0으로 바꾸면 노트와 머그컵이 나오는지 확인하고 원래 조건으로 복구합니다. 조회 조건을 바꿔도 저장된 재고 값은 바뀌지 않습니다. 조건과 결과의 의미는 SELECT 문서와 비교해 볼 수 있습니다.

반복 실행·오류·초기화의 범위

문제 확인 방법
Table already exists 현재 DB와 기존 products 정의 확인; CREATE를 덮어쓰기 명령으로 바꾸지 않기
행 수가 3보다 큼 INSERT를 여러 번 실행했는지 확인; 자동 증가 기본키가 같은 상품명 중복을 막아 주지는 않음
Unknown database / No database selected shopcourse 생성·USE·접속 서버 확인
한글 또는 숫자 오류 파일 인코딩·클라이언트 문자 집합·열 타입·오류 메시지 확인

같은 실습을 새 테이블부터 반복해야 하고 products의 데이터를 보관할 필요가 없는 경우에만 아래 초기화 절차를 선택합니다. 이 명령은 실습 테이블의 행과 정의를 삭제하며 일반 ROLLBACK으로 복구할 수 있는 작업으로 생각하지 않습니다. 저장해야 할 데이터가 있으면 실행 전에 백업합니다.

USE shopcourse;
SELECT DATABASE() AS current_database;
SELECT COUNT(*) AS rows_to_remove FROM products;

현재 데이터베이스가 shopcourse이고 삭제 대상이 이 실습의 products임을 확인한 뒤에만 다음을 실행합니다. 다른 데이터베이스나 모든 테이블을 삭제하는 명령으로 확장하지 않습니다.

DROP TABLE shopcourse.products;

삭제 후 lesson06-products.sql을 한 번 실행하면 새 테이블과 세 행으로 돌아갑니다. 새 테이블을 만드는 대신 INSERT만 반복하거나 DELETE만 실행하면 자동 증가 번호 등 초기 조건이 달라질 수 있습니다. DROP TABLE의 처리 조건은 공식 테이블 삭제 문서에서 확인하세요.

같은 카테고리의 다른 글
MariaDB 강좌 / CREATE TABLE로 테이블 구조 정의하기

MariaDB 강좌 / CREATE TABLE로 테이블 구조 정의하기

상품 테이블을 예로 열·타입·기본값·기본키·저장 엔진을 정의하고 실제 생성 결과를 확인합니다. 기존 테이블 처리, IF NOT EXISTS의 한계와 안전한 반복 실습 방법도 설명합니다.

MariaDB / VIEW

MariaDB / VIEW

VIEW는 가상의 테이블입니다. 실제로 데이터를 저장하지 않고, 기존의 하나 이상의 테이블을 기반으로 한 쿼리 결과를 테이블처럼 사용할 수 있게 해줍니다. 뷰는 복잡한 쿼리를 단순화하고, 보안 및 데이터 관리에 유용하게 사용됩니다.

MariaDB 강좌 / 명령줄 클라이언트로 접속하고 SQL 파일 실행하기

MariaDB 강좌 / 명령줄 클라이언트로 접속하고 SQL 파일 실행하기

터미널 명령과 SQL 입력 위치를 구분하고 학습 계정으로 접속합니다. UTF-8 SQL 파일의 SOURCE 실행, 예상 결과, 오류 중단·한글 표시·경로 문제를 함께 확인합니다.

MariaDB 강좌 / Windows에 MariaDB 설치하고 서버 실행하기

MariaDB 강좌 / Windows에 MariaDB 설치하고 서버 실행하기

Windows MSI 설치에서 서버·클라이언트, 관리자 인증, 서비스와 포트를 설정합니다. SQL 실행을 확인하고 이후 강좌에서 사용할 학습용 계정을 준비하며 시작·접속 오류를 점검합니다.

MariaDB / 연산자 / 비교 연산자

MariaDB / 연산자 / 비교 연산자

MariaDB의 비교 연산자에 대하여 알아보겠습니다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_1이라는 테이블입니다. 각 열의 데이터 형식은 다음과 같습니다. C_1 : 정수 C_2 : 문자 C_3 : 날짜 +----+------+------+------------+ | ID | C_1 | C_2 | C_3 | +----+------+------+------------+ | 1 | 1 | ...

MariaDB / 데이터베이스 / 조회, 생성, 삭제, 이름 변경

MariaDB / 데이터베이스 / 조회, 생성, 삭제, 이름 변경

MariaDB에서 데이터베이스를 조회하는 방법, 생성하는 방법, 삭제하는 방법, 이름을 변경하는 방법에 대해서 알아봅니다.

MariaDB / 데이터베이스 저장 위치 변경하는 방법

MariaDB / 데이터베이스 저장 위치 변경하는 방법

MariaDB의 버전이 12.1이라고 할 때, 윈도우용 MariaDB의 기본 설치 위치는 C:\Program Files\MariaDB 12.1, 데이터베이스 저장 위치는 C:\Program Files\MariaDB 12.1\data입니다. 데이터베이스 저장 위치를 다음으로 변경해보겠습니다. D:\Database\MariaDB\data

MariaDB 강좌 / 문자열 타입 선택하기: CHAR·VARCHAR·TEXT

MariaDB 강좌 / 문자열 타입 선택하기: CHAR·VARCHAR·TEXT

CHAR·VARCHAR·TEXT를 저장 목적에 따라 선택하고 문자 수·바이트 수·끝 공백을 비교합니다. 한글과 이모지 입력, 길이 초과 오류, 정렬 규칙과 긴 본문 저장 시 주의점을 설명합니다.

MariaDB 강좌 / 데이터베이스 만들기: CREATE DATABASE·USE·문자 집합

MariaDB 강좌 / 데이터베이스 만들기: CREATE DATABASE·USE·문자 집합

shopcourse 데이터베이스를 만들고 현재 연결의 작업 대상으로 선택합니다. utf8mb4와 collation, 기존 DB에서 IF NOT EXISTS의 한계, 권한·문자 설정 확인을 예제로 설명합니다.

MariaDB / 샘플 데이터베이스 employees 설치하는 방법

MariaDB / 샘플 데이터베이스 employees 설치하는 방법

데이터베이스를 다루는 공부를 할 때 데이터가 들어있는 데이터베이스가 있으면 좋습니다. 데이터베이스를 직접 만드는 방법도 있지만, 공개된 샘플 데이터베이스를 이용하면 편합니다. 예를 들어 SQL Server라면 AdventureWorks라는 샘플 데이터베이스를 마이크로소프트에서 제공합니다. MariaDB라면 employees를 사용하면 됩니다.