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

【数据库】Mysql精简回顾复习

一、概念

  • 数据库(DB):数据存储的仓库
  • 数据库管理系统(DBMS):操纵和管理数据库的大型软件
  • SQL:操作关系型数据库的编程语言,是一套标准
  • 关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库

二、DDL数据库操作

1.查询

查询所有数据库            show databases();

查询当前数据库            select database();

2.创建

create database if not exists+数据库名+default charset(字符集) + collate(排序规则);

3.删除

 drop database if exists + 数据库名;

4.使用

use + 数据库名;

三、DDL表操作--查询

1.查询当前数据库所有表

show tables;

2.查询表结构

desc + 表名;

3.查询指定表的建表语句

show create table + 表名;

四、DDL表操作--创建

create table + 表名(

字段1 + 字段1类型 + comment + 字段1注释;

...

字段n + 字段n类型 + comment + 字段n注释;

)comment 表注释;

五、DDL表操作--修改

1.添加字段

alter+table+表名+add+字段名+类型(长度)+comment+注释; 

2.修改数据类型

alter+table+表名+modify+字段名+新数据类型(长度);

3.修改字段名和字段类型

alter+table+表名+change+旧字段名+新字段名+类型(长度)+comment+注释;

4.删除字段

alter+table+表名+drop+字段名;

5.修改表名

alter+table+表名+rename to + 新表名;

6.删除表

drop+table(if  exists)+表名;

7.删除指定表,并重新创建该表

truncate + table + 表名;

六、DML--添加数据

1.给指定字段添加数据

insert into+表名(字段名1,字段名2)+ values(值1,值2);

2.给全部字段添加数据

insert into+表名+ values(值1,值2);

注意:插入时字符串和日期型数据应该包含在引号

七、DML--修改数据

update + 表名 + set + 字段名1 = 值1,字段名2 = 值2,... ,where + 条件;

八、DML--删除数据

delete from + 表名 + where + 条件;

九、DQL--基本查询

1.查询多个字段

select 字段1,字段2,字段3 ... from 表名;

select * from + 表名;

2.设置别名

select 字段1 as 别名1 from 表名;

3.去重

select distinct 字段列表 + from + 表名 ;

十、DQL--条件查询

select + 字段列表 + from + 表名 + where + 条件列表(like + 占位符);

十一、DQL--聚集函数

注意:聚集函数只能用于select子句和group by中的having子句

  • count
  • max
  • min
  • avg
  • sum

select + 聚集函数(字段列表)+ from + 表名;

十二、DQL--分组查询

select + 字段列表 + from + 表名 + where条件 + group by分组字段名 + having 分组后过滤条件;

//查询平均成绩大于等于90分的学生学号和平均成绩Select Sno,AVG(Grade)
from SC group by Sno
having AVG(Grade) >= 90;

十三、DQL--排序查询

  • asc  升序(默认)
  • desc 降序

select + 字段列表 + from + 表名 + order by + 字段1  排序方式1,字段2  排序方式2;

十四、DQL--分页查询

select + 字段列表 + from + 表名 + limit + 起始索引,查询记录数;

起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数

十五、DCL--管理用户

1.查询用户

use mysql;

select * from user;

2.创建用户

create user '用户名'  @  ‘主机名’  identified by '密码';

3.修改用户密码

alter user '用户名'  @  ‘主机名’  identified with mysql_native_password by '新密码';

4.删除用户

drop user '用户名'  @  ‘主机名’

十六、DCL--权限控制

1.查询权限

show grants for '用户名' @ ‘主机名’ ;

2.授予权限

grant 权限列表 on 数据库名.表名 to '用户名' @ ‘主机名’ ;

3.撤销权限

revoke 权限列表 on 数据库名.表名 from '用户名' @ ‘主机名’;

十七、外键约束

1.添加外键

create table 表名(

字段名 数据类型,

...

[constraint]  [外键名称] foreign key (外键字段名) references 主表(主表列名)

);

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);

2.删除外键

alter table 表名 drop foreign key 外键名称;

3.删除/更新行为

no action / restrict

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新

cascade

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则强制删除/更新外键在子表中的记录

set null

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null

set default

父表有变更时,子表将外键列设置成一个默认的值

十八、多表查询--笛卡尔积

select * from emp,dept  where emp.dept_id = dept_id;

十九、连接查询--内连接

内连接查询的是两张表交集的部分

1.隐式内连接

select 字段列表 from 表1,表2  where 条件 ... ;

例:select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;

2.显式内连接

select 字段列表 from 表1 [inner] join 表2 on 连接条件;

例:select e.name,d.name from emp e inner join dept d on e.dept_id = d.id;

二十、连接查询--外连接

1.左外连接

select 字段列表 from 表1 left [outer] join 表2 on 条件... ;

