文章目录

一、在表中插入数据

(1)单条数据插入

(2)插入多条数据

二、删除表中数据

三、修改表中数据

四、查询表中的数据(单表查询)

1.去重查询 distinct

2.别名查询

3.计算列

4.选择查询(条件查询) where

运算符

(1)带and或or的多条件查询

(2)范围搜索条件:between and 子查询

(3)列表搜索条件:带 in 关键字的子查询

(4)使用like关键字的通配符匹配查询

(5)空值查询

5.聚合函数

6.行数限定查询 limit

7.数据分组 group by

分组条件 having

8.对结果排序 order by


数据操纵语言(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,列名3from 表名;

1.去重查询 distinct

删除重复行,可以在SELECT子句中使用DISTINCT关键字

格式:selectdistinct属性名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 andselec 列名 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语句结合聚合函数,对查询出来的结果进行分组

思想:

  1. 先查询结果:先统计出相关的总数或者总和
  2. 统计出来之后,再进行分组【一定是依据某个列来进行的分组】
格式:select 列名 聚合函数 from 表名 group by 列名

例子:统计每个年级的学生总人数,以及班级总数:

分析:

  1. 先求出整个学校的总人数
  2. 求出总人数后,再依据年级进行分组,即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];