SELECT语句绝对是SQL里面功能最强大的,FROM子句是一条必要的子句,必须总数与SELECT联合使用。
SELECT 语句里有4个关键字最有价值,如下所示:
SELECT
FROM
WHERE
[ORDER BY columns]
[GROUP BY columns]
[HAVING conditions]
1.SELECT语句
SELECT [*|ALL|DISTINCT COLUMN1,COLUMN2]
FROM TABLE1 [,TABLE2];
SELECT之后用于列出字段名称;
DISTINCT语句用于去除重复记录,使结果更简洁。
2.WHERE子句
WHERE子句用于给查询添加条件,去除用户不需要的数据。
WHERE子句里可以有多个条件,他们之间以操作符AND或OR连接。
SELECT [all| * |distinct column1,column2]
FROM table
WHERE [condition1|expression]
[and | OR condition2 | expression2];
3.ORDER BY 子句
order by 子句可以让输出以某种方式进行排序,它能够以用户指定的列表格式对查询结果进行排序。
order by 子句的默认次序是升序(ASC),字母值是从A到Z,数字值是从1到9,关键字DESC表示降序排列。
SELECT [all | * |distinct column1, column2]
from table1
where [condition1 | expression1 ]
[and | OR condition2 | expression2 ]
ORDER BY column1 | integer [ASC|DESC]
SQL排序是基于字符的ASCII排序,数字0—9会按其字符值进行排序,位于字母A到Z之前。
ORDER BY 子句里的字段可以缩写为一个整数,这个整数取代了实际的字段名称(别名),表示字段在关键字SELECT之后列表里的位置。
如:order by 1,3 表示先对第一个字段进行排序,再对第三个字段进行排序。
注:一般情况下,不对查询结果进行排序,因为完成这项工作需要额外的开销,这样在数据量较大的情况下会很耗费系统资源,也需要较长的时间。
4.GROUOP BY 条件子句
根据指定的列将表中数据分成多个组后进行汇总。可以根据表中某一列或某几列对表中数据进行分组,多列之间用逗号分开。
注:如果在查询中既有WHERE子句,又有GROUP BY 子句,那么系统会先查询满足WHERE条件的记录,然后再将这些记录按照GROUP BY 子句分组,也就是说WHERE子句先生效。
5.HAVING条件子句
通常与GROUP BY 子句一起使用,在完成分组结果的统计后,可以使HAVING子句对分组的结果进行进一步的筛选。
HAVING子句的表达式之间用关键字AND和OR分割,搜索条件与组相关。
注:在SELECT语句中,GROUP BY 子句,HAVING 子句,和WHERE 子句同时存在时,先WHERE子句,再GROUP BY 子句,最后HAVING子句。
6.大小写敏感性
一般来说,SQL的命令和关键字是不区分大小写的;而排序规则对大小写较敏感,My SQL和Microsoft SQL Server在进行数据匹配时,系统会忽视数据的大小写,Oracle默认是大小写敏感的。
7.统计表里的记录数量
COUNT()函数可以了解到表里某个字段里值的数量。
SELECT COUNT(*) FROM table_name;
COUNT函数使用一对圆括号来指定目标字段,或是一个星号表示统计表里的全部记录。
SELECT COUNT (DISTINCT PROD_ID) FROM PRODUCTS_TBL;
统计表中特定列所出现的值的种类数。
8.从另一个用户表里选择数据
要访问另一个用户的表,必须拥有相应的权限,否则就不能进行访问。在SELECT语句里要访问另一个用户的表,必须在表的名称之前添加规划名或相应的用户名。
SELECT EMP_ID FROM SCHEMA.EMPLOYEE_TBL;