相当于表A的所有数据以及包含表A和表B交集部分的数据

2.右外连接

select 字段列表 from 表1 right [outer] join 表2 on 条件 ... ;

相当于表B的所有数据以及包含表A和表B交集部分的数据

二十一、连接查询--自连接

可以是内连接,也可以是外连接

select 字段列表 from 表A 别名A join 表A 别名B on 条件...;

二十二、联合查询--union,union all

就是将多次查询的结果合并起来,形成一个新的查询结果集

对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致

select 字段列表 from 表A ...

union [all]

select 字段列表 from 表B ... ;

union all会将全部的数据直接合并在一起,union会对合并之后的数据去重

二十三、子查询

SQL语句中嵌套的select语句,称为嵌套查询,又称子查询

  1. 标量子查询:返回的结果是单个值
  2. 列子查询:返回的结果是一列(可以是多行)
  3. 行子查询:返回的结果是一行(可以是多列)
  4. 表子查询:返回的结果是多行多列

二十四、带有exists谓词的子查询

其不返回任何数据,只产生逻辑真值“true”,或逻辑假值“false

//例:查询所有选修了1号课程的学生姓名select Sname
from Student
where exists(
select *
from SC
where Sno = Student.Sno  AND  Cno = '1'
);
//例:查询选修了全部课程的学生姓名select Sname 
from Student
where not exists(
select *
from Course
where not exists
(select *
from SC
where Sno = Student.Sno  AND  Cno = Course.Cno
)
);

二十五、事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体,一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

1.事务操作(其一)

1.查看/设置事务的提交方式

select @@autocommit;

set @@autocommit = 0;

2.提交事务

commit;

3.回滚事务

rollback;

2.事务操作(其二)

1.开启事务

start transaction    /   begin

2.提交事务

commit;

3.回滚事务

rollback;

3.事务四大特性

  • 原子性:事务是不可分割最小单元
  • 一致性:事务完成时,必须使所有的数据都保持一致状态
  • 隔离性:保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性:事务一旦提交或回滚,它对数据的改变是永久的

二十六、索引

是帮助数据库高效获取数据数据结构

1.结构

默认为B+ Tree结构组织的索引

