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