【数据库】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 表名;

注意:

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

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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

笔记本电脑 选购 回收 特权模式使用 指南

笔记本电脑 factor 无线网卡:有些笔记本无法检测到特定频段的信息,会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件,>>表示添加到后续文件的末尾 一种更简…

【python A* pygame 格式化 自定义起点、终点、障碍】

pip install pygame 空格键:运行 A* 算法。CtrlC 键:清空路径。CtrlS 键:保存当前地图到 map.json 文件。CtrlL 键:从 map.json 文件加载地图。 import pygame import json from queue import PriorityQueue from tkinter import…

Mac——Docker desktop安装与使用教程

摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络,然后详细阐述了如何在Mac上安装Docker,包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像,旨在帮助用户在Mac上高效使…

OpenCV的对比度受限的自适应直方图均衡化算法

OpenCV的对比度受限的自适应直方图均衡化(CLAHE)算法是一种图像增强技术,旨在改善图像的局部对比度,同时避免噪声的过度放大。以下是CLAHE算法的原理、步骤以及示例代码。 1 原理 CLAHE是自适应直方图均衡化(AHE&…

解决Qt打印中文字符出现乱码

在 Windows 平台上,默认的控制台编码可能不是 UTF-8,这可能会导致中文字符的显示问题。 下面是在 Qt 应用程序中设置中文字体,并确保控制台输出为 UTF-8 编码: 1. Qt 应用程序代码 在 Qt 中,我们可以使用 QApplic…

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…

Soildworks的学习【2025/1/12】

右键空白处,点击选项卡,即可看到所有已调用的选项卡: 点击机械小齿轮选项卡,选择文档属性,选择GB国标: 之后点击单位,选择MMGS毫米单位: 窗口右下角有MMGS,这里也可以选择…

BUUCTF:web刷题记录(1)

目录 [极客大挑战 2019]EasySQL1 [极客大挑战 2019]Havefun1 [极客大挑战 2019]EasySQL1 根据题目以及页面内容,这是一个sql注入的题目。 直接就套用万能密码试试。 admin or 1 # 轻松拿到flag 换种方式也可以轻松拿到flag 我们再看一下网页源码 这段 HTML 代码…

Flask----前后端不分离-登录

文章目录 扩展模块flask-wtf 的简单使用定义用户数据模型注册与登录会话保持cookie方式session方式基于session的登录 flask-login实现登录、登出代码目录 扩展模块 flask-sqlalchmy,连接数据库flask-login,处理用户的登录,认证flask-sessio…

springboot + vue+elementUI图片上传流程

1.实现背景 前端上传一张图片&#xff0c;存到后端数据库&#xff0c;并将图片回显到页面上。上传组件使用现成的elementUI的el-upload。、 2.前端页面 <el-uploadclass"upload-demo"action"http://xxxx.xxx.xxx:9090/file/upload" :show-file-list&q…

深度学习张量的秩、轴和形状

深度学习张量的秩、轴和形状 秩、轴和形状是在深度学习中我们最关心的张量属性。 秩轴形状 秩、轴和形状是在深度学习中开始使用张量时我们最关心的三个属性。这些概念相互建立&#xff0c;从秩开始&#xff0c;然后是轴&#xff0c;最后构建到形状&#xff0c;所以请注意这…

Observability:将 OpenTelemetry 添加到你的 Flask 应用程序

作者&#xff1a;来自 Elastic jessgarson 待办事项列表可以帮助管理与假期计划相关的所有购物和任务。使用 Flask&#xff0c;你可以轻松创建待办事项列表应用程序&#xff0c;并使用 Elastic 作为遥测后端&#xff0c;通过 OpenTelemetry 对其进行监控。 Flask 是一个轻量级…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)

文章目录 一、学生管理模块功能实现1、添加学生功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、学生管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码…

使用Cilium/eBPF实现大规模云原生网络和安全

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

62.在 Vue 3 中使用 OpenLayers 设置不同的坐标点,用不同的颜色区分

前言 在现代 Web 开发中&#xff0c;地图功能已经成为许多应用的重要组成部分。OpenLayers 是一个强大的开源地图库&#xff0c;支持多种地图源和地图操作。结合 Vue 3 的响应式特性&#xff0c;我们可以轻松实现地图的交互功能。本文将详细介绍如何在 Vue 3 中使用 OpenLayer…

Spring 项目 基于 Tomcat容器进行部署

文章目录 一、前置知识二、项目部署1. 将写好的 Spring 项目先打包成 war 包2. 查看项目工件&#xff08;Artifact&#xff09;是否存在3. 配置 Tomcat3.1 添加一个本地 Tomcat 容器3.2 将项目部署到 Tomcat 4. 运行项目 尽管市场上许多新项目都已经转向 Spring Boot&#xff0…

【学习笔记】数据结构(十一)

外部排序 文章目录 外部排序11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现 - 增加k11.4 置换-选择排序 - 减少m11.5 最佳归并树 外部排序 指的是大文件的排序&#xff0c;即待排序的记录存储在外存储器 上&#xff0c;在排序过程中需进行多次的内、外存之间的…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot&#xff08;1&#xff09;基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot&#xff08;2&#xff09;解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot&#xff08;3&#xff09;教你手工搭建Spring Boot项目纯手工玩法…

【Linux笔记】Day1

基于韩顺平老师课程记录&#xff1a; https://www.bilibili.com/video/BV1Sv411r7vd 安装CentOS 给CentOS手动分区 分为三个区&#xff1a; boot分区&#xff08;给1G就行&#xff09; 交换分区&#xff08;和内存相关&#xff0c;这里和虚拟机的内存2G一致&#xff09; …