Chuyển tới nội dung chính

Bài 2: Tạo & Quản Lý Cơ Sở Dữ Liệu

Giai đoạn 1 – Nhập Môn · Mục tiêu: Biết cách tạo, xoá, chọn cơ sở dữ liệu và hiểu các kiểu dữ liệu cơ bản trong MySQL.


1. Tạo Cơ Sở Dữ Liệu – CREATE DATABASE

Cú pháp

CREATE DATABASE ten_csdl;

Ví dụ

-- Tạo CSDL cho cửa hàng
CREATE DATABASE QuanLyCuaHang;

-- Tạo CSDL chỉ khi chưa tồn tại (tránh lỗi)
CREATE DATABASE IF NOT EXISTS QuanLyCuaHang;

:::warning Quy tắc đặt tên

  • Không chứa dấu cách (dùng _ thay thế): quan_ly_cua_hang , quan ly cua hang
  • Không bắt đầu bằng số: db_2024 , 2024_db
  • Nên dùng chữ thường và gạch dưới: quanlycuahang hoặc quan_ly_cua_hang :::

2. Xem danh sách CSDL – SHOW DATABASES

SHOW DATABASES;

Kết quả mẫu:

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| QuanLyCuaHang |
+--------------------+

:::caution Cơ sở dữ liệu hệ thống Các CSDL information_schema, mysql, performance_schemaCSDL hệ thống của MySQL. Không được xoá hay sửa đổi chúng! :::


3. Chọn CSDL để làm việc – USE

Trước khi tạo bảng hay truy vấn, bạn cần chọn CSDL muốn làm việc:

USE QuanLyCuaHang;

Sau lệnh này, tất cả các lệnh tiếp theo sẽ áp dụng lên CSDL QuanLyCuaHang.


4. Xoá Cơ Sở Dữ Liệu – DROP DATABASE

-- Xoá CSDL
DROP DATABASE QuanLyCuaHang;

-- Xoá chỉ khi tồn tại (tránh lỗi)
DROP DATABASE IF EXISTS QuanLyCuaHang;

:::danger Cảnh báo Lệnh DROP DATABASE sẽ xoá vĩnh viễn toàn bộ CSDL cùng tất cả các bảng và dữ liệu bên trong. Hành động này KHÔNG THỂ HOÀN TÁC! :::


5. Sửa đổi CSDL – ALTER DATABASE

Thay đổi bộ ký tự (character set) của CSDL:

-- Đặt bộ ký tự UTF-8 (hỗ trợ tiếng Việt)
ALTER DATABASE QuanLyCuaHang
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

:::info Tại sao dùng utf8mb4? utf8mb4 hỗ trợ đầy đủ ký tự Unicode, bao gồm tiếng Việt có dấu và emoji. Luôn sử dụng utf8mb4 thay vì utf8 trong MySQL. :::


6. Các kiểu dữ liệu trong MySQL

6.1. Kiểu số (Numeric)

KiểuPhạm viKích thướcSử dụng cho
TINYINT-128 → 1271 byteTrạng thái (0/1), tuổi
SMALLINT-32,768 → 32,7672 bytesNăm, số lượng nhỏ
INT±2.1 tỷ4 bytesID, số lượng, mã
BIGINT±9.2 × 10¹⁸8 bytesID lớn (Facebook, Google)
DECIMAL(M,D)Tuỳ chỉnhTuỳ chỉnhTiền tệ, phần trăm
FLOAT±3.4 × 10³⁸4 bytesSố thập phân (gần đúng)
DOUBLE±1.7 × 10³⁰⁸8 bytesTính toán khoa học

:::tip DECIMAL vs FLOAT

  • Dùng DECIMAL(10,2) cho tiền tệ → chính xác tuyệt đối.
  • Dùng FLOAT/DOUBLE cho dữ liệu khoa học → nhanh hơn nhưng có sai số nhỏ.
-- Cột giá sản phẩm: tối đa 99,999,999.99
Gia DECIMAL(10, 2)

:::

6.2. Kiểu chuỗi (String)

