AD JB Toolbox 01

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

CREATE DATABASE는 서버 안에 데이터베이스를 만들고 USE는 현재 접속의 작업 대상을 선택합니다. 한글과 다양한 문자를 저장할 학습 데이터베이스는 utf8mb4로 명시하고, 생성 여부와 문자 집합·정렬 규칙을 따로 확인해야 합니다.

데이터베이스 이름과 준비 조건

서버와 클라이언트 접속이 가능한 상태에서 course_user@127.0.0.1을 사용합니다. 설치 강좌에서 shopcourse.* 범위의 CREATE 등을 부여했으므로 이 이름의 데이터베이스를 만들 수 있습니다. 다른 이름으로 바꾸려면 그 이름에 맞는 권한도 준비해야 합니다.

서버가 하나여도 데이터베이스는 여러 개일 수 있습니다. 이 강좌에서는 shopcourse를 상품·고객·주문 실습의 작업 공간으로 사용합니다. 시스템 데이터베이스인 mysql·information_schema 등과 구분하고, 운영 서비스의 데이터베이스를 실습 대상으로 선택하지 않습니다.

CREATE DATABASE로 만들고 설정 확인하기

다음 전체 SQL을 클라이언트에 입력하거나 UTF-8 lesson05-create-database.sql로 저장해 SOURCE로 실행합니다. 접속 밖의 명령이 아니라 접속 안에서 실행할 SQL입니다.

CREATE DATABASE IF NOT EXISTS shopcourse
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

SHOW WARNINGS;
USE shopcourse;
SELECT DATABASE() AS current_database;
SHOW CREATE DATABASE shopcourse;

SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'shopcourse';

새 환경이면 shopcourse가 생성되고 current_database 열에 shopcourse가 나옵니다. 마지막 조회에는 문자 집합 utf8mb4와 정렬 규칙 utf8mb4_unicode_ci가 표시되어야 합니다. SHOW CREATE DATABASE의 문장은 서버 버전에 따라 인용 방식·주석 형식 등이 다를 수 있으므로 의미와 설정값을 비교하세요.

SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME
shopcourse utf8mb4 utf8mb4_unicode_ci

문법과 CREATE 권한 조건은 CREATE DATABASE, 저장된 정의 조회는 SHOW CREATE DATABASE 문서를 참고하세요. 이 단계를 실행했다고 products 테이블이나 상품 행까지 만들어지는 것은 아닙니다.

IF NOT EXISTS는 기존 설정을 바꾸지 않습니다

같은 이름이 있으면 IF NOT EXISTS는 이미 존재한다는 안내를 내고 새로 만들지 않습니다. 기존 데이터베이스의 문자 집합이 다른데 이 문장을 다시 실행해도 그 설정이 자동 교체되지는 않습니다. 그래서 SHOW WARNINGS와 설정 조회를 함께 넣었습니다.

기존 shopcourse가 보이면 이전 실습 결과인지 먼저 확인합니다. 테이블과 데이터가 들어 있는 상태에서 “처음부터 다시”라는 이유로 DROP DATABASE를 바로 실행하지 않습니다. 새 학습 이름을 선택하거나 변경이 필요한 범위와 권한을 판단하고, 실제 저장된 데이터의 변환은 별도 작업으로 다룹니다.

문자 집합과 정렬 규칙의 역할

항목 결정하는 것 이번 실습
문자 집합(character set) 문자를 인코딩해 표현하는 방식과 범위 utf8mb4
정렬 규칙(collation) 문자열을 비교하고 정렬하는 규칙 utf8mb4_unicode_ci
연결 문자 집합 클라이언트와 서버가 SQL·문자 결과를 주고받는 방식 접속 옵션 --default-character-set=utf8mb4
테이블·열의 설정 실제 저장 위치의 문자 설정; 기본값을 상속하거나 별도 지정 6강 products에서 명시적으로 지정

utf8mb4는 4바이트 문자를 포함하는 UTF-8 문자 집합입니다. 이름이 utf8인 설정이 모든 버전에서 utf8mb4를 뜻한다고 가정하지 말고 실제 정의를 확인하세요. 이 강좌에서는 배포판 간 공통 실습을 위해 오래 사용된 utf8mb4_unicode_ci를 명시하며, 최신 서버의 기본 정렬 규칙과 같다는 뜻은 아닙니다.

정렬 규칙은 단순히 화면에 글자가 보이는 모양이 아닙니다. 대소문자 비교, 문자열 정렬과 고유값 판단에도 관련됩니다. 설정의 상속과 적용 범위는 문자 집합과 정렬 규칙 설정 문서에서 확인할 수 있습니다.

