SELECT
SELECT 语句用于从数据库中选取数据。
SELECT columnA_name,columnB_name FROM table_name;
选取从表中选取列A和列B两列的数据。
SELECT * FROM table_name;
选取表的所有数据。
一、DISTINCT关键字过滤重复
SELECT DISTINCT 过滤重复结果。
SELECT DISTINCT column_name,column_name FROM table_name;
不重复选取,加上DISTINCT会将一样的结果过滤掉。
二、WHERE子句
WHERE 子句用于提取那些满足指定标准的记录,它选取的是记录。
SELECT column_name,column_name FROM table_name WHERE column_name operator value;
WHERE 子句中的常见的运算符:
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
运算符在比较时,如果是数字字段不需要加‘‘,如果是非数字字段需要加‘‘。
根据运算符的分类大致如下:
1.比较运算符
比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)
SELECT * FROM emp WHERE ename =‘SMITH‘; SELECT * FROM emp WHERE ename!=‘SMITH‘; SELECT * FROM emp WHERE eage=18; SELECT * FROM emp WHERE eage>18;
2.逻辑运算
逻辑运算符包涵:AND(与) OR(或) NOT(非)。
SELECT * FROM emp WHERE sal > 2000 AND sal < 3000; SELECT * FROM emp WHERE sal > 2000 OR ename = ‘SMITH‘; SELECT * FROM emp WHERE NOT sal > 2000;逻辑运算符优先级:()>NOT>AND>OR
3.特殊条件
- 空值判断: IS NULL
SELECT * FROM emp WHERE comm IS NULL;返回空值的列
- BETWEEN ... AND(返回区间之内的值)
SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000;返回区间的值,这个值可以为数字,可以为英文字符,也可以为日期。例如:
SELECT * FROM Websites WHERE name NOT BETWEEN ‘A‘ AND ‘H‘; SELECT * FROM access_log WHERE date BETWEEN ‘2016-05-10‘ AND ‘2016-05-14‘;NOT BETWEEN ...AND(返回不在区间之内的值)
- IN
SELECT * FROM emp WHERE sal IN (5000,3000,1500);返回与()的值相等的列,IN可以规定多个值,=规定一个值
- 模糊查询LIKE
SELECT * FROM emp WHERE ename LIKE ‘M%‘;% 表示多个字值,_ 下划线表示一个字符:
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
%M% : 表示查询包含M的所有内容。
%M_ : 表示查询以M在倒数第二位的所有内容。
三、ORDER BY
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ASC升序,DESC降序。默认为降序。ASC升序,越来越大。
SELECT column_name,column_name FROM table_name ORDER BY columnA_name,columnB_name ASC|DESC;
依次根据列B排序,在列B的基础上再排列A。
四、TOP关键字, LIMIT, ROWNUM从句
SELECT TOP 子句用于限制要返回的记录的数目。
注释:并非所有的数据库系统都支持 SELECT TOP 子句。
SQL Server / MS Access 语法
SELECT TOP number|percent column_name(s) FROM table_name;SQL Server中可以使用百分比显示:浮点型数值+Percent
MySQL 语法
SELECT column_name(s) FROM table_name LIMIT number;Oracle 语法
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;