ANSI标准
最早 ANSI X3.135 October 16, 1986 INFORMATION SYSTEMS - DATABASE LANGUAGE - SQL 目前最新的 ISO/IEC 9075-1:2016 Information technology — Database languages — SQL
直观理解
数据库在早期发展阶段,有各种类型,比如网状数据库。后来关系型数据库占据主流,而对应的,SQL是关系数据库的主要操作语言,其目的是通过类似自然语言的方式直接去问数据库要数据。
当然随着大数据技术的兴起,大量的NOSQL数据库也开始得到应用,对于此类数据的获取可能通过其他方式(比如API)。但是总的来说,SQL是数据处理人员使用范围最广,沟通最为基础的技术。很多新技术也会为了获得最大的影响力而提供SQL层面的转义和兼容(如HIVE)。
不同的数据库厂家,对于ANSI标准的兼容程度不尽相同,但是90%以上的功能都是相通的。数据库主要由表(table)构成,表由字段(column)构成。在关系数据库的概念里面,表的每一行代表一个实体(entity),行的每一列(column)代表一个属性。列在存储层面支持不同的数据类型,但是大体上分为:字符串,数字,日期(本质上也是数字),近些年随着数据的负责,部分数据库支持一些复杂数据类型比如:set,list,json等。
SQL的分类
总的来说,SQL分为3类,即:DDL,DML,DCL.其中也有人单独把SELECT预计拿出来分类的。但是大体上,业界一般是这么分的。
DDL
我们知道数据放在数据库内,是以表的形式存放的,一个表有其结构schema(即columns的类型和顺序,以及其他物理特性比如存储分区等)。
DDL sql一般就是用于定义或者修改schema。它一般可以实现创建对象,修改对象,删除对象等工作。在分工上,这部分权限一般归DBA所有。
DML
DML是整个sql内最丰富的最基础的能力,其核心功能就是获取数据,或者修改数据。我一般喜欢把select语句归类为DML
DCL
作为整个IT系统最核心的数据存储模块,安全和权限必然是重中之重,DCL语句一般用于控制谁有权限做什么事情。
关键字
SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词。
如 create,alter,table等,具体每个数据库都会给出自己的关键字列表。我们在创建对象的时候不可以使用这些关键字。
SQL 的基本书写规则
以分号(;)结尾
一条SQL 语句可以描述一个数据库操作。
在RDBMS 当中,SQL 语句也是逐条执行的(从上往下)。
不区分大小写
SQL 不区分关键字的大小写 。例如,不管写成SELECT 还是select,解释都是一样的。表名和列名也是如此。但是插入到表中的数据是区分大小写的(一般是指字符串类型数据)。
在某些数据库,可以通过使用一些特殊字符,如””,``来强行指定一些对象名的大小写(case specification)
单词分隔
SQL 语句的单词之间需使用半角空格或换行符来进行分隔。连在一起解释器会无法区分。
空格可以有多个。
注释
注释对SQL 的执行没有任何影响。因此,无论是英文字母还是汉字都可以随意使用。
注释的书写方法有如下两种。
● 1行注释
书写在“–”之后,只能写在同一行。
● 多行注释
书写在 /* 和 */ 之间,可以跨多行。
参考学习网站:
http://xuesql.cn/
https://www.liaoxuefeng.com/wiki/1177760294764384/1179613436834240
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Oracle-and-Standard-SQL.html#GUID-330DEBBB-006E-4B35-A516-5C0AEFFE06B9