MySQL之条件表达式

1、WHERE表达式     

     条件表达式即是,对记录进行过滤,满足条件进行显示。如果没有指定WHERE子句,则显示所有记录;在WHERE表达式中,可以使用MySQL支持的函数或者运算符。

root@localhost test>SELECT id,username FROM user WHERE id % 2 = 0;

2、GROUP...BY...

此外还可以进行分组,分组的时候即可以指定列名也可以指定列的位置,查询结果分组:

[GROUP BY {col_name | position } [ASC | DESC],...]

其中ASC为升序,DESC为降序,为默认的。user表的全部记录如下:


现在来对sex进行分组,由于sex中只有两种“类型”,是0和NULL类型,因此会有两种分组

root@localhost test>SELECT sex FROM user GROUP BY sex;

3、分组条件HAVING...

还可以带有分组条件HAVING

[HAVING where_condition]
分组可以全部记录都做分组,也可以只对一部分记录做分组
root@localhost test>SELECT sex FROM user GROUP BY sex HAVING age > 25;

会出现如上的错误,这是因为在采用HAVING进行分组条件指定的时候,一定要保证分组的条件要么为一个聚合函数,要么保证这么字段必须出现在SELECT语句中,因此进行如下的修改

root@localhost test>SELECT sex,age FROM user GROUP BY sex HAVING age > 25;

那什么是聚合函数呢?即是max,min,avg,sum这些函数永远只有一个返回值

root@localhost test>SELECT sex,age FROM user GROUP BY sex HAVING age > 25;


root@localhost test>SELECT sex,age FROM user GROUP BY sex HAVING count(id) >= 2;

4、ORDER BY...

还可以对分组的结果进行排序,使用ORDER BY 语法结构

[ORDER BY {col_name | expr | position } [ASC | DESC ],...]

在使用语句SELECT * FROM user的时候,使用的是默认的插入顺序进行显示

root@localhost test>SELECT * FROM user ORDER BY id DESC;

对id进行降序排列显示


也可以按照两个字段进行排序,如果第一个字段就可以排出想要的结果,则忽略第二个字段;但如果第一个字段不能排出想要的结果,则遵守第二字段,甚至是第三个字段。

在上表中发现age有相同的字段,默认是从小到大

root@localhost test>SELECT * FROM user ORDER BY age;

这里如果age相同,则按照id 进行降序排列

root@localhost test>SELECT * FROM user ORDER BY age,id DESC;

注意两张表的异同

5、LIMIT限制查询数量

LIMIT语句限制查询结果的返回数量

[LIMIT  {[offset,] row_count | row_count OFFSET offset }
root@localhost test>SELECT * FROM user LIMIT 2;
按照标的插入顺序(默认显示方式)只显示表中所有记录的前两条记录


如果想显示从第m条记录开始显示共显示n条,怎么办呢?即是显示的是[m,m+n],如在user表中显示第3条、第4条记录


应该显示的第3条和第4条,但是因为SELECT语句中的记录是从0开始的,因此LIMIT后的3表示的SELECT语句中的第4条记录


此外id 号和结果集中的顺没有任何联系,即id排在结果集中的第一个位置,就是0,第二位置就是1...

root@localhost test>SELECT * FROM user ORDER BY id DESC;

root@localhost test>SELECT * FROM user ORDER BY id DESC LIMIT 2,2;


现在来看看INSERT中的用法

INSERT [INFO] table_name SET col_name ={expr|DEFAULT},... 

此方法可以使用子查询(SubQuery)

root@localhost test>CREATE TABLE test2(
    -> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    -> usernaem VARCHAR(20)
    -> );

这里首先创建一张新表,把user表中年龄大于30 的记录写入到test2表中

root@localhost test>insert test2 select username from user where age >= 30;

因为虽然表test2中记录数据的列只有username,但是实际上还有一列id列,因此做如下修改

root@localhost test>insert test2(usernaem) select username from user where age >= 30;


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值