第3章 数据库和数据表的操作
【学习指南】
本章将深入讲解MySQL数据库的核心操作技术,通过理论与实践相结合的方式,帮助读者掌握数据库的创建维护、数据表管理、字符集设置等核心技能。建议配合MySQL 8.0环境进行实操练习。
3.1 数据库的基本操作
3.1.1 创建数据库
基础语法
CREATE DATABASE test_db;
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db | -- 新创建的数据库
+--------------------+
5 rows in set (0.00 sec)
示例:创建教学管理系统数据库
CREATE DATABASE IF NOT EXISTS edu_system
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
3.1.2 查看数据库
SHOW DATABASES; -- 查看所有数据库
SHOW CREATE DATABASE edu_system; -- 查看建库语句
3.1.3 选择数据库
USE edu_system; -- 切换当前数据库
SELECT DATABASE(); -- 查看当前数据库
3.1.4 删除数据库
DROP DATABASE [IF EXISTS] db_name;
-- 注意:删除操作不可逆!需谨慎操作
3.2 数据表的基本操作
3.2.1 创建数据表
CREATE TABLE students (
stu_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
gender ENUM('男','女') DEFAULT '男',
birthdate DATE,
email VARCHAR(50) UNIQUE,
INDEX idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.2.2 修改表结构
ALTER TABLE students
ADD COLUMN phone CHAR(11) AFTER birthdate,
MODIFY COLUMN email VARCHAR(100),
DROP INDEX idx_name;
3.2.3 查看表信息
DESC students; -- 查看表结构
SHOW CREATE TABLE students; -- 查看建表语句
3.2.4 删除数据表
DROP TABLE [IF EXISTS] students;
3.2.5 数据操作(DML)
INSERT INTO students(name, gender, birthdate)
VALUES ('张三', '男', '2003-05-20');
UPDATE students SET email='zhangsan@edu.cn'
WHERE stu_id = 1;
DELETE FROM students WHERE stu_id = 1;
3.3 项目数据库的实现学生管理系统数据库示例
-- 创建课程表
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(40) NOT NULL,
credit TINYINT UNSIGNED,
teacher VARCHAR(20)
);
-- 创建选课关联表
CREATE TABLE course_selection (
selection_id INT AUTO_INCREMENT PRIMARY KEY,
stu_id INT,
course_id INT,
score DECIMAL(5,2),
FOREIGN KEY (stu_id) REFERENCES students(stu_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
3.4 字符集与校对集
3.4.1 字符集基础
UTF8与UTF8MB4区别:utf8mb4支持emoji表情(需要4字节存储)
查看支持字符集:`SHOW CHARACTER SET;`
3.4.2 校对集设置
CREATE TABLE example (
content VARCHAR(20)
) CHARSET=utf8mb4 COLLATE=utf8mb4_0900_as_cs; -- 区分大小写的校对规则
3.4.3 修改字符集
ALTER DATABASE edu_system
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;