供应链管理|作为一名程序员,你真的了解SQL吗?

供应链管理|作为一名程序员,你真的了解SQL吗?

对于一名程序员而言 , 数据库是最基本的知识之一 , 但是很多开发者对于数据库的了解仅限于使用上面 , 对于其内部的很多定义和知识 , 并不是十分清楚 , 那么 , 我们就来看一看数据库的一些相关知识吧 。
一、SQL标准有几个版本
SQL(Structure Query Language)结构化查询语言是数据库的核心语言 , 所有的结构化数据库都离不开SQL语言的帮助 , 从诞生到现在 , SQL标准发生了一系列变化 。 其历史沿革如下 。
1986年 , ANSI X3.135-1986 , ISO/IEC 9075:1986 , SQL-86
1989年 , ANSI X3.135-1989 , ISO/IEC 9075:1989 , SQL-89
1992年 , ANSI X3.135-1992 , ISO/IEC 9075:1992 , SQL-92(SQL2)
1999年 , ISO/IEC 9075:1999 , SQL:1999(SQL3)
2003年 , ISO/IEC 9075:2003 , SQL:2003
2008年 , ISO/IEC 9075:2008 , SQL:2008
2011年 , ISO/IEC 9075:2011 , SQL:2011
2016年ISO又对SQL标准做了补充修订 。
二、Catalog和Schema的区别是什么
很多人建了数据库之后 , 就只对表进行操作 , 对于数据库的一些结构一知半解 , 尤其是很多人其实不明白Schema到底是个啥意思 。 下面我们具体来看一看 。
Catalog直译为产品目录或编目 , 包含所有数据库自有的Schema和用户自建的Schema 。
Schema直译为模式 , 可以理解为表空间 , 所有的数据库对象(表、视图、字段等)都包含在Schema里 。
所以对于一个很容易重名的字段 , 例如用户ID , 他的完全限定名称就是catalog名.schema名.表名.用户ID 。 这样就保证了命名不会冲突 。
在SQL标准的规定里面 , Catalog包含Schema , 还包含外部服务器信息、和外部数据封装信息 。 而实际上各大关系数据库厂商并没有严格按照标准来执行 , 而且相互之间有很大差异 。
例如:
在MySQL里面 , 用server instance来取代catalog , 作为数据库的集合 。 而database==schema==catalog , 作为数据表空间 。
在Oracle里面 , server instance== database ==catalog , 而Schema则是数据库里的表空间 , 与用户账户相关联 。
在Postgresql里面 , Server instance == db cluster是一系列数据库的集合 , database==catalog , 是db cluster中的一个独立数据库 , schema则是database中的一个命名空间 , 可以让用户与其它用户的数据区别开来 。 在Postgresql里 , 对一个对象的完全限定是通过database.schema.object来实现的 。
三、SQL语言包括几个类型
SQL语言大家都会写 , 但是其中分成几个部分 , 可能很多人就不是很清楚了 。 尤其是指针控制指令 , 可能一些人在自己的程序员生涯中压根就没接触下 。 下面我们具体来看一看SQL语言包括的几个类型吧 。
1、数据查询语言(DQL: Data Query Language):例如select <字段> from <表> where <条件>
2、数据操纵语言(DML:Data Manipulation Language):例如Insert、Update、Delete
3、事务处理语言(DPL:Transaction Processing Language):例如BEGIN TRANSACTION、COMMIT和ROLLBACK
4、数据控制语言(DCL:Data Control Language):例如Grant、Revoke
5、数据定义语言(DDL:Data Definition Language):例如Create、Drop
6、指针控制语言(Cursor Control Language CCL):例如DECLARE CURSOR、FETCH INTO和UPDATE WHERE CURRENT

四、SQL语言中有几种数据类型
数据类型大家都很清楚 , 但是在标准定义中的数据类型 , 尤其是Interval类型 , 可能很多人就不了解了 。
SQL语言中包含三大类数据类型:预定义数据类型、构造数据类型和自定义数据类型 。
其中预定义数据类型包括7种类型:数值、字符串、二进制串、布尔、日期、间隔、XML 。