当前位置: 首页 > news >正文

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

目录

      • 一、MySQL 基础操作代码示例
        • 1、登录 MySQL
        • 2、查看所有数据库
        • 3、创建数据库
        • 4、使用数据库
        • 5、创建表结构
        • 6、插入数据
        • 7、查询数据
        • 8、更新数据
        • 9、删除数据
        • 10、查看表结构
        • 11、删除表
        • 12、删除数据库
    • 二、常踩的坑
      • 1、主键与自增陷阱
      • 2、UPDATE/DELETE 不带 WHERE 条件
      • 3、SELECT * 的滥用
      • 4、忘记提交事务

一、MySQL 基础操作代码示例

以下是 MySQL 初学者常用的基础操作代码,涵盖数据库创建、表设计、数据增删改查等核心功能。

1、登录 MySQL

通过命令行登录 MySQL 数据库:

mysql -u 用户名 -p
2、查看所有数据库

列出当前 MySQL 实例中的所有数据库:

SHOW DATABASES;
3、创建数据库

创建一个支持多语言的 UTF-8 数据库:

CREATE DATABASE IF NOT EXISTS my_first_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4、使用数据库

切换当前操作的数据库:

USE my_first_db;
5、创建表结构

建立用户表,包含自增主键和自动时间戳:

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、插入数据

批量插入用户数据:

INSERT INTO users (username, age, email) 
VALUES 
('zhangsan', 25, 'zhangsan@example.com'),
('lisi', 30, 'lisi@example.com');
7、查询数据

基础查询语句:

SELECT * FROM users;

条件查询示例:

SELECT username, age FROM users WHERE age > 28;

排序查询示例:

SELECT * FROM users ORDER BY age DESC;
8、更新数据

修改特定用户的年龄:

UPDATE users SET age = 26 WHERE username = 'zhangsan';
9、删除数据

移除指定用户:

DELETE FROM users WHERE username = 'lisi';
10、查看表结构

显示表的字段信息:

DESCRIBE users;
11、删除表

移除整个表结构:

DROP TABLE IF EXISTS users;
12、删除数据库

彻底删除数据库:

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 会操作全表数据,可能导致灾难性后果。防护措施包括:

  • 操作前备份数据。
  • 使用事务包裹语句,确认无误后再提交:
BEGIN;
UPDATE table SET column=value WHERE condition;
-- 确认影响行数后再执行
COMMIT;

3、SELECT * 的滥用

SELECT * 会检索所有字段,包括未使用的数据,增加网络传输和内存开销。明确指定所需字段能提升性能:

SELECT id, name, email FROM users WHERE status=1;

4、忘记提交事务

InnoDB 默认需手动提交事务,未执行 COMMIT 前,其他会话无法看到修改的数据。解决方法:

  • 显式提交:COMMIT;
  • 开启自动提交:SET AUTOCOMMIT=1;(会话级设置)
    事务中可通过 ROLLBACK 回滚未提交的操作。
http://www.dtcms.com/a/419885.html

相关文章:

  • 智能客服机器人推动客服岗位角色转型
  • 商丘建设网站网站图片怎么做白色背景
  • 网站优化如何提高排名根据百度地图做网站
  • VC++ 使用OpenSSL创建RSA密钥PEM文件
  • 测试覆盖率:从度量到优化的完整工程实践指南
  • 贵阳网站设计哪家好无锡手机网站开发
  • SpringBoot中StringUtils工具类的使用
  • 阿里云网站方案建设书模板wordpress评论编辑器
  • SpringBoot核心注解、自动配置原理和配置文件
  • 46.NAT、代理服务、内网穿透
  • 网站平台建设规划西安最好的设计院排名
  • 基于Spring Boot与SSM的中药实验管理系统架构设计
  • 【Spring】Spring Boot 自动配置原理分析
  • git 的常用命令
  • 现在ui做的比较好的网站免费云手机无限时间版
  • 整体设计 逻辑系统程序 之2 Target 之1 靶点根治的逻辑体系深化与落地设计:从规则双轨到语言 - 知识桥梁
  • 网站php源码长沙设计公司都有哪些
  • 第一版代码
  • 2025年AI费控系统避坑指南:智能风控+预算管控能力对比
  • Windows的多路复用IOCP
  • 做网站的规范暴雪公司现状
  • 前端提效工具清单,常用前端效率工具推荐与开发提效实战经验
  • 做的网站怎么把技术支持去掉个人社保缴费年限怎么查询
  • 李宏毅机器学习笔记15
  • 数字化转型:开发者思维破局之道
  • 网站会员功能介绍营销背景包括哪些内容
  • 【NCS随笔】peripheral_hids_mouse例程修改为不使用PIN码绑定
  • 第三方软件验收测试:【AutoIt与Selenium结合测试文件上传/下载等Windows对话框】
  • 网站的二级目录是什么10个不愁销路的小型加工厂
  • K8S中关于容器对外提供服务网络类型