推广 热搜: page  使用  音视频  个数  搜索引擎  选择  企业  百度  可以  父亲 

MySQL史上最全总结

   日期:2024-12-30     作者:2ce1y    caijiyuan   评论:0    移动:http://ww.kub2b.com/mobile/news/15652.html
核心提示:官网: MySQL :: Download MySQL Installer 阿里云: MySQL8 https://www.alipan.com/s/auhN4pTqpRp 点击链接保存&#

官网

MySQL :: Download MySQL Installer

阿里云

MySQL8 https://www.alipan.com/s/auhN4pTqpRp 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

作为数据库的景象数据库

1.将解压文件解压到你安装的目录:E:mysql-8.0.11-winx64 不要放在有中文名字和空格的的目录下.例如

 

注意:配置文件中的路径要和实际存放的路径一致,注意路径的反斜杠要改成斜杠

在安装时,避免出错我们尽量全部使用管理员身份运行CMD,否则在安装时会报错,会导致安装失败的情况

3.进入mysql的bin目录

4.在MySQL目录下的bin目录下执行命令

 
 

5.安装mysql服务

安装mysql服务(注意,一定要是管理员权限

执行下面的命令

进入DOS命令后,对MySQL服务器开启或暂停操作

 
 
 

成功了

成功后有个标识,右键此电脑-服务-计算机管理 -服务和应用程序

6.启动MySQL 服务

服务安装成功之后通过命令net start mysql启动MySQL的服务

7.修改密码

mysql的bin目录下 进行数据库连接 mysql -u root -p

再输入密码 回车

 

8.密码修改成功后

 
 
 

连接MySQL

相信大家都有的Navicat,小海豚等数据库图形化工具

OK了

数据库

1.创建数据库

直接创建:CREATE DATAbase 数据库名;

 

如果不存在则创建:CREATE DATAbase IF NOT EXISTS 数据库名;

 

创建数据库时并设置字符集:CREATE DATAbase 数据库名 CHARACTER SET 字符集;

 
2.查看数据库

查看所有的数据库:SHOW DATAbaseS;

 

看某个数据库的定义信息:SHOW CREATE DATAbase 数据库名;

 

查看正在使用的数据库:SELECt DATAbase();

 

切换数据库: use 数据库名

 
3.修改

修改数据库字符集:ALTER DATAbase 数据库名 DEFAULT CHARACTER SET 字符集;

 
4.删除

删除数据库 DROP DATAbase 数据库名;

 

数据库中的表管理

1.创建表

CREATE TABLE [IF NOT EXISTS]表名( 字段名1 字段类型, 字段名2 字段类型, 字段名3 字段类型 );

 

根据某个旧表的结构,创建一个新表:CREATE TABLE 新表名 LIKE 旧表名;

 

复制某个表中的所有的信息,包含数据 :CREATE TABLE 新表名 查询语句;

 
2.查找

查看某个数据库中的所有的表:SHOW TABLES;

 

查看某个表的结构信息:DESC 表名;

 

查看某个表的创建SQL语句 : SHOW CREATE TABLE 表名;

 
3.修改

给表中新增一列:ALTER TABLE 表名 ADD 列名 类型(长度);

 

修改已经存在的列的数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;

 

修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

 

删除列:ALTER TABLE 表名 DROP 列名;

 

修改表名:RENAME TABLE 表名 TO 新表名;

 

修改字符集: ALTER TABLE 表名 character set 字符集;

 
4.删除

直接删除表: DROP TABLE 表名;

 

先判断是否存在再删除: DROP TABLE IF EXISTS 表名;

 
5.截断表

TRUNCATE 【TABLE】 表名 ;删除表和表中的数据,重新创建的表和原来的表的结构一样

 
 

数据操作的语言,主要对MySQL进行增加、删除、修改

1.添加数据

 
 
1.1插入多条数据

一次性插入多条语句
INSERT INTO 表名 (列名1,列名2,…) 查询语句;

 
 
1.2表内容复制

方式1

 

方式2

 

2.修改数据

 
 
 

3.删除

将表中的数据均删除

 

删除表中符合条件表达式的记录

 
 
 
 
 

主键不可重复,主键不能为NULL

一个表中只能有一个主键(包含联合主键)

添加主键的列的值不能为空,也不能重复

唯一标识表中的一行数据,提高查询效率

创建主键约束

单列主键

方式1

列名 数据类型 PRIMARY KEY

 

方式2

创建表完成后,修改表结构

ALTER TABLE 表名 ADD PRIMARY KEY(列名);

 

单列主键的约束规则

一张表只能有一个单列主键,不能重复,不能为空

联合主键

创建方式1

 

创建方式2

 

验证主键约束

 

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY;

 

设置主键自增AUTO_INCREMENT

注意:无论SQL执行是否成功,都会自增

方式1

类名 数据类型 PRIMARY KEY AUTO_INCREMENT

 

方式2

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段数据类型 AUTO_INCREMENT PRIMARY KEY;

 

delete和truncate删除后,主键的自增

delete在删除之后从断点开始自增

 

truncate数据之后自动增长默认从起始值1开始,和表之前创建时或者设置的指定自增无关

 
 

唯一约束,该约束的键所在的列不能重复,但可以为null

元素不能重复,但是值可以为NULL

一个表之中可以有多列为唯一约束

创建唯一约束

方式1

字段名 数据类型 UNIQUE

 
 

修改唯一约束

方法2

修改表中的sno字段,添加唯一约束,要注意不然是空表,要不然里面的数据符合唯一约束

ALTER TABLE 表名 ADD UNIQUE(字段名);

 
 

删除唯一约束

ALTER TABLE 表名 DROP INDEX 字段名;

 
 

特点:添加非空约束后,列不能为空

非空约束在一张表中可以有多列

创建非空约束

方式1:创建时声明非空约束

字段名 数据类型 NOT NULL

 

方式2:修改表的结构为非空

注意:修改时不能存在不符合数据的情况

ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

 

删除非空约束

 
 

1.特点

(1)在“从表”中指定外键约束,并且一个表可以建立多个外键约束

(2)创建(create)表时就指定外键约束的话,先创建主表,再创建从表

(3)删表时,先删从表(或先删除外键约束,再删除主表

(4)从表的外键列,必须引用/参考主表的键列(主键或唯一键

为什么?因为被依赖/被参考的值必须是唯一的

(5)从表的外键列的数据类型,要与主表被参考/被引用的列的数据类型一致,并且逻辑意义一致。

例如:都是表示部门编号,都是int类型。

(6)外键列也会自动建立索引(根据外键查询效率很高,很多

(7)外键约束的删除,所以不会自动删除,如果要删除对应的索引,必须手动删除

2.作用

限定某个表的某个字段的引用完整性

比如:员工表的员工所在部门的选择,必须在部门表能找到对应的部分。

3.关键字:foreign key

4.主表和从表/父表和子表

主表(父表:被引用的表,被参考的表

从表(子表:引用别人的表,参考别人的表

例如:员工表的员工所在部门这个字段的值要参考部门表

 

例如:学生表、课程表、选课表

 

如何指定外键约束

(1)建表时
 
(2)建表后(了解
 

5.如何查看外键约束名

 

6.如何查看外键字段索引

 

7.如何删除外键约束(了解

删除外键约束,不会自动删除外键约束列的索引,需要单独删除。

 

8.SQL演示

 

9.演示问题

(1)失败:不是键列

 

(2)失败:数据类型不一致

 

(3)成功,两个表字段名一样

 

10.设置外键约束等级

  • Cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录
  • Set null方式:在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为not null
  • No action方式:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
  • Restrict方式:同no action, 都是立即检查外键约束
  • Set default方式(在可视化工具SQLyog中可能显示空白:父表有变更时,子表将外键列设置成一个默认的值,但Innodb不能识别

如果没有指定等级,就相当于Restrict方式。

 
 

检查性约束的特点

检查为非NULL的插入的记录的范围是否符合check后面的条件

添加检查性约束

字段 数据类型 CHECK (条件)

 

添加时检查记录是否符合约束条件

 

删除检查性约束

ALTER TABLE 表名 DROP CHECK 检查性约束名;

 
 

添加默认值约束

 

如果给传值,以传的值为准,否则是默认值

 
 
 
 

删除零填充约束

 
 

DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。

单表查询:针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。
多表联查:针对数据库中两张或者两张以上的表同时进行查询, 依赖的手段有复杂查询和嵌套查询。

 

关键字

DISTINCT:设定DISTINCT可以去掉重复记录。
AS:表名或者字段名过长时,可以用AS关键字起别名,方便操作。
GROUP BY:按组分类显示查询出的数据。
HAVINg:GROUP BY分组时依赖的分组条件。
ORDER BY:将查询出来的结果集按照一定顺序排序完成。
LIMIT:限制显示查询结果的条数。

重要地位

数据库管理系统⼀个重要功能就是数据查询,SQL语句中最核⼼、最重要的语句,也是使⽤频率最 ⾼的语句.数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进⾏筛选以及确定数 据以什么样的格式显示。 MySQL提供了功能强⼤、灵活的语句来实现这些操作。 MySQL数据库使⽤select语句来查询数据。 应⽤

简单查询

通过简单查询,可以查询表中的所有列或者指定列,通过算术运算符、列别名以及消除重复⾏可以 改变查询结果的显示⽅式。

select简单查询
⭐查全表
 
⭐查询指定的字段
 

语法

 

说明

 
数据准备

创建数据库和表

 

添加数据

 

简单的查询

 
⭐别名(AS)
 
 

列别名⽤来给查询语句中的列或者表达式重新命名,使语句的可读性更强。

语法

 

1.列别名可以直接写在列名或者表达式的后面,也可以添加as关键字,加不加as没有区别,通常不加。

2.如果select子句中有计算表达式,通常使用列别名。

 

注意

1.列别名中包含有空格

2.列别名中包含有特殊字符,如%,-等。

⭐消除重复行(DISTINCT去重)

重复⾏是查询结果中有完全相同的数据⾏,消除重复⾏是消除相同的查询结果,只保留⼀⾏重复数据,使⽤关键字 DISTINCT 来完成。

语法:

 

例如

 

也可以使⽤DISTINCT关键字消除多列重复数据(同时考虑所有列的数据重复

算数运算符

简介

数据库中的表结构确⽴后,表中的数据代表的意义就已经确定。通过MySQL运算符进⾏运算,就可 以获取到表结构以外的另⼀种数据。 例如,学⽣表中存在⼀个birth字段,这个字段表示学⽣的出⽣年份。⽽运⽤MySQL的算术运算符⽤ 当前的年份减学⽣出⽣的年份,那么得到的就是这个学⽣的实际年龄数据。

MySQL支持四种运算符

算数运算符、⽐较运算符、逻辑运算符、位运算符。

运算符优先级

优先级运算分类运算符举例1算术运算符+,-,*,/,%2比较运算符=,<>,<,>,<,<=,>=3特殊比较运算符BETWEEN…AND…,IN,LIKE,IS NULL4逻辑非NOT5逻辑与AND6逻辑或OR
0.优先级
 
⭐1.算数运算符

可以在SELECT⼦句中使⽤算术运算符(只对数值型数据起作⽤,来改变查询结果的显示⽅式。其中⽀持的5种运算符包括

运算符作用+加-减*乘/ 或 DIV除法运算,返回商% 或 MOD求余运算,返回余数
 
⭐2.比较运算符
比较运算符说明=等于< 和 <=小于和小于等于> 和 >=大于和大于等于<=>安全的等于,两个操作码均为NULL时,其所得值为1;而当一个操作码为NULL时,其所得值为0<> 或 !=不等于IS NULL 或 ISNULL判断一个只是否为NULLIS NOT NULL判断一个值是否不为NULLLEAST当有两个或多个参数时,返回最小值GREATEST当有两个或多个参数时,返回最大值BETWEEN…AND…判断一个值是否落在两值之间,包含边界值IN判断一个值是IN列表中的任意一个值NOT IN判断一个值不是IN列表中的任意一个值LIKE通配符匹配REGEXP正则表达式匹配
⭐3.逻辑运算符
 
逻辑运算符说明NOT 或者 !逻辑非AND 或者 &&逻辑与OR 或者XOR逻辑异或
⭐4.位运算符

位运算符是在⼆进制数上进⾏计算的运算符。位运算会先将操作数变成⼆进制数,进⾏位运算。然后再 将计算结果从⼆进制数变回⼗进制数。

位运算符说明&按位与^按位异或<<按位左移>>按位右移~按位取反,反转所有比特
 
空值NULL

空值⽤NULL表示,表示⼀种⽆效的、未知的值,空值不是零,也不是空格。

 

查询结果如下

空值参与运算

空值参与算术运算,运算后的结果仍为NULL —上述为字符串类型,可以单独修改查看

 
 

查询结果如下,可以看到空值参与算术运算后,结果仍为空值

条件查询

通过简单查询,可以查询表中的所有数据⾏。但⼤多数情况下,我们只需要查询符合某些特定条件的数据⾏,这就需要⽤到SQL语⾔中的条件查询来过滤。

普通条件查询

语法

 

说明:

1.条件查询使用WHERe子句来完成,WHERe子句必须紧跟在FROM子句后面。

2.条件表达式的格式为:列名 比较运算符 要比较的值,例如:deptno=10

3.常见的比较运算符包括:=、>、>=、<、<=、<>

含义为等于, 大于,大于等于,小于,小于等于,不等于

4.数值型、字符型、日期型数据都可以使用比较运算符进行比较。

5.字符型和日期型数据作为查询条件时,条件表达式右边的值,必须添加单引号

 
特殊比较运算符
BETWEEN…AND…

使⽤BETWEEN … AND… 可以查询出某列的值在某个范围内(包括边界值)的数据⾏。

语法WHERe 列名 BETWEEN 值1 AND 值2;

 
IN

使⽤IN运算符可以查询出某列的值是否和给定集合内的任意⼀个值相等。

语法WHERe 列名 IN (值1, 值2, …值n)

 
LIKE

使⽤LIKE运算符可以查询出某列的值是否满⾜关键字匹配,也叫模糊查询。

先介绍两个通配符

% :⽤来匹配任何字符,进⾏模糊匹配

_ : 下划线_⽤来匹配单个字符

 
IS NULL

如果要查询某列的值是否为NULL

使⽤ “ 列名 = NULL” 是查询不出来的。只能使⽤ “ 列名 IS NULL”

 
least,greatest运算符
 

⭐对查询结果排序【排序查询】

简介

前⾯讲解的简单查询和条件查询SQL,结果集的显示顺序都不是我们指定的。在⼤多数情况下,我 们希望查询出来的结果集按照⼀定的顺序显示,⽐如按价格降序显示、在价格基础上分类排序等等。这就需要⽤到SQL语⾔中的对结果集排序的⼦句ORDER BY。

语法
 
排序规则说明

1、ORDER BY⽤于⼦句中可以⽀持单个字段,多个字段,表达式,函数,别名等

2、可以按照3种⽅式进⾏排序:分别是按列名排序、按列别名排序、按列序号排序。

3、ASC表示按升序排序(默认值), DESC表示按降序排序。

 

4、可以同时按照多个列名进⾏排序

5、ORDER BY ⼦句必须写在SELECt语句的最后,LIMIT⼦句除外

6、数字升序排列⼩值在前,⼤值在后。即按照数字⼤⼩顺序由⼩到⼤排列。

7、⽇期升序排列相对较早的⽇期在前,较晚的⽇期在后。

8、字符升序排列按照字⺟由⼩到⼤的顺序排列,即由A-Z排列。

9、空值在升序排列中排在最前⾯,在降序排列中排在最后。

按列名排序
 
按别名排序
 
按列序号排序
 
按多列排序
 

⭐聚合函数

MIN,MAX,SUM,AVG,COUNT

MIN和MAX函数会忽略掉NULL值后,再进行计算

 

SUM求和,AVG求平均值,它俩也会忽略掉NULL值,再进行计算

 

COUNT 求符合条件的记录[元组]数

 
聚合函数处理NULL值的小测试
 
⭐Group By 分组
 
Having是分组后进行筛选
 

⭐分页查询LIMIT

语法

SELECT * FROM product LIMIT page;

page 展示多少条数据,索引从0开始

 

SELECt * FROM product LIMIT start,page

start 表示开始的下标

计算公式:(第几页-1)*每页最多显示几条

page:每页最多显示几条

 
 
 

⭐执行顺序

 
 

数据准备

 

一对一 一般需要表合并
一对多
多对多 需要从表

内连接

多张表联查时符合关系条件相等的数据叫内连接,返回符合条件的公有数据。

笛卡尔积

 

隐藏内连接

 
 

显式内连接

 
 

内连接应用

 

外连接

外连接,返回主查表中的所有数据,从表返回符合条件的数据。

主查表在join的左边,left

主查表在join的右边,right

数据准备
 
左外连接
 
 
右外连接
 
 
满外连接
 
 
 

基本概念:一个查询语句(外部查询)中包含了另一个查询语句(子查询

 

子查询被当作一个单元来执行,它先于外部查询执行,其结果可以被外部查询使用。
子查询的结果通常被看作是一个临时表,外部查询可以像操作任何其他表一样操作这个临时结果集。

1.单行单列

1.查询年龄最大的员工信息,显示信息包含员工号、员工名字、员工年龄

 

2.多行单列

2.查询研发部和销售部的员工信息,包含员工号、员工名字

 

3.多行多列

 
 

ALL

所有 相当于and

 

ANY

任意 相当于or

 

IN

在SQL语言中,是一个运算符,用于测试一个值是否在一个列表(一组值)中。它通常用在子句中,以过滤出满足特定条件的记录。

当你看到这样的查询语句

MySQL史上最全总结

 

这个查询会返回所有列的值存在于括号内列表(value1, value2, value3等)的记录。

举例来说,如果你有一个表,其中有一个列,你可以使用来找出特定顾客ID列表的所有订单

 

这个查询将返回为101,102或103的所有订单。

在你提供的查询中

 

这里用于检查表中的是否存在于由子查询返回的部门编号列表中。如果存在,并且大于1001,那么相应的员工记录就会被选中并返回。

 

EXISTS

把外层sql的结果,拿到内层sql去测试,如果内层的sql成立,则该行取出。内层查询是exists后的查询。

至少存在员工的部门

 
 

自己和自己做内连接或者外连接,用于显示自关联的层级关系

 

数据准备

 
 
 
 
 
 
 

数据准备

 

group_concat函数

 

数学相关函数

abs()取绝对值
 
sqrt()开平方
 
mod(x,y)求余数
 
ceil(x)和ceiling(x)向上取整
 
floor(x)向下取整
 
rand()生成随机数
 
round()四舍五入函数
 
sign()判断值的范围
 
pow(x,y),x的y次方
 
sin()函数
 
truncate(x,y)截断
 

字符串相关的函数

lower() 将大写转小写
 
upper() 将小写转大写
 
concat() 字符串连接
 
substr()/substring()截取字符串
 
length() 返回字符串的长度
 
char_length() character_length() 返回一共有多少个字
 
instr() 在字符串中找某个字符串第一次出现的位置
 
LPAd()、RPAD()指定字符串输出的长度
 
trim去除字符串的字符/空格
 
replace() 替换字符串
 
repeat() 重复字符串
 
reverse() 反转字符串
 
format() 格式化字符串
 

日期时间相关函数

获取日期相关函数
 
获取日期
 
获取时间
 
获取当前天
 

日期相关的转换

格式化时间
 
主题格式描述年%Y4位数的年份月%b月份对应的英文缩写月%M月份对应的英文全称月%m01-12的月月%c01-12的月份数值日%d01-31的某月里面的第几天日%e01-31的某月里面的第几天日%D用th后缀表示某月中的第几天日%j001~366的一年中的第几天周%a星期几对应的英文缩写周%W星期几对应的英文全称时%H00~23的小时时%h01~12的小时分%i00~59的分钟秒%S秒(00~59)秒%f微秒时分秒%T返回当前的时分秒,24~小时(hh:mm:ss)
extract函数
 
unit说明year年month月day日hour小时minute分钟second秒week周数,全年第几周
日期相关计算问题(向后/向前偏移时间)
 
datediff(end_date,start_date) 和指定时间差多少天
 
练习
 

流程控制函数

if()类似三目运算
 
ifnull()判断是否为空
 
nullif(expr1,expr2) 比较两个字符串是否相等,相等为null,不相等返回expr1
 
练习
 
 

开窗函数MySQL8特有

数据准备
 
排序函数
 
开窗聚合函数
 
滑动窗口
 
练习

数据准备

 
 
前后函数
 
首尾函数
 
分箱函数
 
 

概念:将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行

事务是一个过程,在进行中

特点:一个事务中如果有一个数据库操作失败,则整个

本文地址:http://ww.kub2b.com/news/15652.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号