KiểuĐộ dàiSử dụng cho
CHAR(n)Cố định n ký tựMã (VD: CHAR(5) cho mã SP)
VARCHAR(n)Tối đa n ký tựTên, email, địa chỉ
TEXTTối đa 65,535 ký tựMô tả, ghi chú dài
LONGTEXTTối đa 4GBNội dung bài viết
ENUM(...)Giá trị cố địnhGiới tính, trạng thái
-- Ví dụ sử dụng
HoTen VARCHAR(100), -- Họ tên tối đa 100 ký tự
MaSP CHAR(10), -- Mã SP luôn đúng 10 ký tự
MoTa TEXT, -- Mô tả sản phẩm
GioiTinh ENUM('Nam', 'Nữ') -- Chỉ chọn Nam hoặc Nữ

6.3. Kiểu ngày giờ (Date/Time)

KiểuĐịnh dạngVí dụ
DATEYYYY-MM-DD2024-12-25
TIMEHH:MM:SS14:30:00
DATETIMEYYYY-MM-DD HH:MM:SS2024-12-25 14:30:00
TIMESTAMPGiống DATETIMETự động cập nhật khi sửa bản ghi
YEARYYYY2024
-- Ví dụ sử dụng
NgaySinh DATE, -- 2005-03-15
ThoiGianDatHang DATETIME, -- 2024-12-25 14:30:00
NgayCapNhat TIMESTAMP DEFAULT NOW() -- Tự động ghi thời gian hiện tại

6.4. Kiểu Boolean

MySQL không có kiểu BOOLEAN riêng, thay vào đó dùng TINYINT(1):

DaThanhToan TINYINT(1) DEFAULT 0 -- 0 = Chưa, 1 = Rồi
-- Hoặc
DaThanhToan BOOLEAN DEFAULT FALSE -- MySQL tự chuyển thành TINYINT(1)

7. Bảng tổng hợp: Chọn kiểu dữ liệu phù hợp

Loại dữ liệuKiểu nên dùngVí dụ
Mã/ID tự tăngINT AUTO_INCREMENTMaHS, MaSP
Họ tênVARCHAR(100)Nguyễn Văn An
EmailVARCHAR(255)an@gmail.com
Số điện thoạiVARCHAR(15)0901234567
Giá tiềnDECIMAL(12, 2)1,250,000.00
Ngày sinhDATE2005-03-15
Mô tảTEXTSản phẩm chất lượng cao...
Trạng tháiENUM(...) hoặc TINYINT'Đang giao', 'Hoàn thành'
Giới tínhENUM('Nam','Nữ')Nam, Nữ

:::info Tại sao Số điện thoại dùng VARCHAR? Số điện thoại bắt đầu bằng 0 (VD: 0901234567). Nếu dùng INT, số 0 đầu tiên sẽ bị mất. Ngoài ra, số điện thoại có thể chứa + hoặc - (VD: +84-901234567). :::


Bài tập thực hành

Bài 1: Thao tác cơ bản

-- 1. Tạo CSDL tên QuanLyTruongHoc
-- 2. Xem danh sách tất cả CSDL
-- 3. Chọn CSDL QuanLyTruongHoc để làm việc
-- 4. Đặt bộ ký tự utf8mb4 cho CSDL

Bài 2: Xác định kiểu dữ liệu

Cho các thông tin sau, hãy chọn kiểu dữ liệu phù hợp:

Thông tinKiểu dữ liệu bạn chọn
Mã học sinh (tự tăng)?
Họ và tên?
Ngày sinh?
Điểm trung bình (VD: 8.75)?
Giới tính?
Địa chỉ nhà?
Ảnh đại diện (đường dẫn file)?
Đã tốt nghiệp hay chưa?

Bài 3: Thiết kế CSDL

Hãy liệt kê các cột (tên cột + kiểu dữ liệu) cần thiết cho bảng quản lý Sản phẩm của một cửa hàng điện thoại di động.


Quay lại: Roadmap · Bài tiếp: Bài 3 – Tạo Bảng & Ràng Buộc