news 2026/5/7 5:19:22

MySQL基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL基础

1登录MySQL

mysql -u root -p

然后输入密码,出现mysql>表示成功

2创建数据库

-- 创建数据库(名字自己改,比如 testdb) CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ​ -- 查看所有数据库 SHOW DATABASES; ​ -- 使用这个数据库(必须先选库,才能建表) USE testdb;

创建数据库的参数

(1)CHARACTER SET utf8mb4:指定字符集

(2)COLLATE utf8mb4_unicode_ci:按照国际通用Unicode规则排序

3创建数据表

-- 创建用户表 CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, -- 自增ID(主键) username VARCHAR(50) NOT NULL, -- 用户名 password VARCHAR(100) NOT NULL, -- 密码 email VARCHAR(100), -- 邮箱 create_time DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

查看是否创建成功

-- 查看当前库的所有表 SHOW TABLES; ​ -- 查看表结构 DESC user;

4CRUD

(1)C-Create插入数据

INSERT INTO user (username, password, email) VALUES ('zhangsan', '123456', 'zhangsan@qq.com');

(2)R-Read查询数据

查全部:

SELECT * FROM user;

查看某些字段:

SELECT id, username, email FROM user;

(3)U-Update

UPDATE user SET password = '654321', email = 'zs_new@qq.com' WHERE id = 1;

一定要加 WHERE,否则全表被删!

(4)D-Delete

DELETE FROM user WHERE id = 1;

5主键

一张表只能有一个,用来唯一标识一行数据,不能为空,不能重复。

在建表时,对应字段如id

id INT PRIMARY KEY AUTO_INCREMENT

6唯一键

保证这个字段的值不重复,但可以允许 NULL(最多一个 NULL)。

同样在建表时

email VARCHAR(100) UNIQUE KEY

7普通索引

为了查询更快,不限制重复,不限制 NULL。

一张表可以建很多索引

不约束数据,只加速查询

字段可以重复、可以 NULL

INDEX idx_username (username)

建表示例

CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键 username VARCHAR(50) NOT NULL, phone VARCHAR(11) UNIQUE KEY, -- 唯一键 email VARCHAR(100), INDEX idx_email (email) -- 普通索引 );

8事务

事务即是一组SQL语句,要么全部成功,要么全部失败,不会只执行一半

START TRANSACTION; -- 开启事务 SQL语句 COMMIT; -- 提交,真正生效 -- 出错了 ROLLBACK; -- 回滚,全部撤销

9ACID:

1. A — Atomicity 原子性

要么全做,要么全不做

不会执行一半成功一半失败。

2. C — Consistency 一致性

执行前后,数据整体是合法、完整的。

比如转账前后总金额不变。

3. I — Isolation 隔离性

多个事务同时跑,互相看不见对方中间状态,互不干扰。

4. D — Durability 持久性

一旦提交,数据就永久落盘,断电也不会丢。

如果事务并发:

多个事务同时改数据,会出问题:

  1. 脏读:读到别人未提交的数据(别人回滚了就脏了)

  2. 不可重复读:同一事务内,两次查询结果不一样

  3. 幻读:查询时没有这条数据,插入时发现已存在

10锁

1. 共享锁 S Lock(读锁)

  • 加了 S 锁:其他人可以继续读,但不能写

  • 用法:

SELECT * FROM t LOCK IN SHARE MODE;

2. 排他锁 X Lock(写锁)

  • 加了 X 锁:其他人既不能读也不能写

  • UPDATE/DELETE/INSERT 自动加 X 锁

  • 手动:

SELECT * FROM t FOR UPDATE;

3. 表锁 vs 行锁

  • 表锁:锁整张表,并发差,简单

  • 行锁:只锁某一行,并发高,InnoDB 默认

4. 间隙锁 Gap Lock(防幻读)

锁定一个范围,防止别人在范围内插入数据。

5. 意向锁

表级锁,用来快速判断表里有没有行被锁,提升效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:20:17

vivado hls的ap_ctrl_none的使用

一、说明 1.ap_ctrl_none:最精简的模式,不产生任何握手信号,模块依靠数据有效信号持续工作 2.ap_ctrl_none也就是free-run模式,永动机模式 3.ap_ctrl_none的应用高度依赖于#pragma HLS dataflow指令,目的是在数据流区域…

作者头像 李华
网站建设 2026/4/18 1:54:04

艾默生15kW直流充电模块DCDC控制软件分析

系统概述 艾默生15kW直流充电模块是一款高性能的电力转换设备,采用DSP2803x系列数字信号处理器作为核心控制器。该软件系统实现了对直流-直流(DCDC)转换器的精确控制,具备完善的保护机制和通信功能。 核心架构设计 1. 控制系统…

作者头像 李华
网站建设 2026/4/17 13:42:19

Cpp2IL:终极Unity IL2CPP逆向工程与二进制分析工具实战指南

Cpp2IL:终极Unity IL2CPP逆向工程与二进制分析工具实战指南 【免费下载链接】Cpp2IL Work-in-progress tool to reverse unitys IL2CPP toolchain. 项目地址: https://gitcode.com/gh_mirrors/cp/Cpp2IL 当Unity游戏采用IL2CPP编译后,原本清晰的C…

作者头像 李华
网站建设 2026/4/18 1:03:24

UVM Phase机制:从同步原理到高效验证实践

1. UVM Phase机制的核心原理 第一次接触UVM Phase时,我完全被这个看似复杂的同步机制搞懵了。直到在实际项目中踩过几次坑后,才真正理解它的精妙之处。简单来说,Phase机制就像是验证环境中的交通信号灯,确保所有验证组件&#xf…

作者头像 李华
网站建设 2026/4/17 18:07:54

AIAgent如何像人类一样做长期规划?SITS2026首次公开7层分层推理架构与实时决策延迟压降至≤87ms的工业级实践

第一章:SITS2026分享:AIAgent规划与推理能力 2026奇点智能技术大会(https://ml-summit.org) AIAgent的规划与推理能力是其实现复杂任务闭环的核心,区别于传统响应式模型,新一代Agent需在多步约束下自主生成可执行计划、评估中间…

作者头像 李华
网站建设 2026/4/17 12:36:27

GitHub Copilot背后的秘密武器:OpenAI Codex实战指南(Python示例详解)

GitHub Copilot背后的秘密武器:OpenAI Codex实战指南(Python示例详解) 当你盯着屏幕上的半成品代码发呆时,是否想过有个懂编程的搭档能实时提供建议?这正是GitHub Copilot带给开发者的魔法体验。而这份魔法的核心引擎&…

作者头像 李华