商务服务
MySQL-基础篇
2024-11-19 03:09

SQL分类

MySQL-基础篇

分类全称说明DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Language数据查询语言,用来查询数库中表的记录DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限

用来定义数据库对象

查询

查询所有数据库

 

查询当前数据库

 

创建

 

删除

 

使用

 
 

查询当前数据库所有表

 

查询表结构

 

查询指定表的建表语句

 

1.3DDL表操作-创建

 
 

MySQL中的数据类型有很多,主要分为三类,数值类型,字符串类型,日期时间类型。

添加字段

 
 

修改数据类型

 

修改字段名和字段类型

 
 

删除字段

 
 

修改表名

 
 

删除表

 

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

 

注意:在删除表时,表中全部数据也会被删除。

DML用来对数据库中表的数据记录进行增删改查操作。

1.给指定字段添加数据

 
 

2.给全部字段添加数据

 
 

3.批量添加数据

 
 
 
 

注意

​ 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

​ 字符串和日期类型数据应该包含在引号中。

​ 插入的数据大小,应该在字段的规定范围内。

 
 

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

 
 

注意:delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

delete语句不能删除某一个字段的值(可以使用update

数据查询语言,用来查询数据库中表的记录。

查询关键字:select

基本语法

 

基本查询

条件查询(where

聚合函数(count,max,min,avg,sum

分组查询(group by

排序查询(order by

分页查询(limit

1,查询多个字段

select 字段1,字段2,字段3… from 表名

 

select * from 表明

 

2.设置别名

 
 

3.去除重复记录

 
 

注意:*号代表查询所有字段,在实际开发中尽量少用(不直观,影响效率)。

语法

 

条件

比较运算符功能>大于>=大于等于<小于<=小于等于=等于<>或 !=不等于BETWEEN …AND…在某个范围之内(含最小,最大值)IN(…)在in之后的列表中的值,多选一LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)IS NULL是NULLAND 或 &&并且(多个条件同时成立)OR 或 ||或者(多个条件任意一个成立)NOT 或!非,不是

介绍

将一列数据作为整体,进行纵向计算。

常见聚合函数

函数功能count统计数量max最大值min最小值avg平均值sum求和

语法

 

**注意:**null值不参与所有聚合函数运算。

语法

 
 

where与having区别

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

**注意:**执行顺序:where>聚合函数>having.

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

语法

 
 

排序方式

ASC:升序(默认值

DESC:降序

**注意:**如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

语法

 
 

注意

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

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT.

如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

1.查询年龄为20,21,22,23 岁的员工信息。

 

2.查询性别为"男",并且年龄在20-24岁(含)以内的性为为三个字的员工

 

3.统计员工表中,年龄小于60岁,男性员工和女性员工的人数。

 

4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按照入职时间降序排序

 

5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄系统按入职时间升序排序。

 
 

MySQL-基础篇

查询用户

 

创建用户

 

修改用户密码

 

删除用户

 

注意

主机名可以使用%通配。

这类SQL开发人员操作的比较少,主要是DBA(数据库管理员)使用。

权限说明ALL,ALL PROVOLEGES所有权限select查询数据insert插入数据update修改数据delete删除数据alter修改表drop删除数据库/表/视图create创建数据库/表

查询权限

 

授予权限

 

撤销权限

 

注意

多个权限之间,使用逗号分隔

授权时,数据库名和表名可以使用*进行通配,代表所有。

函数是值一段可以直接另一段程序调用的程序或代码。

MySQL中内置了很多字符串函数,常用的几个如下

函数功能CONCAt(S1,S2,…Sn)字符串拼接,将S1,s2,…Sn拼接成一个字符串LOWER(str)将字符串str全部转成小写UPPER(str)将字符串str全部转成大写LPAd(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度TRIM(str)去掉字符串头部和尾部的空格SUBSTRINg(str,start,len)返回从字符串str从start位置起的len个长度的字符串
 

(1)CONCAT函数

 

MySQL-基础篇

(2)LOWER函数

 

MySQL-基础篇

(3)UPPER函数

 

MySQL-基础篇

(4)LPAD函数

 

MySQL-基础篇

(5)RPAD函数

 

MySQL-基础篇

(6)TRIM函数

 

MySQL-基础篇

(7)SUBSTRING函数

 

MySQL-基础篇

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如1号员工的工号应该为00001。

 

MySQL-基础篇

常见的数值函数如下

函数功能CEIL(x)向上取整FLOOR(x)向下取整MOD(x,y)返回x/y的模RAND()返回0-1内的随机数ROUND(x,y)求参数x的四舍五入的值,保留y位小数

(1)ceil函数

 

MySQL-基础篇

(2)FLOOR函数

 

MySQL-基础篇

(3)MOD函数

 

MySQL-基础篇

(4)RAND函数

 

MySQL-基础篇

(5)ROUND函数

 

MySQL-基础篇

案例:通过数据库函数,生成一个六位数的随机验证码。

 

MySQL-基础篇

函数功能CURDATE()返回当前日期CURTIME()返回当前时间NOW()返回当前日期和时间YEAR(date)获取指定date的年份MONTH(date)获取指定date的月份DAY(date)获取指定date日期DATE_ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数

(1)CURDATE

 

MySQL-基础篇

(2)CURTIME

 

MySQL-基础篇

(3)NOW

 

MySQL-基础篇

(4)YEAR

 

MySQL-基础篇

(5)MONTH

 

MySQL-基础篇

(6)DAY

 

MySQL-基础篇

(7)DATE_ADD

 

MySQL-基础篇

(8)DATEDIFF

 

MySQL-基础篇

案例:查询所有员工的入职天数,并根据入职天数倒叙排序。

 

MySQL-基础篇

流程控制函数也是很常用的一类函数,可以在SQL语句中实现条件的筛选,从而提高查询的效率。

函数功能IF(value,t,f)如果value为true,则返回t,否则返回fIFNULL(value1,value2)如果value不为空,返回value,否则返回value2CASE WHEN [val1] THEN [res1] …ELSE [default] END如果val1为true,返回res1,…否则返回default默认值CASE [expr] WHEN [val] THEN [res1] …ELSE [default] END如果expr的值等于val1,返回res1,…否则返回default默认值

1if

 

MySQL-基础篇

2ifnull

 

MySQL-基础篇

 

MySQL-基础篇

3case when then else end

需求:查询emp表的员工姓名和工作地址(北京|上海—》一线城市,其他–》二线城市

 

MySQL-基础篇

– 案例: 统计班级各个学员的成绩,展示的规则如下: – >= 85,展示优秀 – >= 60,展示及格 – 否则,展示不及格

 
 

概述:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确,有效性和完整性。

分类

约束描述关键字非空约束限制该字段的数据不为nullNOT NULL唯一约束保证该字段的所有数据都是唯一,不重复的UNIQUE主键约束逐渐是一行数据的唯一标识,要求非空且唯一PRIMARY KEY默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT检查约束保证字段值满足某一个条件CHECK外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

案例:根据需求,完成表结构的创建

字段名字段含义字段类型约束条件idID唯一标识int主键,并且自动增长name姓名varchar(10)不为空,并且唯一age年龄int大于0,并且小于等于120status状态char(1)如果没有指定该值,默认为1gender性别char(1)无
 

插入数据

 
 

概念:外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

MySQL-基础篇

注意:目前上述的两张表,在数据库后面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。

语法

添加外键

 
 

删除外键

 

创建部门表

 

i添加数据

 

创建emp表

 

插入数据

 

添加外键

 

删除外键

 

删除/更新行为

行为说明NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致)RESTRICT当在父表中删除/更新对应记录时,首先要检查该记录是否有对应外键,如果有则不允许删除/更新、(与NO ACTION一致)CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录SET NULL当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)SET DEFAULT父表有变更时,子表将外键列设置成一个默认值(innodb不支持
 

– 外键的删除和更新行为

 
 
 

概述:项目开发中,在进行数据据表结构设机时,会根据业务需求及业务模块之间的关系,分析并设机表结构,由于业务之间相互关联,所以以各个表结构之间也存在着各种联系,基本上分为三种

一对多(多对一

案例:部门与员工的关系

关系:一个部门对应多个员工,一个员工对应一个部门

实现:在多的一方建立外键,指向一的一方的主键

MySQL-基础篇

多对多

案例:学生与课程的关系

关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

MySQL-基础篇

一对一

案例:用户与用户详情的关系

关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详细字段放在另一张表中,以提升操作效率。

实现:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(UNIQUE

MySQL-基础篇

概述:指从多张表中查询数据

笛卡尔积:笛卡尔积是指在数序中,两个集合A集合B的所有组成情况。(在多表查询时,需要消除无效的笛卡尔积

MySQL-基础篇

多表查询–笛卡尔积

 
 

连接查询

内连接:相当于查询A,B交集部分数据

外连接

​ 左外连接:查询左表所有数据,以及两张表交集部分数据

​ 右外连接:查询右表所有数据,以及两张表交集部分数据

子连接:当前表与自身的连接查询,自连接必须使用表别名

子查询

MySQL-基础篇

7.2.1内连接查询语法

隐式内连接

 

–内连接演示

–1.查询每一个员工姓名,及关联的部门名称(隐式内连接实现

–表结构:emp,dept

–连接条件:e.dept_id=d.id

 

MySQL-基础篇

显示内连接

 

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

MySQL-基础篇

2.查询每一个员工的姓名,及关联的部门的名称(显示内连接实现)–INNER JOIN …ON…

–表结构:emp,dept

–连接条件:emp.dept_id=dept.id

 

MySQL-基础篇

 

MySQL-基础篇

7.2.2外连接查询语法

左外连接

 

相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

–外连接演示

–1.查询emp表的所有数据,和对应的部门信息(左外连接

–表结构:emp,dept

–连接条件:emp.dept_id=dept.id

 

MySQL-基础篇

右外连接

 

相当于查询表2(右表)的所有数据包含表1和表2交集部分数据。

MySQL-基础篇

查询dept表的所有数据,和对应的员工信息(右外连接

 

MySQL-基础篇

7.2.3连接查询-自连接

自连接查询语法

 

自连接查询,可以是内连接查询,也可以是外连接查询。

–查询员工,及其所属领导的名字

–表结构:emp

 

MySQL-基础篇

–2.查询所有员工emp,及其领导的名字emp,如果员工没有领导,也需要查询出来。

 

MySQL-基础篇

7.2.4联合查询-union,union all

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

 

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

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

–union all,union

–1.将薪资低于5000的员工,和年龄大于50岁的员工全部查询出来。

不去重

 

MySQL-基础篇

去重

 

MySQL-基础篇

7.2.5子查询

概念:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。

 

子查询外部的语句可以是insert/update/delete/select的任何一个。

根据子查询结果不同,分为

(1标量子查询(子查询结果为单个值

子查询返回结果是单个值(数字,字符串,日期等,最简单的形式,这种子查询称为“标量子查询”

常用的操作符= <> > >= < <=

–标量子查询 –1.查询"研发部"的所有员工信息 –a.查询"研发部"部门ID

 

–b.根据销售部部门id,查询员工信息

 

MySQL-基础篇

–2查询在"韦一笑"入职之后的员工信息 –a.查询"韦一笑"的入职日期

 

–b.查询指定日期之后入职的员工信息

 

MySQL-基础篇

(2列子查询(子查询结果为一列

子查询返回的结果是一列(可以是多行,这种子查询称为列子查询。

常用的操作符:IN,NOT IN,ANY,SOME,ALL

操作符描述IN在指定的集合范围之内,多选一NOT IN不在指定的集合范围之内ANY子查询返回列表中,有任意一个满足即可SOME与ANY等同,使用SOME的地方都可以使用ANYALL子查询返回列表的所有值都必须满足

–列子查询 –1.查询"销售部"和"市场部"的所有员工信息。 –a.查询"销售部"和"市场部"的部门id

 

–b.根据部门id,查询员工信息

 

MySQL-基础篇

–2.查询比财务部门所有人工资都高的员工信息 –a.查询所有财务部人员工资

 
 

–b比财务部所有人工资都高的员工信息

 

MySQL-基础篇

–3查询比研发部其中任意一人工资高的员工信息 –a.查询研发部所有人工资

 

–b.比研发部其中任意一人工资高的员工信息。

 

MySQL-基础篇

(3行子查询(子查询结果为一行

子查询返回结果是一行(可以是多列,这种子查询称为“行子查询”。

常用的操作符=,<>,IN,NOT IN

–行字查询 –1.查询与"张无忌"的薪资及直属领导相同的员工信息; –a.查询"张无忌"的薪资及直属领导

 

–b.查询与"张无忌"的薪资及直属领导相同的员工信息

 

(4表子查询(子查询结果为多行多列

子查询返回的结果是多行多列,这种子查询称为“表子查询”。

常用的操作符:IN

根据子查询位置,分为:WHERe之后,FROM之后,SELECt之后。

–表子查询 –1.查询与"鹿杖客",“宋远桥"的职位和薪资相同的员工信息。 –a.查询"鹿杖壳”,"宋远桥"的职位和薪资 SELECT job,salary from emp where name=‘鹿杖客’ or name=‘宋远桥’;

–b.查询"鹿杖壳","宋远桥"的职位和薪资相同的员工信息 SELECt * from emp where (job,salary)in(SELECt job,salary from emp where name=‘鹿杖客’ or name=‘宋远桥’);

MySQL-基础篇

–2.查询入职日期是"2006-01-01"之后的员工信息,及其部门信息 –a.入职日期是"2006-01-01"之后的员工信息 SELECt * from emp where entrydate>‘2000-01-01’;

–b.查询这部分员工,对应的部门信息; SELECt e.,d. from (SELECt * from emp where entrydate>‘2000-01-01’) e LEFT JOIN dept d on e.dept_id=d.id;

MySQL-基础篇

7.2.6根据需求,完成SQL语句的编写

1.查询员工的姓名,年龄,职位,部门信息。

 

MySQL-基础篇

2.查询年龄小于30岁的员工姓名,年龄,职位,部门信息。

 

MySQL-基础篇

3.查询拥有员工的ID,部门名称。

 

MySQL-基础篇

4.查询所有年龄大于40岁的员工,及其归属的部门名称,如果员工没有分配部门,也需要展示出来。

 

MySQL-基础篇

5.查询所有员工的工资等级。

 

MySQL-基础篇

6.查询“研发部”所有员工的信息集器工资等级。

 

MySQL-基础篇

7.查询“研发部”员工的平均工资。

 

MySQL-基础篇

8.查询工资比“灭绝”高的员工信息。

a. 查询 “灭绝” 的薪资

 

MySQL-基础篇

– b. 查询比她工资高的员工数据

 

MySQL-基础篇

9.查询比平均薪资高的员工信息。

– a. 查询员工的平均薪资

 

MySQL-基础篇

– b. 查询比平均薪资高的员工信息

 

MySQL-基础篇

10.查询低于本部门平均工资的员工信息。

– a. 查询指定部门平均薪资 1

 

MySQL-基础篇

– b. 查询低于本部门平均工资的员工信息

 

MySQL-基础篇

11.查询所有的部门信息,并统计部门的员工人数。

 

MySQL-基础篇

 

MySQL-基础篇

12.查询所有学生的选课情况,展示出学生名称,学号,课程名称.

 

MySQL-基础篇

1多表关系

一对多:在多的一方设置外键,关联一的一方的主键。

多对多:建立中间表,中间表包含两个外键,关联两张表的主键。

一对一:用于表结构拆分,在其中任何一方设置外键,关联另一方的主键。

2多表查询

内连接

​ 隐式:select…from 表A,表B where 条件…

​ 显示:select…from 表A inner join 表B ON 条件…

外连接

​ 左外:select …from 表A left join 表B ON 条件…

​ 右外:select…from 表A right join 表B ON 条件…

自连接:select…from 表A 别名1,表A 别名2 where 条件…

子查询:标量子查询,列子查询,行子查询,表子查询

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

默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

转账操作(张三给李四转账1800

查看/设置事务提交方式

 

提交事务

 

回滚事务

 

案例

 

事务操作

查看/设置事务提交方式

 

提交事务

 

回滚事务

 
 
 

原子性(Atomicity):事务是不可分隔的最小操作单元,要么全部成功,要么全部失败。

一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

隔离性(Isolation):数据库系统提供隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

    以上就是本篇文章【MySQL-基础篇】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/news/1038.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多   
最新新闻
李子柒停更期间拜访了许多非遗传人,前公司:双方已完全和解
李子柒回归依然是顶流!在长达1200多天的停更之后,11月12日,知名网红在社交平台公开更新两条视频,表示“把这份祝愿送给看到视
李子柒复出热搜背后的文化传承探索
自从李子柒在社交媒体上停更以来,粉丝们一直在翘首以待她的再次亮相。近日,一段关于李子柒参与熊猫家园宣传活动的官方视频意外
震撼!李子柒三年后回归,热搜霸榜揭秘背后故事
2024年11月12日,李子柒再次引发热议,她的最新视频正式上线,并引发了一波热潮。时隔三年,她的回归不仅令无数粉丝为之振奋,更
火年还是水年?2025年属蛇人的命运如何
每个人的命运都各有不同,十二生肖的性格差异很大,即便是同一个属相,不同年份出生的人,命运也会有所不同。随着2025年的到来,
李子柒回归:她的“王者归来”揭示了哪些社会密码?
在社交媒体上曾风靡一时的李子柒,最近以全新的创作宣告回归,瞬间点燃了网络的热情。这位因其对传统文化的深刻理解而备受喜爱的
李子柒复出,背后的IP运营启示
在停更3年之后,依靠传统文化视频创作火遍国内外网络的李子柒再次更新了视频。11月,李子柒久违发布视频,仅仅几小时播放量就破
李子柒复出:从宁静乡村到数字流量的传奇旅程
在社交媒体上,一位女子以她独特的田园生活视频与传统技艺作品,深深触动了亿万观众的心,她就是李子柒。2024年11月12日,她的正
三年归来仍是顶流,李子柒给所有跨境商家上了一课
文:晓鹏,编辑:赵元,出品:增长工场离开的三年,无数人想成为她们、替代她们,但无一成功。李子柒离开的三年,是中国企业出海
2025年火运最旺的属相
2024年已经接近尾声了,相信之前运势不利的朋友也感到疑惑,为何进入九紫离火运了,自己的事业和财运仍然没有好起来?但实际上,
张了凡:2025年普通人,最赚钱的3个行业
​​嘿,朋友们,你们知道吗?明年开始,有三个行业简直是赚钱的黄金赛道,普通人只要踩中其中一个,身价翻个10倍都不是梦! 不