http://www.2cto.com/database/201304/205333.
html
SQL语言介绍
SQL(Structured Query language)是一种结构化的查询语言,它是实现与关系数据库通信的标准语言。SQL标准是由ISO(国际标准化组织)和ANSI(美国国家标准化组织)共同制定的,从1983年开始到目前经历的标准主要有SQL86、SQL89、SQL92、SQL99、SQL2003。
不同厂商的SQL产品及其关系数据库管理系统在SQL的实现上大部分是与SQL标准相兼容的,但是它们也并不是完全按照这个标准来实现,因此不同厂商生产的关系数据库系统在SQL的实现上还是有所差异的。另外,不同厂商生产的关系数据库系统对都对SQL做了不同程度的扩展,目前流行的对标准SQL的扩展版本主要有两个,PL/SQL 和Transact-SQL。
PL/SQL是基于 Oracle数据库的通信语言,Oracle公司已经将PL/SQL语言集成到Oracle的服务器中,它可以运行在任何的Oracle开发环境中。
Transact-SQL是基于 Sybase数据库与Microsoft SQL Server数据库中的数据库通信语言。其主要的运行环境是SQL Server Management Studio和SQLCMD。
SQL语句主要包括数据定义语言(DDL)、数据查询语言(DQL)、数据操作语言(DML)、数据控制语言(DCL)和事务控制语言等。
数据定义语言(DDL):主要用于创建、修改和删除数据库对象(数据表、视图、索引等),包括CREATE、ALTER、DROP这3条语句。
数据查询语言(DQL):主要用于查询数据库中的数据。其主要语句为SELECT语句。SELECT语句是SQL语言中最重要的部分。SELECT语句中主要包括5个子句,分别是FROM子句,WHERE子句,GROUP BY子句,HAVING子句和WITH子句。
数据操作语言(DML):主要用于更新数据库里数据表表中的数据,包括INSERT、UPDATE、DELETE三条语句。其中,INSERT语句用于向数据库中插入数据;UPDATE语句用于修改数据库中的数据;DELETE语句用于删除数据库中的数据。
数据控制语言(DCL):主要用授予和回收访问数据库的某种权限。包括GRANT、REVOKE等语句。其中,GRANT语句用于向用户授予权限;REVOKE语句向用户收回权限。
事务控制语言:英文全拼为Transactional Control Statement。主要用于数据库对事务的控制,保证数据库中数据的一致性,包括COMMIT、ROLLBACK等语句。其中,COMMIT用于事务的提交;ROLLBACK用于事务的回滚。
SQL语言的特点:简单易学,语言结构简便、非过程化语言、采用集合操作方式、SQL语言能够嵌入到高级语言中。
常用数据类型
在创建数据表时,除了需要创建数据表的表名、列名之外,还需要为数据表中的每一列选择合适的数据类型。在数据库中,常用的数据类型包括整数类型、浮点类型、数值类型、日期时间类型、字符类型、二进制类型等。不同的数据库中,数据类型的定义也不完全相同。这一节就以Oracle数据库、MySQL数据库和Microsoft SQL Server数据库为例,介绍在这3种数据库中,常用的数据类型定义及其使用方法。
整数类型与浮点类型
整数类型的数据可以是正整数,也可以是负整数。在MySQL数据库中,这些整数类型还可以带一个参数用来表示数据最大显示的宽度。例如INT(4)表示显示数据列的列宽度为4。使用参数并不影响整数类型的取值范围。这个参数是可选的。
在MySQL数据库中,浮点类型主要包括FLOAT和DOUBLE。其中,FLOAT表示单精度浮点数,DOUBLE表示双精度浮点数。
在MySQL数据库中,这些浮点数类型还可以包括两个参数。其中,参数m表示存储数据的有效数字的位数;参数n表示小数点后的位数。
在Microsoft SQL Server数据库中,也可以使用TINYINT、SMALLINT、INT和BIGINT存储整型数据,其取值范围与表表2.1中TINYINT、SMALLINT、INT和BIGINT类型的取值范围相同。
浮点类型数据可以定义为REAL类型和FLOAT类型。其中,REAL类型占用4个字节的存储空间,可以精确到小数点后7位,其取值范围为-2.4E38到2.4E38;FLOAT类型占用8个字节的存储空间,可以精确到小数点后15位,其取值范围为-2.7E308到2.7E308。
数值类型
在Oracle数据库中。可以使用NUMBER(m,n)来定义数字类型的数据。其中,参数m表示存储数据的有效数字的位数;参数n表示小数点后的位数。例如NUMBER(5,2),第一个参数5表示显示的数字总位数为5,第二个参数表示小数点后的数字个数。如果把数据122.456插入到定义为NUMBER(5,2)的数据列中,则实际放入到该列的数据为122.46。
字符类型
在数据库中,字符类型是用来存储字符串值的。不同的数据库,字符类型的定义也不完全相同,下面以Oracle数据库、MySQL数据库以及Microsoft SQL Server数据库为例,介绍在这3种数据库中字符类型不同的定义方法。
1.Oracle数据库
CHAR或者是VARCHAR2
2.MySQL数据库
CHAR、VARCHAR、TEXT 、 MEDIUMTEXT LONGTEXT
3.Microsoft SQL Server数据库
CHAR,VARCHAR、TEXT
注意:使用CHAR定义的列存储的字符串所占空间是不可变的,使用VARCHAR2定义的列存储的字符串所占空间是可变的。
日期与时间类型
在数据库中,日期与时间类型是用来存储日期和时间值的。不同的数据库,日期与时间类型的定义也不完全相同,下面以Oracle数据库、MySQL数据库以及Microsoft SQL Server数据库为例,介绍在这3种数据库中日期与时间类型不同的定义方法。
1.Oracle数据库
在Oracle数据库中可以使用DATE、TIMESTAMP等形式定义日期时间类型的数据。其中DATE类型在英文版本中日期的默认格式为DD-MON-YY的形式。例如,10-SEP -09;在中文版本中的默认日期格式为'日-月-年',例如,10-9月-09。
TIMESTAMP类型在英文版本中日期的默认格式为DD-MON-YY HH.MM.SS.AM。例如,10-SEP -09 12.22.000000 PM。在中文版本中的默认日期格式为'日-月-年 时、分、秒',例如,10-9月-09 12.22.000000 下午。它除了包含时、分、秒之外,还包含了秒的小数部分。秒值精确到小数点后6位。
2.MySQL数据库
DATE类型的数据默认格式为YYYY-MM-DD,例如,2009-08-10
TIME类型的数据默认格式为HH:MM:SS,例如,18:13:23
DATETIME类型的数据默认格式为YYYY-MM-DD HH:MM:SS,例如,2009-08-10
SQL语言介绍
SQL(Structured Query language)是一种结构化的查询语言,它是实现与关系数据库通信的标准语言。SQL标准是由ISO(国际标准化组织)和ANSI(美国国家标准化组织)共同制定的,从1983年开始到目前经历的标准主要有SQL86、SQL89、SQL92、SQL99、SQL2003。
不同厂商的SQL产品及其关系数据库管理系统在SQL的实现上大部分是与SQL标准相兼容的,但是它们也并不是完全按照这个标准来实现,因此不同厂商生产的关系数据库系统在SQL的实现上还是有所差异的。另外,不同厂商生产的关系数据库系统对都对SQL做了不同程度的扩展,目前流行的对标准SQL的扩展版本主要有两个,PL/SQL 和Transact-SQL。
PL/SQL是基于 Oracle数据库的通信语言,Oracle公司已经将PL/SQL语言集成到Oracle的服务器中,它可以运行在任何的Oracle开发环境中。
Transact-SQL是基于 Sybase数据库与Microsoft SQL Server数据库中的数据库通信语言。其主要的运行环境是SQL Server Management Studio和SQLCMD。
SQL语句主要包括数据定义语言(DDL)、数据查询语言(DQL)、数据操作语言(DML)、数据控制语言(DCL)和事务控制语言等。
数据定义语言(DDL):主要用于创建、修改和删除数据库对象(数据表、视图、索引等),包括CREATE、ALTER、DROP这3条语句。
数据查询语言(DQL):主要用于查询数据库中的数据。其主要语句为SELECT语句。SELECT语句是SQL语言中最重要的部分。SELECT语句中主要包括5个子句,分别是FROM子句,WHERE子句,GROUP BY子句,HAVING子句和WITH子句。
数据操作语言(DML):主要用于更新数据库里数据表表中的数据,包括INSERT、UPDATE、DELETE三条语句。其中,INSERT语句用于向数据库中插入数据;UPDATE语句用于修改数据库中的数据;DELETE语句用于删除数据库中的数据。
数据控制语言(DCL):主要用授予和回收访问数据库的某种权限。包括GRANT、REVOKE等语句。其中,GRANT语句用于向用户授予权限;REVOKE语句向用户收回权限。
事务控制语言:英文全拼为Transactional Control Statement。主要用于数据库对事务的控制,保证数据库中数据的一致性,包括COMMIT、ROLLBACK等语句。其中,COMMIT用于事务的提交;ROLLBACK用于事务的回滚。
SQL语言的特点:简单易学,语言结构简便、非过程化语言、采用集合操作方式、SQL语言能够嵌入到高级语言中。
常用数据类型
在创建数据表时,除了需要创建数据表的表名、列名之外,还需要为数据表中的每一列选择合适的数据类型。在数据库中,常用的数据类型包括整数类型、浮点类型、数值类型、日期时间类型、字符类型、二进制类型等。不同的数据库中,数据类型的定义也不完全相同。这一节就以Oracle数据库、MySQL数据库和Microsoft SQL Server数据库为例,介绍在这3种数据库中,常用的数据类型定义及其使用方法。
整数类型与浮点类型
整数类型的数据可以是正整数,也可以是负整数。在MySQL数据库中,这些整数类型还可以带一个参数用来表示数据最大显示的宽度。例如INT(4)表示显示数据列的列宽度为4。使用参数并不影响整数类型的取值范围。这个参数是可选的。
在MySQL数据库中,浮点类型主要包括FLOAT和DOUBLE。其中,FLOAT表示单精度浮点数,DOUBLE表示双精度浮点数。
在MySQL数据库中,这些浮点数类型还可以包括两个参数。其中,参数m表示存储数据的有效数字的位数;参数n表示小数点后的位数。
浮点类型数据可以定义为REAL类型和FLOAT类型。其中,REAL类型占用4个字节的存储空间,可以精确到小数点后7位,其取值范围为-2.4E38到2.4E38;FLOAT类型占用8个字节的存储空间,可以精确到小数点后15位,其取值范围为-2.7E308到2.7E308。
数值类型
在Oracle数据库中。可以使用NUMBER(m,n)来定义数字类型的数据。其中,参数m表示存储数据的有效数字的位数;参数n表示小数点后的位数。例如NUMBER(5,2),第一个参数5表示显示的数字总位数为5,第二个参数表示小数点后的数字个数。如果把数据122.456插入到定义为NUMBER(5,2)的数据列中,则实际放入到该列的数据为122.46。
字符类型
在数据库中,字符类型是用来存储字符串值的。不同的数据库,字符类型的定义也不完全相同,下面以Oracle数据库、MySQL数据库以及Microsoft SQL Server数据库为例,介绍在这3种数据库中字符类型不同的定义方法。
1.Oracle数据库
CHAR或者是VARCHAR2
2.MySQL数据库
CHAR、VARCHAR、TEXT 、 MEDIUMTEXT LONGTEXT
3.Microsoft SQL Server数据库
CHAR,VARCHAR、TEXT
注意:使用CHAR定义的列存储的字符串所占空间是不可变的,使用VARCHAR2定义的列存储的字符串所占空间是可变的。
日期与时间类型
在数据库中,日期与时间类型是用来存储日期和时间值的。不同的数据库,日期与时间类型的定义也不完全相同,下面以Oracle数据库、MySQL数据库以及Microsoft SQL Server数据库为例,介绍在这3种数据库中日期与时间类型不同的定义方法。
1.Oracle数据库
在Oracle数据库中可以使用DATE、TIMESTAMP等形式定义日期时间类型的数据。其中DATE类型在英文版本中日期的默认格式为DD-MON-YY的形式。例如,10-SEP -09;在中文版本中的默认日期格式为'日-月-年',例如,10-9月-09。
TIMESTAMP类型在英文版本中日期的默认格式为DD-MON-YY HH.MM.SS.AM。例如,10-SEP -09 12.22.000000 PM。在中文版本中的默认日期格式为'日-月-年 时、分、秒',例如,10-9月-09 12.22.000000 下午。它除了包含时、分、秒之外,还包含了秒的小数部分。秒值精确到小数点后6位。
2.MySQL数据库
DATE类型的数据默认格式为YYYY-MM-DD,例如,2009-08-10
TIME类型的数据默认格式为HH:MM:SS,例如,18:13:23
DATETIME类型的数据默认格式为YYYY-MM-DD HH:MM:SS,例如,2009-08-10