다음은 같은 A·a 문자열을 두 규칙으로 비교하는 작은 실험입니다. 데이터베이스 이름이나 저장된 상품을 변경하지 않고 비교 규칙 한 가지를 바꿉니다.

SELECT
  _utf8mb4'A' COLLATE utf8mb4_unicode_ci =
  _utf8mb4'a' COLLATE utf8mb4_unicode_ci AS case_insensitive,
  _utf8mb4'A' COLLATE utf8mb4_bin =
  _utf8mb4'a' COLLATE utf8mb4_bin AS binary_comparison;
case_insensitive binary_comparison
1 0

여기서 1은 같음, 0은 다름입니다. A/a 사례의 결과를 모든 언어의 모든 문자 비교 규칙으로 일반화하지 않습니다. 문자열 인코딩 문제와 대소문자 비교 요구는 서로 다른 판단입니다.

USE는 현재 연결의 기본 데이터베이스 선택입니다

USE는 이 클라이언트 연결에서 이름을 생략한 테이블 작업의 기본 대상을 선택합니다. 다른 클라이언트 연결의 선택까지 바꾸거나 MariaDB 서버 전체 기본값을 영구 변경하는 명령은 아닙니다.

USE shopcourse;
SELECT DATABASE() AS current_database;
SHOW TABLES;

새 데이터베이스의 SHOW TABLES가 비어 있으면 테이블이 없다는 뜻이며 생성 실패로 단정하지 않습니다. 작업 대상 선택은 새 연결에서 다시 확인합니다. 특정 데이터베이스 이름을 명시하는 shopcourse.products 표기와 USE로 기본 대상을 선택하는 방법도 구분하세요.

이 선택 상태에서 상품을 저장하는 전체 과정은 상품 테이블을 만들고 조회하는 실습에서 사용합니다. 기본 관리 명령을 별도로 조회할 때는 데이터베이스 조회·생성·삭제·이름 변경 설명도 참고할 수 있습니다.

권한·선택·한글 오류를 점검하기

오류 또는 예상과 다른 결과 확인할 대상
Access denied / CREATE 권한 없음 로그인한 CURRENT_USER()와 SHOW GRANTS; 설치 단계의 shopcourse 권한 일치
Unknown database 이름 철자·서버 주소·포트; 다른 서버에 생성했는지 확인
No database selected 이 연결에서 USE shopcourse 실행 여부
정렬 규칙이 예시와 다름 기존 DB 여부와 SHOW CREATE DATABASE; IF NOT EXISTS를 설정 변경 명령으로 오인하지 않기
한글이 깨짐 원본 파일 UTF-8·클라이언트 문자 집합·테이블/열 설정을 각각 확인

초기 설정을 확인하는 실습에는 데이터베이스 삭제가 필요하지 않습니다. 기존 데이터베이스 기본 문자 설정을 바꾸더라도 이미 있는 테이블·열이 자동으로 전부 변환되는 것은 아닙니다. 값을 바꾸기 전 원래 SHOW CREATE DATABASE 결과와 테이블 정의를 보관하고 필요한 적용 범위를 정해야 합니다.

같은 카테고리의 다른 글
MariaDB 강좌 / 데이터베이스 만들기: CREATE DATABASE·USE·문자 집합

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

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

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

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

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

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

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

Ubuntu APT 설치 후 서버 실행·자동 시작·관리자 소켓 인증을 확인합니다. 로컬 TCP 학습 계정을 만들고 패키지 버전, 인증 오류와 서비스 로그를 확인하는 절차를 설명합니다.

MariaDB / 연산자 / 비교 연산자

MariaDB / 연산자 / 비교 연산자

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

MariaDB / 연산자 / 논리 연산자

MariaDB / 연산자 / 논리 연산자

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

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

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

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

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

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

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

MariaDB / 피벗 테이블 만드는 방법

MariaDB / 피벗 테이블 만드는 방법

피벗 테이블은 엑셀의 유용한 기능 중의 하나입니다. 예를 들어 아래의 왼쪽 데이터를 오른쪽 표처럼 만드는 것이 피벗 테이블입니다. 조건에 따라 그룹화시켜서 보기 좋게 데이터를 정리하는 것이라 보면 됩니다. MariaDB에서도 몇 가지 함수를 이용하여 피벗 테이블을 만들 수 있습니다.

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

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

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

MariaDB / Query / LEFT JOIN, RIGHT JOIN, INNER JOIN

MariaDB / Query / LEFT JOIN, RIGHT JOIN, INNER JOIN

SQL의 JOIN은 여러 테이블을 한 번에 나타낼 때 사용합니다. 대표적인 JOIN 방식은 LEFT JOIN, RIGHT JOIN, INNER JOIN이 있습니다. 다음은 세 가지 JOIN의 차이를 알아보기 위한 간단한 예제 테이블입니다.