MySQL第四弹 之 表的查询操作

前提:

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

学员数学成绩英语成绩学籍
孙权7090
孙策7789
曹操9091
书生70 

 

数据的插入

全列插入:

    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);

 

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

 

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

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

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

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

 

数据的查询

select:

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

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

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

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

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条件语句中

结果排序:

     ASC(升序)   DESC(降序)

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

 筛选的结果分页显示

起始默认位置为0

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

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

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

分组查询

group  by

 

 更改数据

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

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

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

 

 删除数据

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

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

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

截断表 

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

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


多表查询

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

 子查询和自连接

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

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

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

子查询:

自连接: 

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

多行子查询:

in关键字

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

all关键字

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

any关键字

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

多列子查询 

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

from语句中使用子查询

查找每个部门工资最高的人的姓名

合并查询

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

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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值