B+ Tree(多路平衡搜索树

  1. 每一个节点,都可以存储多个key(有n个key,就有n个指针)
  2. 所有的数据都存储在叶子节点,非叶子节点仅用于索引数据
  3. 叶子节点形成了一个双向链表,便于数据的排序及区间范围查询

2.语法

(1)创建索引

create [unique] index 索引名 on 表名 (字段名,...);

(2)查看索引

show index from 表名;

(3)删除索引

drop index 索引名 on 表名;

注意:

在建表时,主键字段会自动创建主键索引

添加唯一约束时,数据库实际上会添加唯一索引


相关文章:

【数据库】Mysql精简回顾复习

一、概念 数据库(DB):数据存储的仓库数据库管理系统(DBMS):操纵和管理数据库的大型软件SQL:操作关系型数据库的编程语言,是一套标准关系型数据库(RDBMS)&…...

深入理解 HTTP 的 GET、POST 方法与 Request 和 Response

HTTP 协议是构建 Web 应用的基石,GET 和 POST 是其中最常用的请求方法。无论是前端开发、后端开发,还是接口测试,对它们的深入理解都显得尤为重要。在本文中,我们将介绍 GET 和 POST 方法,以及 Request 和 Response 的…...

MySQL 中联合索引相比单索引性能提升在哪?

首先我们要清楚所以也是要占用磁盘空间的,随着表中数据量越来越多,索引的空间也是随之提升的,因而单表不建议定义过多的索引,所以使用联合索引可以在一定程度上可以减少索引的空间占用其次,使用联合索引的情况下&#…...

第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

时间轴: Java反射相关类图解: 反射: 1、什么是 Java 反射 参考: https://xz.aliyun.com/t/9117 Java 提供了一套反射 API ,该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…...

C++笔记之数据单位与C语言变量类型和范围

C++笔记之数据单位与C语言变量类型和范围 code review! 文章目录 C++笔记之数据单位与C语言变量类型和范围一、数据单位1. 数据单位表:按单位的递增顺序排列2. 关于换算关系的说明3. 一般用法及注意事项4. 扩展内容5. 理解和使用建议二、C 语言变量类型和范围基本数据类型标准…...

算法-拆分数位后四位数字的最小和

力扣题目2160. 拆分数位后四位数字的最小和 - 力扣(LeetCode) 给你一个四位 正 整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。 …...

Python 管理 GitHub Secrets 和 Workflows

在现代软件开发中,自动化配置管理变得越来越重要。本文将介绍如何使用 Python 脚本来管理 GitHub 仓库的 Secrets 和 Workflows,这对于需要频繁更新配置或管理多个仓库的团队来说尤为有用。我们将分三个部分进行讨论:设置 GitHub 权限、创建 GitHub Secret 和创建 GitHub Wo…...

指令的修饰符

指令的修饰符 参考文献: Vue的快速上手 Vue指令上 Vue指令下 Vue指令的综合案例 文章目录 指令的修饰符指令修饰符 结语 博客主页: He guolin-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力&…...

C# 正则表达式完全指南

C# 正则表达式完全指南 C#通过 System.Text.RegularExpressions 命名空间提供强大的正则表达式支持。本指南将详细介绍C#中正则表达式的使用方法、性能优化和最佳实践。 1. 基础知识 1.1 命名空间导入 using System.Text.RegularExpressions;1.2 基本使用 public class Re…...

【笔记整理】记录参加骁龙AIPC开发者技术沙龙的笔记

AIoT 首先了解了一个概念叫AIoT,我的理解就是AI IoT 5G,通过AI的发展使得边缘计算、数据整合和处理变得快捷方便,不仅限于传统的云端数据处理,在边缘的IoT设备上也可以进行智能化打造,通过5G的通信能力扩展可以实现…...

论文解析 | 基于语言模型的自主代理调查

论文 《A Survey on Large Language Model-based Autonomous Agents》 对基于大型语言模型(LLM)的自主智能体(Autonomous Agents)进行了全面调查。随着大型语言模型(如 GPT 系列、BERT、T5 等)的快速发展&a…...

面试加分项:Android Framework AMS 全面概述和知识要点

第一章:AMS 的架构与组件 1.1 AMS 整体架构 在 Android 系统的庞大体系中,AMS(Activity Manager Service)就如同一个中枢神经系统,是整个系统的核心服务之一,对应用的性能和用户体验有着直接且关键的影响 。它的整体架构由 Client 端和 Service 端两大部分组成,这两端相…...

EasyCVR视频汇聚平台如何配置webrtc播放地址?

EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持多协议接入,能将接入到视频流转码为多格式进行分发,包括RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、W…...

用户界面软件04

后果 使用这种架构很容易对两个层面的非功能性需求进行优化,但是你仍然需要小心不要将功能 需求重复实现。 现在,两个层面可能有完全不同的设计。比如,用户界面层可能使用配件模型(Widget Model), 以大量的…...

C#,数值计算,矩阵相乘的斯特拉森(Strassen’s Matrix Multiplication)分治算法与源代码

Volker Strassen 1 矩阵乘法 矩阵乘法是机器学习中最基本的运算之一,对其进行优化是多种优化的关键。通常,将两个大小为N X N的矩阵相乘需要N^3次运算。从那以后,我们在更好、更聪明的矩阵乘法算法方面取得了长足的进步。沃尔克斯特拉森于1…...

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 创建文件 格式: touch 文件名 删除文件 复制文件 移动文件 查看文…...

SQL Server查询计划操作符——查询计划相关操作符(3)

7.3. 查询计划相关操作符 19)Collapse:该操作符对更改处理进行优化。当执行一个更改时,其能被劈成(用Split操作符)一个删除和一个插入。其参数列包含一个确定一系列键值字段的GROUP BY:()子句。如果查询处理器遇到删除和插入相同键值的毗邻行,其将用一个更高效的更改操作…...

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…...

Android 来电白名单 只允许联系人呼入电话

客户需求只允许通讯录中联系人可以呼入电话。参考自带的黑名单实现 CallsManager.java类中的onSuccessfulIncomingCall方法有一些过滤器,可以仿照黑名单的方式添加自己的过滤器。 packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java …...

【计算机网络】lab3 802.11 (无线网络帧)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...

单片机(MCU)-简单认识

简介: 内部集成了CPU,RAM,ROM,定时器,中断系统,通讯接口等一系列电脑的常用硬件功能。 单片机的任务是信息采集(依靠传感器),处理(依靠CPU)&…...

全面教程:Nacos 2.3.2 启用鉴权与 MySQL 数据存储配置

全面教程:Nacos 2.3.2 启用鉴权与 MySQL 数据存储配置 1. 配置 Nacos 开启鉴权功能 1.1 修改 application.properties 配置文件 在 Nacos 2.3.2 中,开启鉴权功能需要修改 conf/application.properties 文件。按照以下方式配置: # 开启鉴权…...

软件23种设计模式完整版[附Java版示例代码]

一、什么是设计模式 设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。 设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们…...

国标GB28181-2022视频平台EasyGBS小知识:局域网ip地址不够用怎么解决?

在局域网中,IP地址不足的问题通常不会在小型网络中出现,但在拥有超过255台设备的大型局域网中,就需要考虑如何解决IP地址不够用的问题了。 在企业局域网中,经常会出现私有IP地址如192.168.1.x到192.168.1.255不够用的情况。由于0…...

