写一个网站,第一件绕不开的事就是「数据放哪儿」。用 Excel?人一多、量一大立刻散架。这一章把「古典文学网」的数据地基打好:弄清数据库到底解决什么问题,认识库、表、行、列、主键这些基本概念,把 MySQL 装好、连上,亲手创建 hiwen 库并学会正确地删除它,导入我们在整门课里要一直用的 hiwen.sql,然后敲出第一条查询。学完这一章,你的电脑上就有一个真能跑、由你自己建出来的数据库了。
SELECT id, title, author, dynasty FROM article LIMIT 2;
# Windows 和 macOS 都是这一句
mysql --version
# 需要「以管理员身份运行」CMD,否则会提示拒绝访问
net start MySQL80
net stop MySQL80
brew services start mysql
brew services stop mysql
brew services list
mysql -u root -p
SHOW DATABASES;
-- ① DDL 管结构:建表 / 加列 / 删表
CREATE TABLE t_demo (id INT PRIMARY KEY, name VARCHAR(20));
ALTER TABLE t_demo ADD COLUMN price DECIMAL(10,2);
DROP TABLE t_demo;
-- ② DML 管行:增 / 改 / 删(这里插完又删掉,结果回到原样)
INSERT INTO category (name, sort) VALUES ('赋', 6);
UPDATE category SET sort = 60 WHERE name = '赋';
DELETE FROM category WHERE name = '赋';
-- ③ DQL 只管取数,不改任何东西
SELECT name, sort FROM category ORDER BY sort;
-- ④ DCL 管权限(仅示意,本课不要求跑)
-- CREATE USER 'reader'@'localhost' IDENTIFIED BY '123456';
-- GRANT SELECT ON hiwen.* TO 'reader'@'localhost';
SHOW DATABASES;
CREATE DATABASE hiwen
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
CREATE DATABASE IF NOT EXISTS hiwen
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
SHOW WARNINGS;
USE hiwen;
SELECT DATABASE();
SHOW CREATE DATABASE hiwen;
DROP DATABASE IF EXISTS hiwen;
SHOW TABLES;
DESC article;
SELECT title FROM article LIMIT 3;
# macOS / Linux(把路径换成你自己的)
mysql -u root -p < ~/Desktop/hiwen.sql
# Windows(PowerShell 里注意路径用反斜杠或正斜杠都行)
mysql -u root -p < D:\hiwen.sql
-- 注意:source 后面写路径,末尾不要加分号
source /Users/you/Desktop/hiwen.sql
-- 导入完成后切换进去,验证一下
USE hiwen;
SELECT title, author, dynasty FROM article LIMIT 3;
-- 第 1 题
SHOW TABLES; -- 或 SHOW TABLES FROM hiwen;
DESC category; -- 或 SHOW COLUMNS FROM category;
-- 第 2 题
SELECT id, title FROM article LIMIT 3;
-- 第 3 题:红影赏析(hongying 库,结构自拟)
-- ① 建库(加 IF NOT EXISTS,保证重复执行不报错)
CREATE DATABASE IF NOT EXISTS hongying
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
-- ② 进入这个库
USE hongying;
-- ③ 建表(同样加 IF NOT EXISTS)
CREATE TABLE IF NOT EXISTS movie (
id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '电影ID',
title VARCHAR(100) NOT NULL COMMENT '片名',
genre VARCHAR(20) DEFAULT NULL COMMENT '类型',
rating DECIMAL(3,1) DEFAULT NULL COMMENT '评分',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电影表';
INSERT INTO movie (title, genre, rating) VALUES ('流浪地球', '科幻', 8.4);
SELECT id, title, genre, rating FROM movie;
-- DCL 一句话:用来管理「谁能访问、能做什么」,如 CREATE USER / GRANT / REVOKE(第 10 章细讲)
第 3 题的关键有两点:① 从建库开始走完整流程——先 CREATE DATABASE 再 USE 再建表,顺序反了就会报 No database selected;② 换的只是库名、表名和字段名,四大分类的分工完全不变——DDL 定结构、DML 改数据、DQL 取数据、DCL 管权限。能把「古典文学」的套路搬到「红影赏析」,说明你真理解了它们的边界。
做完点「检查本节」看解析与得分;做错可重做。