数据库知识点整理

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之前或之后触发

保证数据完整性、日志记录、数据校验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自由学习记录(11)

Surface Effector 2D Platform Effector 2D 向上跳跃穿过天花板的功能 平台效应器不用变Trigger&#xff0c;因为本来就是要有碰撞的 use one way grouping是让所有相关联的碰撞器都可以单面跳墙 默认不勾选&#xff0c;左右两边没有摩擦力和弹力&#xff0c;要自己先设置sid…

练习题 - Scrapy爬虫框架 Selectors 数据选择器

在学习Scrapy时,数据选择器(Selectors)是一个重要的概念,它让我们能够从抓取的网页中提取出需要的数据。通过使用XPath和CSS选择器,开发者可以准确地定位网页中的元素,提取文本、属性和节点等内容。熟悉这些选择器的用法,不仅能够提高爬虫的效率,还能帮助更好地理解网页…

poisson过程——随机模拟(Python和R实现)

Python实现 exponential()使用&#xff0c;自动poisson过程实现。 import numpy as np import matplotlib.pyplot as plt# Parameters lambda_rate 5 # rate parameter (events per time unit) T 10 # total time# Generate Poisson process times np.random.exponential(…

使用Redis进行在线人数统计时,有哪些性能优化技巧?

在使用Redis进行在线人数统计时&#xff0c;性能优化非常关键&#xff0c;以下是一些有效的性能优化技巧&#xff1a; 选择合适的数据结构&#xff1a; 使用有序集合&#xff08;ZSet&#xff09;可以同时存储在线用户的名单以及用户的上线时间&#xff0c;适用于需要聚合操作的…

数组的初始化,参数传递,和求和

在自己做的这个C语言解释器中&#xff0c;数组的使用非常简便。下面小程序是一个例子。演示了数组的初始化&#xff0c;参数传递&#xff0c; 和求和。 all[] { WA12,OR8,CA54, ID4, MT4, WY3, NV6, UT6, AZ11, CO10, NM5, ND3,SD3,NE4, KS6, OK7,TX40, MN10, WI10,IA6, MO10,…

SpringBoot+MyBatis+MySQL项目基础搭建

一、新建项目 1.1 新建springboot项目 新建项目 选择SpringBoot&#xff0c;填写基本信息&#xff0c;主要是JDK版本和项目构建方式&#xff0c;此处以JDK17和Maven举例。 1.2 引入依赖 选择SpringBoot版本&#xff0c;勾选Lombok&#xff0c;Spring Web&#xff0c;MyBa…

Keepalived:高可用性的守护神

Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…

数据结构与算法:高级数据结构与实际应用

目录 14.1 跳表 14.2 Trie树 14.3 B树与 B树 14.4 其他高级数据结构 总结 数据结构与算法&#xff1a;高级数据结构与实际应用 本章将探讨一些高级数据结构&#xff0c;这些数据结构在提高数据存取效率和解决复杂问题上起到重要作用。这些高级数据结构包括跳表&#xff0…

【2022统考真题】计算时间复杂度

目录 一、题目描述 二、思路分析 三、易错提醒 四、同级和嵌套的关系 一、题目描述 下列程序段的时间复杂度是&#xff08;&#xff09; int sum 0; for (int i 1; i < n; i * 2) for (int j 0; j < i; j) sum; A. O(logn) B. O(n) C. O(nlogn) D…

【工欲善其事】巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号

文章目录 巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号1 问题描述2 解决方案3 具体步骤4 效果测试5 小结与复盘 巧用 PowerShell 自动清除复制 PDF 文本时夹杂的换行符号 1 问题描述 不知各位是否也为复制过来的文本中夹杂的回车换行符抓狂过&#xff1f;就是在复…

基于小波图像去噪的MATLAB实现

基于小波图像去噪的MATLAB实现 一、 论文背景 数字图像处理(Digital Image Processing&#xff0c;DIP)是指用计算机辅助技术对图像信号进行处理的过程。数字图像处理最早出现于 20世纪50年代&#xff0c;随着过去几十年来计算机、网络技术和通信的快速发展&#xff0c;为信号…

作业2-线性回归的Matlab代码实现

一、前言 相关配置&#xff1a;Matlab 2020a&#xff08;版本的影响应该不大&#xff0c;.m代码基本都能运行&#xff0c;个人感觉就是Simulink对版本的要求高一些&#xff09; 二、任务描述 基于近两节课的理论推导&#xff0c;用代码实现线性回归&#xff0c;并对预测结果进…

基于SpringBoot+Vue+uniapp微信小程序的澡堂预订的微信小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

目标检测系统【环境详细配置过程】(CPU版本)

&#xff08;如果你使用的是笔记本电脑&#xff0c;没有比较好的GPU&#xff0c;可以配置CPU运行环境&#xff09; 链接&#xff1a;上百种【基于YOLOv8/v10/v11的目标检测系统】目录&#xff08;pythonpyside6界面系统源码可训练的数据集也完成的训练模型&#xff09; 1.安装…

MySQL中什么情况下类型转换会导致索引失效

文章目录 1. 问题引入2. 准备工作3. 案例分析3.1 正常情况3.2 发生了隐式类型转换的情况 4. MySQL隐式类型转换的规则4.1 案例引入4.2 MySQL 中隐式类型转换的规则4.3 验证 MySQL 隐式类型转换的规则 5. 总结 如果对 MySQL 索引不了解&#xff0c;可以看一下我的另一篇博文&…

如何在 JavaScript 项目中限制Node.js版本

前言 在现代JavaScript开发中&#xff0c;Node.js扮演了一个非常重要的角色。不同版本的Node.js可能会带来不同的特性和行为&#xff0c;因此在项目中限制Node版本是一个很关键的步骤。 本文将通过通俗易懂的方式&#xff0c;教你如何在JavaScript项目中限制Node.js的版本。 …

CTF(七)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;Misc&#xff08;杂项&#xff09;题目中的CatchCat。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 一&#xff0c;分析题目。 下载并解压附件&#xff1a; CatchCat.txt文件内容为&#xff1a; 发现是坐标。 另一个…

Spring Boot在线考试系统:JavaWeb技术的最佳实践

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb技术的在线考试系统设计与实现的开发全过程。通过分析基于Java Web技术的在线考试系统设计与实现管理的不足&#xff0c;创建了一个计算机管理基于Ja…

Linux——应用软件的生命周期

功能开发测试&#xff1a; 功能性测试 对应开发框架的测试用例代码的漏洞扫描 Web服务器版本应用开发语言的依赖关系和版本信息是否会造成类似内存泄露等影响系统性能的问题压力测试应用的部署 获取应用代码以及应用静态文件的代码包将安装包中的文件按照服务器配置的架构&…

表贴式永磁同步电机无感控制-基于滑膜观测器SMO法

导读:在全速域范围内,一般的永磁同步电机无感控制要分为低速区域和高速区域两个部分。原因在于常规的方法是利用模型建立反电动势观测器来求解转子位置信息,但其只适合在中高速区域。本文介绍一种基于滑膜观测器SMO法+PLL的方法。 需要文章中的仿真,关注微信公众号:浅谈电…