PHP 循环控制结构深度剖析:从基础到实战应用

PHP 循环控制结构深度剖析:从基础到实战应用 PHP提供了多种控制结构,其中循环控制结构是最常见的结构之一。它们使得我们能够高效地重复执行一段代码,直到满足某个条件为止。本文将从PHP循环的基础知识出发,逐步分析其在实际项目…...

vue的属性绑定

重建一个新的项目 App.vue main.js HelloWorld.vue 属性绑定 双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute&#xff0c;应该使用 v-bind 指令 <template><div v-bind:id"dynamicId" v-bind:class"dynamicClass">…...

FFmpeg音视频流媒体,视频编解码性能优化

你是不是也有过这样一个疑问&#xff1a;视频如何从一个简单的文件变成你手机上快速播放的短片&#xff0c;或者是那种占满大屏幕的超高清大片&#xff1f;它背后的法宝&#xff0c;离不开一个神奇的工具——FFmpeg&#xff01;说它强大&#xff0c;完全不为过&#xff0c;它在…...

16_Redis Lua脚本

Redis Lua脚本是Redis提供的一种强大的扩展机制。 1.Redis Lua脚本介绍 1.1 基本概念 Redis Lua脚本允许开发者将一段Lua语言编写的代码发送给Redis服务器执行。这项功能自Redis 2.6版本引入以来,为用户提供了强大的灵活性和扩展能力,使得可以在Redis内部直接处理复杂的业…...

Redis为 List/Set/Hash 的元素设置单独的过期时间

一.业务简介 我们知道&#xff0c;Redis 里面暂时没有接口给 List、Set 或者 Hash 的 field 单独设置过期时间&#xff0c;只能给整个列表、集合或者 Hash 设置过期时间。 这样&#xff0c;当 List/Set/Hash 过期时&#xff0c;里面的所有 field 元素就全部过期了。但这样并不…...

鸿蒙中调整应用内文字大小

1、ui Stack() {Row() {ForEach([1, 2, 3, 4], (item: number) > {Text().width(3).height(20).backgroundColor(Color.Black).margin(item 2 ? { left: 8 } : item 3 ? { left: 7 } : { left: 0 })})}.width(97%).justifyContent(FlexAlign.SpaceBetween).padding({ ri…...

管理培训课程/搜索关键词排名优化技术

setTimeout(methodName, interval); //间隔时间单位为毫秒&#xff0c;表示interval毫秒后执行方法methodName setInterval(methodName, interval); //间隔时间单位为毫秒&#xff0c;表示每隔interval毫秒执行后都会执行一次方法methodName 执行的方法可以带参数&#xff0c;但…...

杭州网站建设培训班/百度免费下载安装百度

JAVA方法和本地方法 原地址http://blog.sina.com.cn/s/blog_5b9b4abe01016zw0.html JAVA中有两种方法&#xff1a;JAVA方法和本地方法 JAVA方法是由JAVA编写的&#xff0c;编译成字节码&#xff0c;存储在class文件中本地方法是由其它语言编写的&#xff0c;编译成和处理器相关…...

哪个网站做木材批发的/电商seo是什么意思啊

0 说明 本文主要说明在裸机和linux启动中链接地址和运行地址的关系&#xff0c;但是这俩哥们的关系和位置无关码以及MMU有所牵扯&#xff0c;所以放到一起进行说明。 以下针对imx6ull处理器平台 1、imx6u的Memory Maps 首先确定一下物理内存的开始地址&#xff0c;不同处理器D…...

用树莓派做网站服务器/网络推广app是干什么的

常见的CEO(Chief executive officer)首席执行官类似总经理、总裁&#xff0c;是企业的法人代表。 COO(Chief operating officer)首席运营官 类似常务总经理CFO(Chief financial officer)首席财务官 类似财务总经理 CTO(Chief technology officer)首席技术官 类似总工程师 CIO(C…...

哈尔滨快速建站点击查看/成都网络营销公司排名

本文主要和大家分享react轮播图组件react-slider-light详解&#xff0c;希望能帮助到大家。react-slider-lighta lightweight Slider component built with react.一个轻量级的 react 轮播组件Table of ContentsFeatures特性Demos演示Getting Started快速开始InstallUseDevelop…...

asp.net做网站的流程/移动网站推广如何优化

先来说说序列化是什么吧&#xff0c;序列化是将对象的状态信息转换成可以存储或传输的形式的过程。在序列化期间&#xff0c;将对象的当前状态写入临时或永久存储区。稍后&#xff0c;您可以通过从存储区读取或恢复对象的状态重新创建对象。简而言之&#xff0c;序列化是一种将…...