SQL语法手册

主要参考:

主要结构:

SELECT select_list 
[ INTO new_table ] 
FROM table_source 
[ WHERE search_condition ] 
[ GROUP BY group_by_expression ] 
[ HAVING search_condition ] 
[ ORDER BY order_expression [ ASC | DESC ] ] 
LIMIT number

查询:

SELECT

用途:

从指定表中取出指定的列的数据。

语法:

SELECT column_name(s) FROM table_name
SELECT * FROM table_name

Top

用途:

选取前n行。

语法:

-- 选取前50%行
SELECT TOP 50 PERCENT * FROM table_name
-- 选取前5行
SELECT TOP 5 * FROM table_name

Distinct

用途:

DISTINCT 关键字被用作返回唯一的值(去重)。

语法:

SELECT DISTINCT column-name(s) FROM table-name

Where

可以在WHERE中使用的运算符

=, <>, >, <, >=, <=
-- 在某些 SQL 的版本中不等号 < > 能被写作为 !=

BETWEEN value1 AND value2
AND, OR, NOT

LIKE '%g'  --以g结尾,‘%’为通配符
通配符
通配符 描述
% 一个或多个字符
- 一个字符
[charlist] 字符列表中的任何一个字符
[^charlist] 或者 [!charlist] 任何一个非列表中字符

Alias

用途:

可用在表、结果集或者列上,为它们取一个逻辑名称。

语法:

-- 给列取别名
SELECT column AS column_alias FROM table
-- 给表取别名
SELECT column FROM table AS table_alias

排序:

Order by

例子:

SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC

分组:

Group by

用途:

对结果集进行分组,常与汇总函数一起使用。

语法:

SELECT column,SUM(column) FROM table GROUP BY column

Having

用途:

指定群组或汇总的搜寻条件。

语法:

SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition value

HAVING 通常与 GROUP BY 子句同时使用。不使用 GROUP BY 时,HAVING 则与 WHERE 子句功能相似.

拼接:

Join

用途:

多个表按行拼接。

语法:

SELECT field1, field2, field3
FROM first_table
[ INNER | LEFT | RIGHT ] JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
  • INNER JOIN: 返回的结果集是两个表中所有相匹配的数据。
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 关键字会从左表和右表那里返回所有的行。

UNION 和 UNION ALL

用途:

用于合并两个或多个 SELECT 语句的结果集.

语法:

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

修改

Insert Into 插入
Update 更新表中原有数据
Delete 删除表中数据
Create TABLE 创建表
ALTER TABLE table_name ADD column_name datatype 添加列
ALTER TABLE table_name DROP COLUMN column_name 删除列
Drop TABLE 删除biao

函数

count 统计行的数量
sum 求和,已忽略NULL值
avg 平均值
max, min, abs, ceil, floor, sign 数学函数
sin, sinh, cos, cosh, tan, tanh, exp, log, power, sort,

窗口函数

参考链接:

  1. https://prestodb.io/docs/current/functions/window.html
  2. http://yugouai.iteye.com/blog/1908121
  3. http://dwgeek.com/hadoop-hive-analytic-functions-examples.html/
  4. https://blog.csdn.net/elimago/article/details/2656387
  5. http://www.aboutyun.com/thread-12848-1-1.html

LAST_VALUE: 取分组内排序后,截止到当前行,最后一个值。若要让窗口是整个组,需要指定窗口子句,以下代码指定了整个分组作为分析窗口。

select
last_value(xxx) over(partition by xx order by x rows between unbounded preceding and unbounded following) as name
from T

时间函数(presto)

string to bigint timestamp:

cast(to_unixtime(date_parse(str, '%Y-%m-%d %T')) as bigint)

  转载请注明: 石锅拌饭 SQL语法手册

 上一篇
Java笔记 Java笔记
主要参考: java教程 注意数据类型和变量: 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如: (int)23.7 == 23; (int)-45.89f == -45 java中默认声明的小数是do
2018-12-04
下一篇 
一个有关分解质因数的面试题 一个有关分解质因数的面试题
问题:给定两个字符串s、m,初始长度都为1。定义两种操作: m = s, s = 2s s = s + m 问给定长度L时,最少要经过多次操作1和2,才能让s的长度为L。 解题思路:我们可以发现,无论执行多少个操作1和操作2都可以,
2018-12-04
  目录