第3天-sql基本检索与数据过滤

一、基本查询语句

上一篇中已经学到,sql基本的查询语句形式为:

select select 列名称 from 表名称;

sql语句是不区分大小写的,而且会忽略空格,语句可以一行给出,也可以分成多行。

显然分成多行,且使用大写将关键字与表名列名等区分开更容易阅读和调试。

另外每个sql语句必须以分号结尾。

检索多个列:

SELECT id,name
FROM students;

其中sudents为上一篇中建立的表。

检索全部列:

SELECT *
FROM students;

二、排序检索数据

可使用ORDER BY子句来根据需要排序检索出的数据。

这里有一个子句的概念:

sql语句由子句构成,有的子句是必需的,而有的可选,一个子句通常由一个关键字加上所提供的数据组成。如SELECT和FROM子句。

要注意的是ORDER BY子句的位置:

在指定一条ORDER BY子句时,必须保证它时最后一个sql子句,否则会报错。

按单列排序

SELECT *
FROM students
ORDER BY id;

按多列排序

SELECT *
FROM students
ORDER BY age,id;

这样会首先依据age进行排序,如果有几项的age相同,那么会再依据id排序。

按列位置排序

SELECT *
FROM students
ORDER BY 1;

可以指定使用第几列进行排序,上面的语句指定了第一列。

指定排序方向

对某列指定DESC关键字表明按此列降序排列,相反的ASC关键字表示升序,这是默认的,无须指定。

SELECT *
FROM students
ORDER BY age DESC,id;

三、过滤数据

使用WHERE子句

SELECT id,name
FROM students
WHERE id<10;

上面的语句过滤出id<10的记录。

mariadb中的WHERE子句支持如下操作符:

操作符说明
=等于
!=不等于
<>不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN在指定的两个值之间
IS NULL为NULL值

范围值检查

SELECT *
FROM students
WHERE id BETWEEN 5 AND 10;

使用BETWEEN时必须指定两个值——最小值和最大值,BETWEEN匹配范围内所有的值,包括指定的最小值和最大值。

即上面的语句等价于:

SELECT *
FROM students
WHERE id  id>=5 AND id<=10;

空值检查

SELECT *
FROM students
WHERE id  age IS NULL;

在创建表时,表设计人员可以指定其中的列是否可以不包含值,当一个列不包含值时,称其包含空值NULL。它与包含零值、空字符串或仅仅包含空格不同。

四、高级数据过滤

使用逻辑操作符

上面已经涉及到,AND表示逻辑与,OR表示逻辑或

SELECT *
FROM students
WHERE id  id>=5 AND id<=10;
```
SELECT *
FROM students
WHERE id  id=2 OR id=3;

WHERE子句可以组合任意数量的ANDOR,但一定要注意两者运算优先级不同,sql会先计算AND再计算OR

使用括号来避免这一问题。

IN操作符

IN操作符用来指定条件范围,范围中的每个条件都可以匹配。IN的合法值是由逗号分隔的清单,全部括在圆括号中。

SELECT *
FROM students
WHERE name IN ('xiaoming','xiaohong')
ORDER BY id;

NOT操作符

WHERE子句中的NOT操作符只有一个功能,即否定它之后所跟的条件,相当于逻辑否。

SELECT *
FROM students
WHERE name NOT IN ('xiaoming','xiaohong')
ORDER BY id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值