数据库知识点整理
DDL
DDL-数据库操作
show databases ------------ 查看所有数据库
select database(); ----------查看当前数据库
create database 数据库名;---- 创建数据库
use 数据库名; --------------使用数据库
drop database 数据库名;-----删除数据库
DDL-表操作
show tables;-----查看当前数据库所有表
desc 表名; -----查询表结构
show create 表名;---查询指定表的建表语句
create table 表名(字段 字段类型 ,字段 字段类型) [ comment 表注释 ]; ---表创建
alter table 表名 add(增加)/modify(修改数据类型)/change(修改字段)/drop(删除字段)/rename to(修改表名)...;
drop table 表名; ------删除表
truncate table 表名;------删除指定表并重新创建该表
DML
insert into 表名(字段1,字段2...)value [(值1,值2...)] 添加数据
update 表名 set 字段1 = 值1,字段2 = 值2 [where 条件 ];----修改数据
delete from 表名 [ where 条件 ];---------------删除数据
delete from 表名;--------删除整张表的数据
DQL
select 字段列表--------->字段名[ AS ]别名
from 表名列表
where 条件列表-----------> ( > >= < <= <> like between...and... in and or )
where 分组之前过滤,不满足where条件不分组
group by 分组字段列表
Having 分组后条件列表 ------->分组之后过滤
order by 排序字段列表------------>升序ASC 降序DESC
limit 分页参数------------------>起始索引(从0开始,每页展示记录数)
DQL基础查询
select 字段1,字段2,....from 表名;-------------> 查询多个字段
select * from 表名; -------------------------------------->查询所有字段
select 字段 as(as可省)‘ 别名 ’ from 表名;--------->设置别名
select distinct 字段列表 FROM 表名;---------------->去除重复记录:
like " %x" 最后一位为x
like " _ _ " 查询两位
聚合函数
常见聚合函数:
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
语法:
select 聚合函数(字段列表) from 表名;
分组查询
语法:
select 字段列表 from 表名 [ 条件 ] group by 分组字段名 [ having 分组后的过滤条件 ];
where 和 having 的区别:
执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项
执行顺序:where > 聚合函数 > having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
排序查询
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
ASC: 升序(默认)
DESC: 降序
注意:如果是多字段排序,第一个字段相同时才会根据第二个字段进行排序
分页查询:
select 字段列表 from 表名 limit 起始索引, 查询记录数;
注意事项
- 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
- 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10
DQL执行顺序
from ->where -> group by -> select-> order by ->limit
DCL
DCL----管理数据库用户、控制数据库的访问权限
1.用户管理
use mysql;
select * from user;------------->查询用户
create user ‘ 用户名 ’ @ ‘ 主机名 ’ identified by ' 密码 ';------>创建用户
alter user ‘ 用户名 ’ @ ‘ 主机名 ’ identified with mysql_native password by ' 新密码 ';---修改用户密码
drop user ‘ 用户名 ’ @ ‘ 主机名 ’;-------删除用户
2.权限控制
show grants for ‘ 用户名 ’ @ ‘ 主机名 ’;----------->查询权限
grant 权限列表 on 数据库名.表名 to ' 用户名 ' @ ‘ 主机名 ’;------>授予权限
revoke 权限列表 on 数据库名.表名 from ' 用户名 ' @ ‘ 主机名 ’;------>撤销权限
函数
1.字符串函数
concat(字符串拼接)、lower(全转小写)、upper(全转大写)、lpad(左填充)、rpad(右填充)、trim(去头和尾空格)、substring(字符串截取)
函数 | 功能 |
---|---|
concat(s1, s2, …, sn) | 字符串拼接,将s1, s2, …, sn拼接成一个字符串 |
lower(str) | 将字符串全部转为小写 |
upper(str) | 将字符串全部转为大写 |
lpad(str, n, pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
rpad(str, n, pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
trim(str) | 去掉字符串头部和尾部的空格 |
substring(str, start, len) | 返回从字符串str从start位置起的len个长度的字符串 |
2.数值函数
ceil(向上取整)、floor(向下取整)、mod(x,y)返回x/y的模、rand()返回0-1内的随机数 、round(x,y)求参数x四舍五入的值,保留y位小数
函数 | 功能 |
---|---|
ceil(x) | 向上取整 |
floor(x) | 向下取整 |
mod(x, y) | 返回x/y的模 |
rand() | 返回0~1内的随机数 |
round(x, y) | 求参数x的四舍五入值,保留y位小数 |
3.日期函数
函数 | 功能 |
---|---|
curdate () | 返回当前日期 |
curtime () | 返回当前时间 |
now () | 返回当前日期和时间 |
year (date) | 获取指定date的年份 |
month (date) | 获取指定date的月份 |
day (date) | 获取指定date的日期 |
date_add (date, interval expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
datediff (date1, date2) | 返回起始时间date1和结束时间date2之间的天数 |
4.流程函数
函数 | 功能 |
---|---|
if (value, t, f) | 如果value为true,则返回t,否则返回f |
ifnull (value1, value2) | 如果value1不为空,返回value1,否则返回value2 |
case when[ val1 ] then [ res1 ] … else [ default ] end | 如果val1为true,返回res1,… 否则返回default默认值 |
case [ expr ] when [ val1 ] then [ res1 ] … else [ default ] end | 如果expr的值等于val1,返回res1,… 否则返回default默认值 |
约束
1.非空约束
not null
2.唯一约束
unique
3.主键约束
primary key 主键约束非空且唯一 (自增:auto_increment)
4.默认约束
default
5.检查约束
check 要求存储的值满足条件
6.外键约束
foreign key 保证数据的一致性和完整性
多表查询
1.多表关系
一对一:用于表结构拆分,在其中任何一方设置外键,关联两张表的主键
一对多:在多的一方设置外键,关联一的一方的主键
多对多:建立中间表中间表包含两个外键,关联两张表的主键
索引
1.索引:
索引是高效获取数据的数据结构
2.索引结构:
B-Tree(B树):平衡的多路查找树
B+tree:Btree和双向链表
Hash(无法利用索引完成排序)只能用于等值比较,不支持范围查询
R-tree
3.索引分类:
单值索引:一个索引只包含单个列,一个表中可以有多个单值索引
唯一索引:索引列的值必须唯一,可为空
复合索引:一个索引包含多个列
4.索引语法:
create [ unique] index xxx on xxx(xxx); 创建索引
show index from xxxx; 查看索引
drop index xxx on xxxx; 删除指定索引
5.SQL性能分析:
执行频次、慢查询日志、profile、explain
6.索引使用:
联合索引:最左前缀法则(最左边的列必须存在)
索引失效:
1.索引列函数运算
2.字符串不加引号
3.like 模糊匹配
4.or连接条件,一侧有索引一侧无索引
5.mysql评估,全表扫描比索引快
6.没有用最左前缀法则则失效
SQL提示
覆盖索引:查询返回的列在索引结构都包含了 不需要再回表查询
前缀索引:场景(字符串长度长或者大文本字段)
单列索引/联合索引:推荐联合索引,联合索引性能较高,运用得当可避免回表查询
7.索引设计原则:
1.需要针对哪些表设计索引 数据量大且查询频次较高
2.需要针对这些表的哪些字段建立索引 经常在where、order by,group by 之后出现的字段建立对应索引
3.如果此列唯一 建唯一索引 区分度高
如果能建立联合索引尽量用联合索引
字符串长度较长或者大文本字段用前缀索引
SQL优化
1.插入数据
insert :批量插入、手动控制事务、主键顺序插入
2.主键优化
数据组织方式:基于索引
主键长度尽量短、顺序插入 ---主键自增
3.order by 优化
using index:直接通过索引返回数据,性能高
using filesort:需要将返回结果在排序缓冲区排序
4.group by 优化
索引,多字段分组满足最左前缀法则
5.limit优化
覆盖索引+子查询
6.count优化
性能:count(字段)<count(主键id)<count(1)约=count(*)
7.update优化
尽量根据主键/索引字段进行数据更新
视图
视图:
虚拟的表,不保存查询结果,只保存查询SQL逻辑
作用:简单、安全、数据独立
创建:create [or replace] view 视图名称(列名列表)AS select 语句 [ with [ cascaded | local ] check option ]
查询:
查看创建视图语句:show create view 视图名称
查看视图数据:select * from 视图名称...;
修改
方式一:create [ or replace ] view 视图名称[( 列名列表)] AS select语句[ with [ cascaded | local ] check option ]
方式二:alter view 视图名称[( 列名列表)] AS select语句 [ with [ cascaded | local ] check option ]
删除
drop view [ if exists ] 视图名称 [ 视图名称 ]...
代码示例:
触发器
可以在表数据进行insert、update、delete之前或之后触发
保证数据完整性、日志记录、数据校验
相关文章:

数据库知识点整理
DDL DDL-数据库操作 show databases ------------ 查看所有数据库 select database(); ----------查看当前数据库 create database 数据库名;---- 创建数据库 use 数据库名; --------------使用数据库 drop database 数据库名;--…...

【JVM】内存模型
文章目录 内存模型的基本概念案例 程序计数器栈Java虚拟机栈局部变量表栈帧中局部变量表的实际状态栈帧中存放的数据有哪些 操作数栈帧数据 本地方法栈 堆堆空间是如何进行管理的? 方法区静态变量存储 直接内存直接内存的作用 内存模型的基本概念 在前面的学习中,我们知道了字…...
代码随想录:二叉树的四种遍历
144. 二叉树的前序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullpt…...

【Linux】从多线程同步到生产者消费者模型:多线程编程实践
目录 1.线程的同步 1.1.为什么需要线程的同步? 2.2.条件变量的接口函数 2.生产消费模型 2.1 什么是生产消费模型 2.2.生产者消费者模型优点 2.3.为何要使用生产者消费者模型 3.基于BlockingQueue的生产者消费者模型 3.1为什么要将if判断变成whileÿ…...

如何在word里面给文字加拼音?
如何在word里面给文字加拼音?在现代社会,阅读已经成为了我们日常生活中不可或缺的一部分。尤其是在学习汉语的过程中,拼音的帮助显得尤为重要。为了帮助大家更好地理解和掌握汉字的发音,许多教师和学生都希望能够在Word文档中为文…...

Detr论文精读
摘要: 作者提到,该方法将物体检测看做直接的集合预测,在传统的目标检测算法中,会先生成候选区域,然后对每个候选区域进行单独的预测(包括物体的分类和预测框的回归),集合预测就是直…...

找寻孤独伤感视频素材的热门资源网站推荐
在抖音上,伤感视频总是能够引起观众的共鸣,很多朋友都在寻找可以下载伤感视频素材的地方。作为一名资深的视频剪辑师,今天我来分享几个提供高清无水印伤感素材的网站,如果你也在苦苦寻找这些素材,不妨看看以下推荐&…...

大模型~合集13
我自己的原文哦~ https://blog.51cto.com/whaosoft/12302606 #TextRCNN、TextCNN、RNN 小小搬运工周末也要学习一下~~虽然和世界没关 但还是地铁上看书吧, 大老勿怪 今天来说一下 文本分类必备经典模型 模型 SOTA!模型资源站收录情况 模型来源论文 RAE ht…...
【Next.js 项目实战系列】04-修改 Issue
原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js 项目实战系列】03-查看 Issue 修改 Issue 添加修改 Button 本节代码链接 安装 Radix UI 的 Ra…...

【Linux】并行与并发(含时间片)
简单来说 并发:多个进程轮流使用同一个CPU,在逻辑层面上,一段时间内推进完成了多个进程 并行:机器中有多个CPU可以使用,在物理层面上,做到同一时间会有多个进程同时在运行 举个例子:一群人需要…...
【Flutter】页面布局:弹性布局(Flex)
在 Flutter 开发中,布局是非常重要的部分。布局系统允许开发者控制和管理界面上的组件如何排列和展示。弹性布局(Flex)是其中一个非常强大且常用的布局组件,它能够在水平方向或垂直方向上灵活调整子组件的空间分配比例。Row 和 Co…...
深入解析 Go 语言接口:多接口实现与接口组合的实际应用
文章目录 一、引言二、一个类型实现多个接口1. 定义多个接口2. 类型实现多个接口3. 使用多个接口 三、接口的组合1. 接口嵌套2. 实现复合接口 四、实际开发中的应用场景1. 多态与模块化设计2. 松耦合系统设计3. 测试与依赖注入4. 事件驱动架构中的应用 五、小结 一、引言 在 G…...

Eclipse——Java开发详解
Eclipse 1、配置JDK2、设置编译版本2.1、全局编译版本2.2、项目编译版本2.3、Web项目编译版本 3、设置工作目录4、创建Java项目5、配置Tomcat6、创建Web项目7、配置Maven8、创建Maven项目8.1、普通Maven项目8.2、Maven Web项目 9、创建SpringBoot项目10、设置字体11、设置代码提…...
练手小项目推荐
以下是一些练手项目推荐,我可以给你一些适合学生毕业设计的小项目建议,既可以锻炼技能,也能完成学术要求。以下是一些可行的毕业设计项目建议: 校园导航APP 功能:为校园内的新生和访客提供导航,标记教室、…...

一图秒懂色彩空间和色彩模型
色彩空间和色彩模型 想必学过图像处理或者摄影的小伙伴都知道这两个词,看了一些博客,发现很少有人把这两个概念说清楚的,大多数都是混在一起,色彩模型和色彩空间的概念混为一谈,很让人疑惑。 这里我们用一张图来解…...
控制Stable Diffusion生成质量的多种方法
在Stable Diffusion绘图中,控制AI生成图像的质量可以通过多种方法来实现。以下是几种常见的方法: 1. 从底模控制(Checkpoint) 使用不同的模型检查点(Checkpoints)可以显著影响生成图像的质量和细节。选择一…...

递归算法笔记
根据b站视频整理的 **视频地址:**https://www.bilibili.com/video/BV1S24y1p7iH/?spm_id_from333.788.videopod.sections&vd_source6335ddc7b30e1f4510569db5f2506f20 最常见的一个递归例子: 斐波那契数列:1,2,3…...
Android——发送彩信
跳转到相册选择图片 btn_jump.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// 跳转到系统相册选择图片并返回Intent intent new Intent(Intent.ACTION_GET_CONTENT);// 设置图片类型为图片类型intent.setType("image/*&quo…...

对比迁移项目的改动
文章目录 对比迁移项目的改动场景背景解决方案 对比迁移项目的改动 场景背景 同源定制化项目,同一套代码扩展出来的项目(从领导口中得知) A项目的有三维地图展示,项目B跑起来却加载不出来,但是本地运行A项目代码&…...

数据结构-复杂度
复杂度 1.数据结构1.1算法 2.算法效率2.1复杂度的概念 3.时间复杂度3.1大O渐进表示法3.2时间复杂度计算示例3.2.1 示例13.2.2 示例23.2.3 示例33.2.4 示例43.2.5 示例5:3.2.6 示例63.2.7 示例7 4.空间复杂度4.1.1 示例14.1.2 示例2 5.常见复杂度对比6.复杂度算法题6…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...