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

数据库知识点整理

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 数据库名&#xff1b;---- 创建数据库 use 数据库名&#xff1b; --------------使用数据库 drop database 数据库名&#xff1b;--…...

【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.为什么需要线程的同步&#xff1f; 2.2.条件变量的接口函数 2.生产消费模型 2.1 什么是生产消费模型 2.2.生产者消费者模型优点 2.3.为何要使用生产者消费者模型 3.基于BlockingQueue的生产者消费者模型 3.1为什么要将if判断变成while&#xff…...

如何在word里面给文字加拼音?

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

Detr论文精读

摘要&#xff1a; 作者提到&#xff0c;该方法将物体检测看做直接的集合预测&#xff0c;在传统的目标检测算法中&#xff0c;会先生成候选区域&#xff0c;然后对每个候选区域进行单独的预测&#xff08;包括物体的分类和预测框的回归&#xff09;&#xff0c;集合预测就是直…...

找寻孤独伤感视频素材的热门资源网站推荐

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

大模型~合集13

我自己的原文哦~ https://blog.51cto.com/whaosoft/12302606 #TextRCNN、TextCNN、RNN 小小搬运工周末也要学习一下~~虽然和世界没关 但还是地铁上看书吧, 大老勿怪 今天来说一下 文本分类必备经典模型 模型 SOTA&#xff01;模型资源站收录情况 模型来源论文 RAE ​​ht…...

【Next.js 项目实战系列】04-修改 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】03-查看 Issue 修改 Issue 添加修改 Button​ 本节代码链接 安装 Radix UI 的 Ra…...

【Linux】并行与并发(含时间片)

简单来说 并发&#xff1a;多个进程轮流使用同一个CPU&#xff0c;在逻辑层面上&#xff0c;一段时间内推进完成了多个进程 并行&#xff1a;机器中有多个CPU可以使用&#xff0c;在物理层面上&#xff0c;做到同一时间会有多个进程同时在运行 举个例子&#xff1a;一群人需要…...

【Flutter】页面布局:弹性布局(Flex)

在 Flutter 开发中&#xff0c;布局是非常重要的部分。布局系统允许开发者控制和管理界面上的组件如何排列和展示。弹性布局&#xff08;Flex&#xff09;是其中一个非常强大且常用的布局组件&#xff0c;它能够在水平方向或垂直方向上灵活调整子组件的空间分配比例。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、设置代码提…...

练手小项目推荐

以下是一些练手项目推荐&#xff0c;我可以给你一些适合学生毕业设计的小项目建议&#xff0c;既可以锻炼技能&#xff0c;也能完成学术要求。以下是一些可行的毕业设计项目建议&#xff1a; 校园导航APP 功能&#xff1a;为校园内的新生和访客提供导航&#xff0c;标记教室、…...

一图秒懂色彩空间和色彩模型

色彩空间和色彩模型 想必学过图像处理或者摄影的小伙伴都知道这两个词&#xff0c;看了一些博客&#xff0c;发现很少有人把这两个概念说清楚的&#xff0c;大多数都是混在一起&#xff0c;色彩模型和色彩空间的概念混为一谈&#xff0c;很让人疑惑。   这里我们用一张图来解…...

控制Stable Diffusion生成质量的多种方法

在Stable Diffusion绘图中&#xff0c;控制AI生成图像的质量可以通过多种方法来实现。以下是几种常见的方法&#xff1a; 1. 从底模控制&#xff08;Checkpoint&#xff09; 使用不同的模型检查点&#xff08;Checkpoints&#xff09;可以显著影响生成图像的质量和细节。选择一…...

递归算法笔记

根据b站视频整理的 **视频地址&#xff1a;**https://www.bilibili.com/video/BV1S24y1p7iH/?spm_id_from333.788.videopod.sections&vd_source6335ddc7b30e1f4510569db5f2506f20 最常见的一个递归例子&#xff1a; 斐波那契数列&#xff1a;1&#xff0c;2&#xff0c;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…...

对比迁移项目的改动

文章目录 对比迁移项目的改动场景背景解决方案 对比迁移项目的改动 场景背景 同源定制化项目&#xff0c;同一套代码扩展出来的项目&#xff08;从领导口中得知&#xff09; A项目的有三维地图展示&#xff0c;项目B跑起来却加载不出来&#xff0c;但是本地运行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&#xff1a;3.2.6 示例63.2.7 示例7 4.空间复杂度4.1.1 示例14.1.2 示例2 5.常见复杂度对比6.复杂度算法题6…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...