mysql——基础知识
关键字大小写不敏感
查看表结构中的 desc = describe 描述
降序中的 desc = descend
1. 数据库的操作
1. 创建数据库
create database 数据库名;
为防止创建的数据库重复
CREATE DATABASE IF NOT EXISTS 数据库名;
手动设置数据库采用的字符集
character set 字符集名;charset 字符集名;
char : unicode
String : utf8mb4(推荐使用 utf8mb4,完整支持 Unicode,包括表情符号)
utf8(残本,不支持emoji表情符号)
指定数据库字符集的校验规则
collate 排序规则;
2. 查看数据库
show databases ;
3. 选中要使用的数据库
use 数据库名;
4. 删除数据库
drop database 数据库名;
1. 常用数据类型
一、数值类型
1. 整数类型
| 类型 | 字节 | 有符号范围 | 无符号范围 |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32,768 ~ 32,767 | 0 ~ 65,535 |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
| INT/INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
| BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 |
2. 浮点数类型
| 类型 | 字节 | 说明 |
|---|---|---|
| FLOAT | 4 | 单精度浮点数,约7位精度 |
| DOUBLE | 8 | 双精度浮点数,约15位精度 |
3. 定点数类型
| 类型 | 说明 |
|---|---|
| DECIMAL(M,D) | 精确小数,M是总位数,D是小数位数 |
精度高,运算速度慢,占的空间大
二、字符串类型
1. 短文本
| 类型 | 最大长度 | 特点 |
|---|---|---|
| CHAR(n) | 255字符 | 固定长度,效率高 |
| VARCHAR(n) | 65,535字节 | 可变长度,节省空间 |
n 表示该类型最多存储多少个字符(不是字节),一个汉字算一个字符
2. 长文本
| 类型 | 最大长度 | 特点 |
|---|---|---|
| TINYTEXT | 255字节 | |
| TEXT | 65,535字节 | |
| MEDIUMTEXT | 16,777,215字节 | |
| LONGTEXT | 4GB |
3. 二进制数据
| 类型 | 说明 |
|---|---|
| BINARY(n) | 固定长度二进制字符串 |
| VARBINARY(n) | 可变长度二进制字符串 |
| BLOB | 二进制大对象 |
文本数据存储的都是字符,这些字符都可以在对应的码表上查到
二进制数据:在码表上查不到的如音乐,图片,视频
三、日期时间类型
| 数据类型 | 存储大小 | 格式 | 范围(最小值 ~ 最大值) |
|---|---|---|---|
| YEAR | 1字节 | YYYY | 1901 ~ 2155 |
| DATE | 3字节 | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 |
| TIME | 3字节 | HH:MM:SS | -838:59:59 ~ 838:59:59 |
| DATETIME | 5字节 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
| TIMESTAMP | 4字节 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
2. 表操作
1. 创建表
create table 表名(
列名 数据类型[约束条件],
列名 数据类型[约束条件],
...
);
2. 查看表结构
desc 表名;

int(11) 是四个字节,此处(11)表示显示宽度,即显示这个int类型时,最多占据11个字符的宽度(和存储时的容量无关)。
3. 删除表
drop table 表名;
删除表的同时,表中的数据也一并删除。
3. 表数据操作
1. 新增数据
值的个数和类型要和表结构匹配
1. 单行数据 + 全列插入(即在表中插入一行数据)
insert into 表名 values (值1,值2,值3...);
insert into 表名 values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...),...;
insert into 表名 (列1,列2,...) values (值1,值2,...);
insert into 表名 (列1,列2,...) values (值1,值2,...),(值1,值2,...),...; 2. 查询数据
mysql是一个“客户端 - 服务器”结构的程序
客户端在这里进行的操作,都会通过请求发送给服务器,服务器查询的结果也会通过响应返回给客户端(以临时表的形式)
SQL 查询的逻辑执行顺序:
FROM 子句 - 确定数据来源
JOIN 子句 - 连接相关表
WHERE - 行级过滤(此时不能使用SELECT中定义的别名)
GROUP BY - 数据分组
HAVING - 分组后过滤
SELECT - 计算列表达式并选择列
DISTINCT 关键字- 去重
ORDER BY - 排序(可以使用SELECT中定义的别名)
LIMIT /OFFSET- 结果集限制
SELECT [DISTINCT] 列1 [as 别名] , 列2 [as 别名], ...
FROM 表名
[WHERE 条件]
[GROUP BY 分组列]
[HAVING 分组条件]
[ORDER BY 排序列 [ASC|DESC]]
[LIMIT [偏移量,] 行数]; 1. 全列查询
select * from 表名;
如果数据库当前这个表中的数据特别多,就可能会产生问题:
1. 读取硬盘,把硬盘的IO给跑满了,此时程序的其他部分想访问硬盘,就会非常慢。
2. 操作网络,也可能把网卡的带宽跑满,此时其他客户端想通过网络访问服务器,也会非常慢
这样的拥堵,就可能导致客户端无法顺利访问到数据库,进一步也就对整个服务器造成影响(相当于数据库服务器挂了)
2. 指定列查询
select 列1,列2,... from 表名;
3. 表达式查询
是列与列之间的运算
select 表达式1,表达式2,... from 表名;

