Database Management Basics
Introduction
A database is a named schema container inside MySQL—like a folder for tables. This chapter creates, selects, lists, and drops databases with correct charset settings, and explains system databases you should not delete casually.
Prerequisites
- MySQL Configuration and Client Tools
- Logged into
mysqlas a user with create privileges (e.g.root)
SHOW and USE
List databases:
SHOW DATABASES;Typical output includes:
| Database | Purpose |
|---|---|
mysql | System grants and metadata |
information_schema | Read-only metadata views |
performance_schema | Server performance stats |
sys | Helpful diagnostic views |
learn_db | Your practice DB (if created) |
Select active database:
USE learn_db;Confirm:
SELECT DATABASE();Code explanation:
USEdoes not create a database—it only switches context- Unqualified
CREATE TABLEgoes into current database
CREATE DATABASE
With explicit charset (recommended):
CREATE DATABASE shop
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;Code explanation:
CHARACTER SET utf8mb4stores emoji and all UnicodeCOLLATE utf8mb4_unicode_cidefines sort/compare rules (case-insensitive for many Latin letters)
Idempotent create:
CREATE DATABASE IF NOT EXISTS shop
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;DROP DATABASE
Permanently removes database and all tables:
DROP DATABASE shop;Safer:
DROP DATABASE IF EXISTS shop;Rename Pattern
MySQL has no single RENAME DATABASE—use dump/import or rename tables into new database—advanced. Prefer planning names upfront.
Charset and Collation Deep Dive
| Setting | Level | Analogy |
|---|---|---|
| Server default | my.cnf | Factory default |
| Database | CREATE DATABASE | Project standard |
| Table | CREATE TABLE | Override per table |
| Column | Column definition | Rare fine control |
Stick to utf8mb4 / utf8mb4_unicode_ci unless team specifies otherwise.
Wrong charset symptom: ??? or broken emoji in stored text—fix before large data load.
Inspect Database Metadata
SHOW CREATE DATABASE learn_db\GSELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'learn_db';Practice Exercise
CREATE DATABASE blog_dev
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE blog_dev;
-- Confirm empty—no user tables yet
SHOW TABLES;Keep blog_dev for upcoming table chapters.
FAQ
How many databases?
As needed—one per app environment (shop_dev, shop_test) is common.
Schema vs database in MySQL?
In MySQL, schema and database are synonyms: CREATE SCHEMA x = CREATE DATABASE x.
Access denied creating DB?
User lacks CREATE privilege—use root or GRANT (users chapter).
Docker MYSQL_DATABASE?
Creates one DB at init—add more with CREATE DATABASE inside client.
Case sensitivity of names?
Database/table names case depends on lower_case_table_names—use lowercase on all platforms to avoid surprises.
Default database on login?
mysql -u user -p blog_dev or USE in ~/.my.cnf.