常用SQL语句和语法汇总

近几年数据库发挥了越来越重要的作用,这其中和大数据、数据科学的兴起有不可分割的联系。学习数据库,可以说是每个从事IT行业的必修课。你学或不学,它就在那里;你想或不想,你都得学。

大一的时候,我选了一门名为《Android应用程序开发》的选修课。那个时候啥都不懂,就感觉这个名字比较高端,然后就去了。学习一学期,也就是在电脑上装上了Android应用程序的开发环境。由于我的笔记本太撇,每次运行Android虚拟机就会卡的要死。好吧,我承认最后期末考试我挂了,很悲痛的经历,选修课竟然也会挂(其实主要是我太菜,没有认真学)。

那个老师其实挺好的,教得很认真,只是我没有认真听(悔恨中…)。我记得有次一个同学提问,问他如果报考计算机三级的话,建议报考哪一门?(当时计算机三级一共有5个种类)。那个老师就说建议报考三级数据库技术,因为数据库技术最有前景。我现在是相当的佩服那个老师,他自己从事的Android开发,让学生学数据库。那应该算是我第一次接触数据库这种东西,从此对它念念不忘(论一个老师对学生的影响力!)

扯远了,飞回来~~~

创建数据库

SQL常用规则0

数据库的名称只能使用小写字母

关系数据库以行为单位读写数据

SQL根据功能不同可以分为三类,其中使用最多的是DML(数据操纵语言)

SQL语句以分号(;)结尾

SQL不区分关键字的大小写,但是约定俗成的写法是:关键字大写、表名的首字母大写、其余(列名等)小写

字符串和日期常数需要使用单引号(’)括起来

数字常数无需加注单引号

SQL语句的单词之间需要使用半角空格或换行符来进行分割

表的创建

SQL常用规则1

数据库名称、表名和列名由字母、数字和下划线组成

名称必须以字母开头

名称不能重复

表的删除

表定义的更新(添加列)

表定义的更新(删除列)

列的查询

查询出表中的所有列

根据WHERE语句来选择记录

SQL常用规则2

SQL语句可以使用AS关键字为列设定别名,设定汉字别名时需要使用双引号(’’)括起来

在SELECT语句中可以使用DISTINCT来删除重复行

WHERE子句要紧跟在FROM子句之后

SQL语句的注释分为单行注释和多行注释,单行注释书写在“—”之后,多行注释书写在“/”和“/”之间

SELECT 子句中可以使用常数或者表达式

字符串类型的数据原则上按照字典顺序进行排列,不能与数字的大小顺序混淆

希望选取NULL的记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL时,需要在条件表达式中使用IS NOT NULL运算符。

NOT 运算符用来否定某一条件,但是不能滥用

多个查询条件进行组合时,需要使用AND运算符或者OR运算符。AND运算符的优先级高于OR运算符,想要优先执行OR运算符可以使用括号。

SQL中的逻辑运算被称为三值逻辑(真、假、不确定)

使用GROUP BY 子句对表进行分组

使用WHERE子句和GROUP BY子句进行汇总处理

使用HAVING来指定分组的条件

ORDER BY子句

SQL常用规则3

COUNT(*)会得到包含NULL的数据行数,而COUNT()会得到NULL之外的数据行数

聚合函数会将NULL排除在外,但是COUNT(*)例外。

MAX/MIN函数几乎适用于所有数据类型的列,SUM/AVG只适用于数值类型的列

想要计算值得种类时,可以在COUNT函数前使用关键字DISTINCT

聚合键中包含NULL时,在结果中会以不确定(空行)的形式表现出来

使用GROUP BY 子句时,SELECT子句中不能出现聚合键之外的列名

在GROUP BY子句中不能使用SELECT子句中定义的别名

只有在SELECT子句、ORDER BY子句和HAVING 子句中能够使用聚合函数,WHERE子句中不能使用聚合函数

HAVING子句要写在GROUP BY 子句后面

通常情况下,为了得到相同的结果,将条件写在WHERE子句中要比写在HAVING子句中的处理速度更快

ORDER BY子句通常写在SELECT语句的末尾

排序键包含NULL时,会在开头或者末尾进行汇总

在ORDER BY子句中可以使用SELECT子句中定义的别名

在ORDER BY子句中可以使用SELECT子句未使用的列和聚合函数

SQL语句的书写顺序(重点!!!)INSERT 语句

保留数据表,仅删除全部数据行的DELETE语句

删除部分数据行的搜索型DELETE语句

改变表中数据的UPDATE语句

更新部分数据行的搜索型UPDATE

事务的语法

SQL常用规则4

原则上,执行一次INSERT语句会插入一行数据

省略INSERT语句中的列名,就会自动设定为该列的默认值(没有默认值会设定为NULL)

DELETE语句到的删除对象时记录(行)

可以通过WHERE子句指定对象条件来删除部分数据

事务是需要在同一处理单元中执行的一系列更新处理的集合

创建视图

删除视图

SQL常用规则5

表中存储的是实际数据,而视图中保存的是从表中提取数据所使用的SELECT语句

应该将经常使用的SELECT语句做成视图

定义视图时不要使用ORDER BY子句

视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新

子查询作为内层查询会首先执行

标量字查询就是返回单一值的子查询

在细分的组内进行比较时,需要使用关联子查询

ABS函数(求绝对值)

MOD函数(求余)

ROUND函数(四舍五入)

函数(拼接)

LENGTH函数(求字符串长度)

LOWER函数(小写转换)

REPLACE函数(字符串的替换)

SUBSTRING函数(字符串的截取)

UPPER函数(大写转换)

CURRENT_DATE函数(当前日期)

CURRENT_TIME函数(当前时间)

CURRENT_TIMESTAMP函数(当前日期和时间)

EXTRACT函数(截取日期元素)

CAST函数(类型转换)

COALESCE函数(将NULL转换为其他值)

CASE 表达式

SQL常用规则6

谓词就是返回值为真值的函数

通常指定关联子查询作为EXIST的参数

作为EXIST参数的子查询中经常会使用SELECT *

CASE表达式中的END不能省略

SQL常用规则7

集合运算会除去重复的记录,但可以使用ALL选项,保留重复行

进行联结时需要在FROM子句中使用多张表

进行内联结时必须使用ON子句,并且要书写在FROM 和WHERE之间

使用联结时SELECT子句中的列需要按照“.”的格式进行书写

外联结使用LEFT、RIGHT来指定主表,使用两者所得到的结果完全相同

窗口函数

SQL常用规则8

窗口函数兼具分组和排序两种功能

通过PARTITION BY 分组后的记录集合称为“窗口”

专用窗口函数无需使用参数

原则上,窗口函数只能在SELECT子句中使用

超级分组记录默认使用NULL作为聚合键

ROLLUP可以同时得出合计和小计

使用GROUPING函数能够简单分辨出原始数据中的NULL和超级分组记录中的NULL

可以把CUBE理解为将使用聚合键进行切割的模块堆积成的一个立方体

每天学习一点点,每天进步一点点。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171227G0CNLQ00?refer=cp_1026

扫码关注云+社区