SQL笔记(一)
检索关键字
selec:
select后面跟着列名,检索某列的数据,如果select后面是*则检索整张表
from:
from后跟着表明,表示从哪一张或几张表中查询出来的数据
检索不同的值
distinct:
检索出来的值具有唯一性,也就是去重,放在select后面
select distinct 列名
from 表名;
限制结果
top:
top关键字是用来限制输出结果输出前几行的,放在select后面
select top 行数 列名
from 表名;
数据排序
order by:
order by是对数据进行排序的语句,order by后接列名.
注意!order by是要在select句子中的最后一条数据,如果不是在最后一条,数据排序将会错误
select 列名
from 表名
order by 列名;
order by 还可以对列位进行排序,如果第一列的数据相同则通过第二列数据进行排序
select 列名1,列名2,列名3
from 表名
order by 2,3;
对第二列和第三列进行排序
指定方向排序
desc:
desc放在order by 列名的后面,可以进行反向排序
select 列名
from 表名
order by 列名 desc;
数据过滤
使用WHERE句子
在SELECT语句中,数据根据WHERE子句中指定的条件进行搜索过滤.WHERE子句在表名(FROM子句)之后给出
SELECT 列名
FROM 表名
WHERE 过滤条件
WHERE子句操作费
操作符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
!< | 不小于 |
> | 大于 |
>= | 大于等于 |
!> | 不大于 |
BETWEEN | 在指定的两个值之间 |
IS NULL | 为NULL值 |
检查单个值
例:检查小于10的值
SELECT 列名
FROM 表名
WHERE 列名 < 10;
不匹配检查
例:查询不等于10的值
SELECT 列名
FROM 表名
WHERE 列名 <>10
SELECT 列名
FROM 表名
WHERE 列名 !=10
范围值检查
要检查某个范围的值可以使用BETWEEN操作符,语法与其他子句的操作有点不同,BETWEEN需要两个值
例:查询5到10之间的值
SELECT 列名
FROM 表名
WHERE 列名 BETWEEN 5 AND 10;
在使用BETWEEN时必须知道两个值—所需范围低端值和所需范围高端值,这两个值必须用关键字AND进行分割
空值检查
空值就是NULL
检查是否为空值不能用 = NULL来检查,要用IS NULL来检查
SELECT 列名
FROM 表名
WHERE 列名 IS NULL;
高级数据过滤
组合WHERE子句
AND操作符
要通过布置一个列进行过滤,可以使用AND操作符给WHERE子句附加条件
SELECT 列名A,列名B
FROM 表名
WHERE 列名A > 10 AND 列名B < 5;
OR操作符
OR操作符与AND操作符正好相反,它指DBMS检索匹配满足任意一条件的行,两个条件满足一个即可
例:
SELECT 列名A,列名B
FROM 表名
WHERE 列名A > 10 OR 列名B < 5;
求值顺序
WHERE语句中可以包含任意数量的AND和OR操作符,允许量两者结合进行复杂的高级过滤,在AND和OR一起使用的时候,AND的优先级更高一些
SELECT *
FROM 表名
WHERE 列名A > 10 OR 列名B <> 5 AND 列名C ='3'
如果想让OR优先执行可以用小括号
SELECT *
FROM 表名
WHERE (列名A > 10 OR 列名B <> 5) AND 列名C ='3'
IN操作符
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配
IN取一组由都好分割,括在小括号中的合法值.
SELECT *
FROM 表名
WHERE 列名A IN ('XXX','YYY')
tips:在SQL语句中IN和OR的功能是相同的,只是写法不一样
NOT操作符
WHERE子句中的NOT操作符有且只有一个功能,那就是否定后面所跟的任何条件.NOT操作符不仅可以放在要过滤的列的后面,还可以放在要过滤的列前.
SQLECT *
FROM 表名
WHERE NOT 列名A = 'XXX'