MySQL 基础入门
MySQL 简介
MySQL 是最流行的开源关系型数据库,采用 SQL 标准语言,支持多用户、多线程,适合中小型 Web 应用。
InnoDB 引擎特性:
- 支持事务(ACID)
- 行级锁定
- 外键约束
- MVCC 多版本并发控制
- 崩溃恢复(redo log)
常用数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
| INT | 整数 | age INT |
| BIGINT | 大整数 | id BIGINT |
| VARCHAR(n) | 变长字符串 | name VARCHAR(50) |
| TEXT | 长文本 | content TEXT |
| DECIMAL(m,n) | 精确小数 | price DECIMAL(10,2) |
| DATETIME | 日期时间 | create_time DATETIME |
| TINYINT | 布尔值 | is_deleted TINYINT DEFAULT 0 |
DDL 数据定义
创建表:
CREATE TABLE article ( id BIGINT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200) NOT NULL, slug VARCHAR(200) UNIQUE, content TEXT, category_id BIGINT, status TINYINT DEFAULT 0, publish_time DATETIME, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_category (category_id), INDEX idx_status_time (status, publish_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE 常用操作:
ALTER TABLE article ADD COLUMN summary VARCHAR(500) AFTER title; ALTER TABLE article MODIFY COLUMN content MEDIUMTEXT; ALTER TABLE article ADD INDEX idx_slug (slug); DROP TABLE IF EXISTS article;
DML 数据操作
INSERT INTO article (title, slug, content, status) VALUES ('MySQL入门', 'mysql-intro', '内容...', 1);
UPDATE article SET status = 1 WHERE id = 1;
-- 推荐软删除 UPDATE article SET is_deleted = 1 WHERE id = 1; -- 物理删除 DELETE FROM article WHERE id = 1;
DQL 数据查询
-- 基本查询 SELECT id, title, publish_time FROM article WHERE status = 1;
-- 模糊搜索 SELECT * FROM article WHERE title LIKE '%MySQL%';
-- 排序分页 SELECT * FROM article WHERE status = 1 ORDER BY publish_time DESC LIMIT 10 OFFSET 0;
-- JOIN 联表 SELECT a.*, c.name AS category_name FROM article a LEFT JOIN blog_category c ON a.category_id = c.id WHERE a.status = 1;
-- 聚合 SELECT category_id, COUNT(*) cnt FROM article WHERE status = 1 GROUP BY category_id HAVING cnt > 3;