作为一名程序员,你真的了解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。
五、Limit关键字是所有数据库通用的吗
Limit关键字是很多人常用的,但是换了数据库,这个关键字还能正常使用吗?答案是否定的。
Limit关键字并不是所有数据库通用的,Sql server选择前n条就是select top n。
六、MySQL里面的utf8字符集是“UTF-8”吗?
很多初学者建数据库的时候,想当然就把字符集指定为utf8了,然后可能就会出现一些乱码问题,在中文互联网界,可能问题更容易出现,为什么呢?
事实上,MySQL里面的utf8编码并不是真正的UTF-8,而另外的utf8mb4才是真正的UTF-8编码,因此使用MySQL或MariaDB的时候,一定要把字符集设置成utf8mb4,否则可能会出现乱码问题。
为什么会出现这个问题吗?原因在于早期MySQL开发的时候,由于节省空间以及效率等问题,将utf8字符集限制为3个字节,而实际最新的UTF-8规范使用1到4个字节,这就导致MySQL的utf8字符集无法兼容4个字节的编码,最后在MySQL 5.5.3以后的版本中,发布了utf8mb4字符集来解决这个问题。所以对于使用者来讲,utf8字符集只用于兼容早期的数据库,而新开发者都应该使用utf8mb4字符集。
以上就是一些数据库的相关知识,大家之前都了解过吗?
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论