目录
一、MySQL 基础操作代码示例
以下是 MySQL 初学者常用的基础操作代码,涵盖数据库创建、表设计、数据增删改查等核心功能。
1、登录 MySQL
通过命令行登录 MySQL 数据库:
sql
mysql -u 用户名 -p
2、查看所有数据库
列出当前 MySQL 实例中的所有数据库:
sql
SHOW DATABASES;
3、创建数据库
创建一个支持多语言的 UTF-8 数据库:
sql
CREATE DATABASE IF NOT EXISTS my_first_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4、使用数据库
切换当前操作的数据库:
sql
USE my_first_db;
5、创建表结构
建立用户表,包含自增主键和自动时间戳:
sql
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
age INT,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6、插入数据
批量插入用户数据:
sql
INSERT INTO users (username, age, email)
VALUES
('zhangsan', 25, 'zhangsan@example.com'),
('lisi', 30, 'lisi@example.com');
7、查询数据
基础查询语句:
sql
SELECT * FROM users;
条件查询示例:
sql
SELECT username, age FROM users WHERE age > 28;
排序查询示例:
sql
SELECT * FROM users ORDER BY age DESC;
8、更新数据
修改特定用户的年龄:
sql
UPDATE users SET age = 26 WHERE username = 'zhangsan';
9、删除数据
移除指定用户:
sql
DELETE FROM users WHERE username = 'lisi';
10、查看表结构
显示表的字段信息:
sql
DESCRIBE users;
11、删除表
移除整个表结构:
sql
DROP TABLE IF EXISTS users;
12、删除数据库
彻底删除数据库:
sql
DROP DATABASE IF EXISTS my_first_db;
### 字符编码问题
数据库或表使用默认的 `latin1` 编码时,插入中文数据会出现乱码或报错。推荐在创建数据库或表时显式指定 `utf8mb4` 编码,该编码支持完整的 Unicode 字符(包括 emoji)。
示例建表语句:
```sql
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
content VARCHAR(255)
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
二、常踩的坑
1、主键与自增陷阱
删除数据后,自增 ID 不会重新计算,可能导致后续插入的 ID 不连续。若业务逻辑依赖 ID 连续性,需通过程序控制而非依赖数据库自增机制。
自增 ID 的设计原则是唯一性,非连续性。如需连续序号,可通过 ROW_NUMBER()
窗口函数生成。
2、UPDATE/DELETE 不带 WHERE 条件
未指定条件的 UPDATE
或 DELETE
会操作全表数据,可能导致灾难性后果。防护措施包括:
- 操作前备份数据。
- 使用事务包裹语句,确认无误后再提交:
sql
BEGIN;
UPDATE table SET column=value WHERE condition;
-- 确认影响行数后再执行
COMMIT;
3、SELECT * 的滥用
SELECT *
会检索所有字段,包括未使用的数据,增加网络传输和内存开销。明确指定所需字段能提升性能:
sql
SELECT id, name, email FROM users WHERE status=1;
4、忘记提交事务
InnoDB 默认需手动提交事务,未执行 COMMIT
前,其他会话无法看到修改的数据。解决方法:
- 显式提交:
COMMIT;
- 开启自动提交:
SET AUTOCOMMIT=1;
(会话级设置)
事务中可通过ROLLBACK
回滚未提交的操作。