5.使用Mysql查询并排序数据(通配符)

1.排序检索数据

1.1排序数据

## 子句
    SQL语句由子句构成,有些子句是必需的,而有的是可选的。
    一个子句通常由一个关键字和所提供的数据组成,比如select语句的FROM子句。
## 使用ORDER BY子句可以明确排序所检索的数据
    SELECT studentName FROM student ORDER BY studentName;   (以字母顺序进行排序) 
## 按多个列排序 
    检索所有列并首先按年龄,最后再按照name排序
    SELECT * FROM student ORDER BY age,studentName;
## 指定排序方向
    排序分为升序(ASC)和降序(DESC)升序为默认,如果要降序排序,必须使用DESC关键字。
    SELECT * FROM student ORDER BY age DESC;                (年龄从大到小排列)
## 多个列排序
    SELECT * FROM student ORDER BY age DESC,studentName;     
    注意: DESC关键字只应用到位于其前面的列名,在上例中,只有age指定desc,name不指定还是默认升序
## 在多个列上指定排序
    如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。

2.过滤数据

2.1使用WHERE子句

## 在select中数据根据WHERE子句中指定的搜索条件进行过滤
    检查一个列是否有指定值
    SELECT * FROM student WHERE age=17;
## WHERE子句的位置
    WHERE子句跟在表名FROM子句后,在同时使用OEDER BY和WHERE子句时,因该让ORDER BY位于WHERE之后。

2.2WHERE子句操作符

## 上述说明了一个列是否包含特定的值,MySQL支持以下列出的所有条件操作符:
    操作符            说明
      =              等于
      <>             不等于
      !=             不等于
      <              小于
      >              大于
      <=             小于等于
      >=             大于等于
      BETWEEN        在指定的两个值之间
## mysql在执行检索时默认不区分大小写
## 不匹配检查
    检索年龄不是17岁的学生
    select * from student WHERE age <> 17;
## 范围值检查
    检索年龄16~18之间的学生,包括16,18
    SELECT * FROM student WHERE BETWEEN 16 AND 18
## 空值检查
    在一个列不包含值时,称为空值NULL。
    NULL: 无值,它与0 ,空字符串,空格不同。
    
    1.检索家庭住址为NULL的学生
    SELECT * FROM student WHERE address IS NULL
    2.反之,不为NULL
    SELECT * FROM student WHERE address  IS NOT NULL

3.数据过滤

3.1组合WHERE子句

## MySQL允许给出多个WHERE子句如: AND OR
## 操作符:用来联结或改变WHERE子句中的子句关键字,也称为逻辑操作符。

3.1.1 AND操作符

## 为了通过不止一个列过滤,可使用AND操作符给WHERE子句添加条件
    检索年龄等于17并且姓名是张三的学生信息
    SELECT * FROM student  WHERE age=17 AND studentName='张三';

3.1.2 OR操作符

## OR操作符匹配任意条件
    检索年龄等于17或者性别是张三的学生信息
    SELECT * FROM student WHERE age=17 OR studentName='张三';

3.1.3 计算次序

## 示例
    SELECT * FROM student where age>17 OR gradeId=1 AND studentName='张三';
    上述示例会先过滤AND操作符,所以此时的OR就没有任何意义
    计算次序: AND——OR
## 解决方法
    SELECT * FROM student where (age>17 OR gradeId=1) AND studentName='张三';    

3.2 IN操作符

## IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配
    检索学号是10000或者10001的
    SELECT * FROM student WHERE studentNo IN(10000,10001);
## IN 操作符和OR 的关系
    其实IN操作符和OR实现的功能是一样的,不满足都不匹配,满足一个匹配一个,全部满足全部匹配.
## 那为什么还要使用IN操作符呢
    1.IN的语法更清楚更直观
    2.在使用IN时,计算的次序比较容易管理
    3.IN操作符比OR执行快
    4.IN的最大优点是可以包含select语句

3.3 NOT 操作符

## NOT操作符否定之后的任何条件
    检索除了学号为10000和10001的学号都显示
    SELECT * FROM student WHERE studentNo NOT IN(10000,10001);

4.用通配符进行过滤

4.1 LIKE操作符

## LIKE操作符
     要想搜索某个包含指定文本的数据,必须使用通配符,但使用通配符的前提是必须使用LIKE 操作符.
## 通配符
     用来匹配值的一部分的特殊字符.

4.1.1 百分号(%) 通配符

## %表示任何字符出现的任意次数
    1.将检索任意以张开头的姓名
    SELECT * FROM student WHERE studentName LIKE '张%';
    2.检索包含任何位置包含三的位置
    SELECT * FROM student WHERE studentName LIKE ='%三%';

4.1.2下划线 (_) 通配符

## 下划线的用途与%一样,但它只匹配单个字符而不是任意
    检索姓张并且两个字的
    SELECT * FROM student WHERE studentName  LIke '张_' 

4.2使用通配符的技巧

## 不要过度使用通配符
## 仔细注意通配符的位置,如果放错地方可能不会返回想要的数据
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值