4. 去重:DISTINCT
select distinct 列1,列2... from 表名;
5. 别名
列的别名不能在ORDER BY中直接使用(在某些MySQL版本中)
SELECT [DISTINCT] 列1 [[as] 别名] , 列2 [[as] 别名], ... FROM 表名;
6. 排序:order by
select 列1,列2... from 表名order by 列名 [asc/desc],列名 [asc/desc]...;
3. 可以对多个字段进行排序,排序优先级随书写顺序
7. 条件查询:where
select 列名 from 表名 where 约束条件;
| 运算符 | 描述 |
|---|---|
| = | 等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL |
| <=> | 等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
| <> 或 != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN a0 AND a1 | 范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1) |
| IN(option,...) | 在指定值列表中,如果是 option 中的任意一个,返回 TRUE(1) |
| LIKE | 模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
| IS NULL | 是空值 |
| IS NOT NULL | 不是空值 |
SELECT * FROM 表名 WHERE 列名 LIKE '模式'; % 表示任意多个(包括 0 个)任意字符;
_ 表示任意一个字符
AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
8. 分页查询
始终结合 ORDER BY 使用分页,否则结果顺序不确定
select 列名 from 表名 limit 每页记录数 offset 偏移量;select 列名 from 表名 limit 偏移量, 每页记录数;
当前页码(page)和每页大小(pageSize)
偏移量(offset) = (page - 1) * pageSize
每页记录数 = pageSize
3. 修改数据
UPDATE 表名
SET 列名1 = 值1, 列名2 = 值2, ...
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];
将名字为null改为信阳毛尖

怎样查看警告:
show warnings;
4. 删除数据
DELETE FROM 表名
[WHERE 条件]
[ORDER BY 列名]
[LIMIT 行数];
delete from 表名;
如果删除数据时不加任何约束条件,则将整个表中的数据全部删除,只留空表。
在修改和删除数据中,limit 行数; 表示共删除或修改几行。
4. 数据库约束
在创建表时使用
约束类型:NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。CHECK - 保证列中的值符合指定的条件。
1. 非空约束 (NOT NULL)
作用:确保列不能包含NULL值
特点:
-
强制字段必须有值
-
可以在ALTER TABLE时添加或删除
2. 唯一约束 (UNIQUE)
作用:确保列中的值唯一
特点:
-
允许NULL值(但只能有一个NULL)
-
一个表可以有多个唯一约束
-
自动创建非聚集索引

3. 默认约束 (DEFAULT)
作用:当插入数据未指定值时提供默认值,默认情况下为null.
特点:
-
可以是常量值或表达式
-
适用于INSERT和UPDATE操作

4. 主键约束 (PRIMARY KEY)
作用:唯一标识表中的每一行记录,确保实体完整性
特点:
-
不允许NULL值
-
不允许重复值
-
一个表只能有一个主键
-
自动创建聚集索引

5. 外键约束 (FOREIGN KEY)
作用:维护表之间的引用完整性
特点:
-
确保一个表的值必须在另一个表中存在
-
可以定义级联操作
-
引用列必须是主键或唯一键
父表:约束别人的表
子表:被别人约束的表
CREATE TABLE 子表名 (列定义...,[CONSTRAINT 约束名] FOREIGN KEY (外键列) REFERENCES 主表名(主表列)[ON DELETE 参照动作][ON UPDATE 参照动作]
);

外键约束动作
当主表数据被删除或更新时,可以指定子表数据的处理方式:
| 动作 | 描述 |
|---|---|
RESTRICT | (默认)拒绝主表的删除或更新操作 |
CASCADE | 级联操作,主表删除/更新时,子表对应记录也删除/更新 |
SET NULL | 主表删除/更新时,子表对应外键列设为NULL(需允许NULL) |
NO ACTION | 类似RESTRICT |
SET DEFAULT | 设为默认值(MySQL目前不支持) |
针对父表的 删除/修改 操作,如果当前被 删除/修改 的值,已经被子表引用了,则无法进行此操作
外键约束要始终保持,子表中的数据在对应的父表的列中要存在。
如果父表不存在,子表添加元素时无参考依据
指定外键约束,时,父表中被关联的一列必须为主键或unique。
逻辑删除:
如果要删除与子表关联的父表元素,我们可以多设置一列进行条件约束。
6. 检查约束 (CHECK)
作用:确保列值满足指定条件
特点:
-
MySQL 8.0.16+ 完全支持
-
可以引用多列
-
条件不满足时拒绝操作

