MySQL第四弹 之 表的查询操作

前提:

我们要创建一张三国街,书生学堂的期末考试成绩表,学堂学员及其对应的乘积如下:

学员 数学成绩 英语成绩 学籍
孙权 70 90
孙策 77 89
曹操 90 91
书生 7 0  

 

MySQL第四弹 之 表的查询操作_第1张图片

数据的插入

全列插入:

    insert into [表名称]  values (每列对应的值) ;

eg:insert into stu values (1,'孙权',70,90,'吴'),(2,'孙权',77,89,'吴'),(3,'曹孟德',90,91,'魏');

指定列插入:

   insert into [表名称] (列名称) values (每列对应的值);

eg:insert into stu (name,shuxue,yingyu) values ('书生',7,0);

MySQL第四弹 之 表的查询操作_第2张图片

 

此时我们的成绩就全部插入完毕了,但是我们发现曹操的名字写错了,我们需要改正;直接插入不可以,不只是错的成绩仍能显示,因为学号是主键,不允许重复!我们现在有不会删除数据,那么我们怎么办呢!引用新的操作:替换!

 

因为主键或者唯一键的束缚而插入失败,可使用下面的语句:

replace into [表名称]  (列名称)  values (每列对应的值)

如果主键或唯一键不冲突,直接插入数据

如果发生冲突,更改数据    ,未指定的列将变为空

MySQL第四弹 之 表的查询操作_第3张图片

 

数据的查询

select:

全列查询:select  * from [表名称];

指定列查询: select [要查询的字段] from [表名称];      

注:要查询的字段可以为表达式,还可以为查询字段起别名   [要查询的字段] [别名]

结果去重: select distinct  [要查询的字段]  from [表名称];

MySQL第四弹 之 表的查询操作_第4张图片

MySQL第四弹 之 表的查询操作_第5张图片

MySQL第四弹 之 表的查询操作_第6张图片

where语句:

运算符 描述
>,>=,<,<= 大于,大于等于,小于,小于等于
=,<=>

等于,使用= ,NULL不安全,NULL=NULL的结果为NULL

使用<=>,NULL安全,NULL<=>NULL的结果是true

!=,<> 不等于
between  a0 and a1 范围匹配,返回[a0,a1]范围内的值
in(option) 如果是option中的任意一个,就返回
is null 是null
is not null 不是null
like

模糊匹配

%表示匹配任意多个字符(包括0个)

-表示任意一个字符

逻辑运算符 描述
and 所有条件都为true,才为true
or 任意一个条件为true,就为true
not 在为true的情况下,结果为false

注:

别名不能用在where条件语句中

MySQL第四弹 之 表的查询操作_第7张图片

结果排序:

     ASC(升序)   DESC(降序)

 使用order by 语句时,不指定默认为ASC

MySQL第四弹 之 表的查询操作_第8张图片

 筛选的结果分页显示

起始默认位置为0

 limit  n;从0开始打印n条数据

limit s,n;  从s开始打印n条数据

limit  n offset  s;从s开始打印n条数据

MySQL第四弹 之 表的查询操作_第9张图片

分组查询

group  by

MySQL第四弹 之 表的查询操作_第10张图片

 

 更改数据

update [表名称]  set [列名称]=[更改的值]   [用where,或其余语句进行选择]

注:如果没有where等语句进行选择更改,则更新整张表的数据

上面我们知道学号为2的同学不是孙权,而是他哥哥孙策,现在我们需要进行更改 

MySQL第四弹 之 表的查询操作_第11张图片

 MySQL第四弹 之 表的查询操作_第12张图片

 删除数据

delete  from [表名称]   [where...]

delete  from [表名称]      :会删除整张表的数据

 将数据删除后,自增长不会受到任何影响,如上图所示,插入新数据后,不指定则id为5

MySQL第四弹 之 表的查询操作_第13张图片

截断表 

truncate  [表名称]        或者   truncate table [表名称]

会删除整张表的数据,自增长也会进行重置


MySQL第四弹 之 表的查询操作_第14张图片

多表查询

eg:显示部门为10的部门名、员工名和工资

 子查询和自连接

自连接是指同一张表连接查询

子查询是指嵌入其他sql语句中的select语句,也叫嵌套查询

eg:查询SMITH的领导姓名和领导编号 

子查询:

自连接: 

通过上面的两个例子,我们发现我们组合语句进行查询,也就是所谓复合查询!我们下面也这样进行组合。 

多行子查询:

in关键字

查询与部门号为10的职业相同的人员的姓名,职业和编号

MySQL第四弹 之 表的查询操作_第15张图片

MySQL第四弹 之 表的查询操作_第16张图片

all关键字

查询比部门号为30的职员工资高的职员的编号、姓名和工资

MySQL第四弹 之 表的查询操作_第17张图片

any关键字

 查询比部门号为30的任意职员工资高的职员的编号、姓名和工资

MySQL第四弹 之 表的查询操作_第18张图片

多列子查询 

查询和SMITH的部门和岗位完全相同的所有雇员的姓名,不含SMITH本人

from语句中使用子查询

查找每个部门工资最高的人的姓名
MySQL第四弹 之 表的查询操作_第19张图片

合并查询

 union :该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行

union all:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行!

MySQL第四弹 之 表的查询操作_第20张图片 

注:如果本篇博客有任何错误和建议,欢迎伙伴们留言,你快说句话啊!

 

你可能感兴趣的:(MySQL)