【连载1】《假装自己是个小白 —— 重新认识 MySQL》实践指南

目录

一、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 条件

未指定条件的 UPDATEDELETE 会操作全表数据,可能导致灾难性后果。防护措施包括:

  • 操作前备份数据。
  • 使用事务包裹语句,确认无误后再提交:
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 回滚未提交的操作。
复制代码
相关推荐
阿巴斯甜12 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker13 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952714 小时前
Andorid Google 登录接入文档
android
黄林晴15 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android