7. 自增约束 (AUTO_INCREMENT)
作用:自动为列生成唯一递增整数值(会自动排序),必须作用与键
特点:
-
通常用于主键
-
每张表只能有一个自增列
-
默认从1开始,每次增加1
-
支持整数类型(INT, SMALLINT, BIGINT等)
-
自增列不保证连续:删除记录后,自增值不会重用

相关文章:
mysql——基础知识
关键字大小写不敏感 查看表结构中的 desc describe 描述 降序中的 desc descend 1. 数据库的操作 1. 创建数据库 create database 数据库名;为防止创建的数据库重复 CREATE DATABASE IF NOT EXISTS 数据库名;手动设置数据库采用的字符集 character set 字符集名;chars…...
html+js+clickhouse环境搭建
实验背景: 我目前有一台服务器A,和一台主机B,两台设备属于同一局域网,相互之间可以通讯。服务器A中部署着clickhouse,我在主机B中想直接通过javascript代码访问服务器中的clickhouse数据库并获取数据。 ClickHouse 服务…...
JWT算法详解
JWT(JSON Web Token)的整个算法流程主要基于其签名算法。以最常见的签名算法HS256(HMAC SHA256)为例,以下是详细的算法流程,涵盖编码、签名和验证过程: 编码 构造头部(Header&#x…...
OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比
OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于OOA-CN…...
Python Cookbook-6.6 在代理中托管特殊方法
任务 在新风格对象模型中,Python 操作其实是在类中查找特殊方法的(而不是在实例中那是经典对象模型的处理方式)。现在,需要将一些新风格的实例包装到代理类中,此代理可以选择将一些特殊方法委托给内部的被包装对象。 解决方案 你需要即时地…...
PCIE Spec ---Base Address Registers
7.5.1.2.1 Base Address Registers (Offset 10h - 24h) 在 boot 到操作系统之前,系统软件需要生产一个内存映射的 address map ,用于告诉系统有多少内存资源,以及相应功能需要的内存空间,所以在设备的 PCI 内存空间中就有了这个 …...
Spring如何通过XML注册Bean
在上一篇当中我们完成了对三种资源文件的读写 上篇内容:Spring是如何实现资源文件的加载 Test public void testClassPathResource() throws IOException { DefaultResourceLoader defaultResourceLoader new DefaultResourceLoader(); Resource resource …...
理解 `#pragma pack`:C/C++内存对齐的钥匙
引言:为什么我的网络程序收发的数据总是错位? 在网络编程中,你是否遇到过这样的困惑:明明发送方和接收方的结构体定义完全一样,但解析出来的数据却乱七八糟?这很可能是因为内存对齐在作祟。今天我们就来深…...
开源键鼠共享软件的“爱恨情仇“:Deskflow、InputLeap与Barrier的演化史
开源键鼠共享软件的"爱恨情仇":Deskflow、InputLeap与Barrier的演化史 一、血脉渊源:从Synergy到三足鼎立 这三款软件的起源都与 Synergy 这款商业软件密切相关: 2001年:Synergy开创软件化KVM先河2017年&…...
【Python核心库实战指南】从数据处理到Web开发
目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块对比 二、实战演示环境配置要求核心代码实现(5个案例)案例1:NumPy数组运算案例2:Pandas数据分析…...
运维:概念、模式与硬件基础
一、运维概述:从网管到智能运维的进化之路 1. 运维岗位的定义 IT运维管理是保障企业IT系统及网络可用性、安全性、稳定性,确保业务连续性的核心工作。通过专业技术手段,对计算机网络、应用系统、电信网络、软硬件环境及运维服务流程等进行综…...
基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战
目录 前言 一、需求介绍 1、指定宽度生成 2、指定列自适应生成 二、Java生成实现 1、公共方法 2、指定宽度生成 3、指定列自适应生成 三、总结 前言 在当今数字化与信息化飞速发展的时代,图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数…...
【版本控制】idea中使用git
大家好,我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用,最重要的部分,在idea中操作git。目录在右侧哦。 如果需要git命令的详解: 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先关闭项目…...
QT:Qt5 串口模块 (QSerialPort) 在 VS2015 中正确关闭串口避免被占用
以下是使用 Qt5 串口模块 (QSerialPort) 在 VS2015 中正确关闭串口避免被占用的完整示例代码: #include <QSerialPort> #include <QDebug>// 创建全局或类成员变量(推荐使用智能指针) QSerialPort *serialPort nullptr; // 打开…...
Linux——入门常用基础指令
文章目录 Linux入门常用基础指令使用工具介绍基础指令clear指令pwd指令ls指令cd指令Linux系统下的文件路径及文件存储结构文件结构家目录绝对路径和相对路径tree工具 stat指令which指令alias指令touch指令mkdir指令cat指令rm指令man指令cp指令通配符 * Linux入门常用基础指令 …...
【技术追踪】Differential Transformer(ICLR-2025)
Differential Transformer:大语言模型新架构, 提出了 differential attention mechanism,Transformer 又多了一个小 trick~ 论文:Differential Transformer 代码:https://github.com/microsoft/unilm/tree/master/Diff…...
overlay 模块加载失败问题分析
问题背景 CentOS 7系统上,内核版本是3.10.0-693.21.1.el7.x86_64,加载overlay模块的时候失败了。错误提示说找不到支持的overlay文件系统,让我确认内核足够新并且已经加载了overlay支持。但是检查发现/lib/modules/3.10.0-693.el7.x86_64/ke…...
【Linux网络】应用层自定义协议与序列化
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12891150.html 目录 应用层 再谈 "协议" 网络版计算器 序列化 和 反序列化 重新理解…...
Vue接口平台学习十——接口用例页面2
效果图及简单说明 左边选择用例,右侧就显示该用例的详细信息。 使用el-collapse折叠组件,将请求到的用例详情数据展示到页面中。 所有数据内容,绑定到caseData中 // 页面绑定的用例编辑数据 const caseData reactive({title: "",…...
目标检测中的损失函数(二) | BIoU RIoU α-IoU
BIoU来自发表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 论文针对现有目标检测方法只关注“足够好”的定位,而非“最优”的框,提出了一种考虑定位质量的NMS策略和BIoU loss。 这里不赘…...
SpringAI系列 - MCP篇(一) - 什么是MCP
目录 一、引言二、MCP核心架构三、MCP传输层(stdio / sse)四、MCP能力协商机制(Capability Negotiation)五、MCP Client相关能力(Roots / Sampling)六、MCP Server相关能力(Prompts / Resources / Tools)一、引言 之前我们在接入大模型时,不同的大模型通常都有自己的…...
Linux 入门十一:Linux 网络编程
一、概述 1. 网络编程基础 网络编程是通过网络应用编程接口(API)编写程序,实现不同主机上进程间的信息交互。它解决的核心问题是:如何让不同主机上的程序进行通信。 2. 网络模型:从 OSI 到 TCP/IP OSI 七层模型&…...
沐渥氮气柜控制板温湿度氧含量氮气流量四显智控系统
氮气柜控制板通常用于实时监控和调节柜内环境参数,确保存储物品如电子元件、精密仪器、化学品等,处于低氧、干燥的稳定状态。以下是沐渥氮气柜控制板核心参数的详细介绍及控制逻辑: 一、控制板核心参数显示模块 1)温度显示&am…...
vue3 主题模式 结合 element-plus的主题
vue3 主题模式 结合 element-plus的主题 npm i element-plus --save-dev在 Vue 3 中,实现主题模式主要有以下几种方式 1.使用 CSS 变量(自定义属性) CSS 变量是一种在 CSS 中定义可重用值的方式。在主题模式中,可以将颜色、字体…...
Redis 有序集合(Sorted Set)
Redis 有序集合(Sorted Set) 以下从基础命令、内部编码和使用场景三个维度对 Redis 有序集合进行详细解析: 一、基础命令 命令时间复杂度命令含义zadd key score member [score member …] O ( k l o g ( n ) ) O(klog(n)) O(klog(n))&…...
[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
QtCreator的设计器、预览功能能看到程序图标,编译运行后图标消失
重新更换虚拟机(Vmware Kylin),重新编译和配置了很多第三方库后,将代码跑到新的这个虚拟机环境中,但是出现程序图标不可见,占位也消失,后来继续检查ui文件,ui文件图标也异常&#x…...
QT文件和文件夹拷贝操作
1.拷贝文件夹 //(源文件目录路劲,目的文件目录,文件存在是否覆盖) bool copyDirectory(const QString& srcPath, const QString& dstPath, bool coverFileIfExist) { QDir srcDir(srcPath); QDir dstDir(dstPath); if (!dstDir.exi…...
面试常用基础算法
目录 快速排序归并排序堆排序 n n n皇后问题最大和子数组爬楼梯中心扩展法求最长回文子序列分割回文串动态规划求最长回文子序列最长回文子串单调栈双指针算法修改 分割回文串滑动窗口栈 快速排序 #include <iostream> #include <algorithm>using namespace std;…...
Python-24:小R的随机播放顺序
问题描述 小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌,播放后将其从歌单中移除。如果歌单中还有歌曲,则会将当前第一首歌移到最后一首。这个过程会一直重复,直到歌单中没有任何歌曲。 例如,给定歌单 [5, 3, 2, 1,…...
