数据操纵语言(DML)包括三大语句,insert(插入)、delete(删除)、update(更新),也就是我们常说的增删改操作,主要用于改变数据库数据。
一、在表中插入数据
insert命令可以对表进行新增记录
(1)单条数据插入
格式:
insert into 表名(属性1,属性2,...) values (值1,值2,...);
注意:插入的值和属性要保持 一 一对应的关系。
如果表中的属性太多,也可以将表名后的属性名省略不写,
但注意插入的数据必须和属性一一对应,以免出错。
insert into 表名 values(值1,值2,...,值n);
(2)插入多条数据
insert into 表名(属性1,属性2, ... ,属性n)
values
(值1,值2,...,值n),
(值1,值2,...,值n),
...,
(值1,值2,...,值n);
二、删除表中数据
delete命令可以对表的数据进行删除。
delete与drop的区别:
两者都是删除的意思,delete是对表中的数据进行删除,不会删除表的结构,删除表中数据后表依然存在;
drop是将表以及表中的数据一并删除。
格式一:删除表中全部的数据
delete from 表名;
格式二:删除表中符合条件的数据
delete from 表名 where 条件;
例如🌰:
删除教师表:delete from teacher;
删除学生表中张三这个学生的信息:
delete from student where name='张三';
注意:
关键词and和or
当有多个条件需要同时满足时,用and关键字进行连接.
当有多个条件,只需要满足其中一个条件即可,就用or进行连接.
delete from 表名 where 条件1 and 条件2 and条件3....;
三、修改表中数据
update命令可以对表的数据进行修改。
格式一:对整个列的值都进行修改
update 表名 set 属性名=值;
格式二:对表中多个列的值进行修改
update 表名 set 列名1=值1,列名2=值2,...;
格式三:有条件的修改
update 表名 set 列名=值 where 条件;
也可以在原有的基础上进行修改:
例如:把教师表的工资在原有的基础上增加1000
update teacher set salary=salary+1000;
四、查询表中的数据(单表查询)
DQL(Data Query Languag): 数据查询语言,用来查询数据库中表的记录(数据) 。关键字:select, where 等
查询:就是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索;查询功能是数据库最基本也是最重要的功能。MySQL中使用SELECT语句来查询数据。
基本的语法结构:
select 属性 from 表名;
*:表示所有的
例如:查看student表中所有的列 select * from student;
查询多个列的格式:
select 列名1,列名2,列名3 from 表名;
1.去重查询 distinct
删除重复行,可以在SELECT子句中使用DISTINCT关键字
格式:
select distinct 属性名 from 表名;
例如:学生信息表中的数据如图
对籍贯进行去重复之后的结果为:
2.别名查询
使用select语句查询数据时,可使用别名的方法根据需要对数据的标题进行修改。
注意:别名查询只是对查询出来的结果进行属性名的修改,并不会修改数据表中的属性名称。
格式1:
select 属性名 '别名' from 表名;
例:select 姓名 'Name', 性别 'Sex' from 学生信息表;
也可以使用as关键字来连接列名和指定的别名
格式2:
select 属性名 as '别名' from 表名;
3.计算列
计算列:指的是对已经查询出来的结果,再进行计算。
例如:查询成绩表中学生的成绩,在原有的基础上加上10分之后的结果
select 学号,课程编号,成绩,成绩+10 '新成绩' from 成绩表;
成绩表为:
计算列之后的数据表为:
4.选择查询(条件查询) where
选择查询:也称条件查询,一般查询并不是针对全表的所有行进行查询,只是从整个表中选出满足指定条件的内容,这就要用到WHERE子句。
格式:
select 列名 from 表名 where 条件;
例如:查询籍贯是北京的学生信息:
select 学号,姓名,籍贯 from 学生信息表 where 籍贯=‘北京’;
运算符
在选择查询时,经常会用到一些运算符。
例如:在成绩表score中,查询成绩不及格的学生信息
select * from score where grade<60;
比较运算符
逻辑运算符
- and:连接多个条件,这些条件必须同时满足
- or:连接多个条件,这些条件只需要满足其中一个即可
(1)带and或or的多条件查询
格式:
select 列名 from 表名 where 条件1 and|or 条件2;
(2)范围搜索条件:between and 子查询
范围搜索条件,针对查询的结果满足某个范围内的数据; 范围搜索返回的是介于两个指定值之间的所有值,可分为包括范围和排除范围两种类型,用between ,not between
在某个范围之内:用between and
不在某个范围之内的数据:not between and
selec 列名 from 表名 where 列名 [not] between 开始值A and 结束值B;
查询结果中包含开始值和结束值,是闭区间[A,B]
(3)列表搜索条件:带 in 关键字的子查询
通过in关键字,可以将条件与数据表中任意值来做匹配,只要满足其中一个就会有查询结果
格式:
select 列名 from 表名 where 列名 [not] in(值1,值2,...);
表示将in后面存在的元素都查询出来;
not in:剔除存在的元素。
(4)使用like关键字的通配符匹配查询
like匹配查询:也称为模糊查询
like是用来匹配某个字符串,如果不想要某个字符串就用 not like
格式:
select 属性名 from 表名 where 属性名 [not] like '字符串';
like后面的字符串可以携带通配符:
%:表示0个或者多个字符
_ : 表示**一个**字符
(5)空值查询
select 属性名 from 表名 where 属性名 is [not] null;
5.聚合函数
聚合函数也称合计函数
- sum(列名):对某个列进行求和
- avg(列名):计算列值的平均值
- max(列名):对某个列求最大值
- min(列名):对某个列求最小值
- count(*):统计数据表中元组个数【即统计一个表有多少行】
- count(列名):统计某个列有多少个值
格式:
select 聚合函数 from 表名;
例如:从sc表中计算这个班的总成绩 select sum(grade) from sc;
注意:上述函数中除count(*)外,其他函数在计算过程中均忽略null值。
6.行数限定查询 limit
limit查询:直接限定要查询第几行到第几行的数据内容
格式:
select 列名 from 表名 limit [index,]num;
limit后面的第一个参数index,指定起始位置,即指的是从第几行开始,如果不写默认从0号位置开始,mysql数据库中行数是从0开始的,0号位置就指的是第一行,1号位置就指的是第二行,类似于数组下标一样,每一行的位置=行数-1
参数num:记录数,指查询的总行数
例:limit 10,5:指的是从满足要求的第11行开始查询5行
7.数据分组 group by
数据分组:使用group by语句结合聚合函数,对查询出来的结果进行分组
思想:
- 先查询结果:先统计出相关的总数或者总和
- 统计出来之后,再进行分组【一定是依据某个列来进行的分组】
格式:
select 列名 聚合函数 from 表名 group by 列名
例子🌰:统计每个年级的学生总人数,以及班级总数:
分析:
- 先求出整个学校的总人数
- 求出总人数后,再依据年级进行分组,即group by 年级
统计总人数与班级总数→涉及到的表是:班级信息表
班级信息表的内容为:
select 年级,sum(人数) '总人数',count(*) '班级总数'
from 班级信息表
group by 年级;
分组后的结果为:
分组条件 having
having 关键字:在分组中进行条件限制,与where的作用类似,但having只能与group by一起使用,用来制定分组时的搜索条件。
注意:
- having必须和group by 一起使用,不可以单独使用。
- having子句中可以包含聚合函数,但where不可以。
格式:
select 列名 from 表名 group by 列名 having 条件;
【一般情况下,都是聚合函数当做条件】
例子:查看每个学生的总成绩,要求是总成绩大于200
成绩表为:
select 学号,sum(成绩)
from 成绩表
group by 学号
having sum(成绩)>200
查询分组后的结果为:
8.对结果排序 order by
ORDER BY 语句用于对指定的结果集进行排序。
ASC:升序、order by 语句默认是升序排序
DESC:降序
格式:
select 列名 from 表名 order by 列名 [asc |desc] ;
例子🌰:
查询成绩表并对成绩进行排序:select * from 成绩表 order by 成绩 [desc];
版权归原作者 心皿月 所有, 如有侵权,请联系我们删除。