1.1.3 基本知识 一、SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 paper51.com
二、SQL数据库数据体系结构 SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。 copyright paper51.com 三、SQL语言的组成 paper51.com 1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。 2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。 3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。 4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。 5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。 6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。 内容来自www.paper51.com
四、对数据库进行操作 SQL包括了所有对数据库的操作,主要是由4个部分组成: 内容来自www.paper51.com 1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。 2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。 3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。 4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。 1.1.4 基础语法 1、数据类型 内容来自论文无忧网 www.paper51.com 数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQL Server 提供了 25 种数据类型: http://www.paper51.com (1)二进制数据类型 http://www.paper51.com 二进制数据包括 Binary、Varbinary 和Image. paper51.com
Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。 内容来自论文无忧网 www.paper51.com Binary[(n)] 是n位固定的二进制数据。其中,n的取值范围是从1到8000。其存储的大小是n+4个字节。 paper51.com
Varbinary[(n)]是n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储内容的大小是 n + 4个字节,不是 n 个字节。 copyright paper51.com
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。 内容来自论文无忧网 www.paper51.com (2)字符数据类型 http://www.paper51.com 字符数据的类型包括 Char,Varchar和 Text。 内容来自www.paper51.com 字符数据是由任何字母、符号和数字任意组合而成的数据。 内容来自论文无忧网 www.paper51.com Varchar 是变长字符数据,其长度不超过 8KB。Char 是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text 数据类型存储。例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 用Text 数据类型存储在 SQL Server 中。 http://www.paper51.com (3)Unicode 数据类型 内容来自www.paper51.com
Unicode 数据类型包括 Nchar,Nvarchar 和Ntext。 http://www.paper51.com
在 Microsoft SQL Server 中,传统的非Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server 安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。 内容来自论文无忧网 www.paper51.com 在 SQL Server 中,Unicode 数据以 Nchar、Nvarchar 和Ntext 数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,这时最多可以存储 4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。 paper51.com (4)日期和时间数据类型 内容来自论文无忧网 www.paper51.com 日期和时间数据类型包括 Datetime 和 Smalldatetime两种类型。 http://www.paper51.com (5)数字数据类型 内容来自论文无忧网 www.paper51.com 数字数据类型只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数。 内容来自论文无忧网 www.paper51.com 整数由正整数和负整数组成,例如:39、25、0、-2 和 33967。在Micrsoft SQL Server中,整数存储的数据类型是Int,Smallint和Tinyint。Int数据类型存储数据的范围大于Smallint 数据类型存储数据的范围,而Smallint数据类型存储数据的范围大于Tinyint数据类型存储数据的范围。使用Int存储数据的范围是从-2147483648到2147483647(每一个值要求4个字节存储空间)。使用 Smallint 数据类型时,存储数据的范围从-32768到32767(每一个值要求2个字节存储空间)。使用Tinyint数据类型时,存储数据的范围是从0 到255(每一个值要求1个字节存储空间)。 内容来自论文无忧网 www.paper51.com 精确小数在SQL Server中的数据类型是Decimal和Numeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。 copyright paper51.com 在SQL Server 中,近似小数的数据类型是 Float 和Real。例如,三分之一这个分数记作3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中的数据不完全一样。 http://www.paper51.com (6)货币数据表示正的或者负的货币数量 http://www.paper51.com 在 Microsoft SQL Server 中,货币数据的数据类型是Money 和Smallmoney。Money数据类型要求8个存储字节,Smallmoney数据类型要求4个存储字节。 copyright paper51.com (7)特殊数据类型 内容来自www.paper51.com
特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即Timestamp、Bit和Uniqueidentifier。 copyright paper51.com
2、用户定义的数据类型 paper51.com 用户定义的数据类型是基于在Microsoft SQL Server中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可控性时,可以使用用户定义的数据类型。例如,可定义一种称为 postal_code 的数据类型,它是基于 Char 数据类型。 paper51.com 当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可控性。 http://www.paper51.com (1)创建用户定义的数据类型 内容来自论文无忧网 www.paper51.com 创建用户定义的数据类型可以使用Transact-SQL语句。系统存储过程 sp_addtype 可以来创建用户定义的数据类型。其语法形式如下: 内容来自www.paper51.com sp_addtype{type},[,system_data_bype][,'null_type'] http://www.paper51.com 其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据类型,null_type表示该数据类型是如何处理空值的,必须使用单引号引起来的格式。 copyright paper51.com
(2)删除用户定义的数据类型 paper51.com 当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是 sp_droptype {'type'}。 http://www.paper51.com 注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还有默认规则时,这种用户定义的数据类型不能删除。 paper51.com 1.1.5 数据库的相关操作1、如何创建数据库 copyright paper51.com (1)使用 Create Database 创建数据库 内容来自www.paper51.com Create Database语法形式如下: http://www.paper51.com Create Databasedatabase_name [On 内容来自论文无忧网 www.paper51.com {[Primary](Name=logical_file_name, 内容来自论文无忧网 www.paper51.com
Filename='os_file_name' copyright paper51.com [,Size=size] 内容来自www.paper51.com [,Maxsize=max_size] copyright paper51.com }[,...n] http://www.paper51.com ] copyright paper51.com [Log On 内容来自论文无忧网 www.paper51.com }(Name=Logical_name, http://www.paper51.com Filename='os_file_name' http://www.paper51.com [,Size=size]) http://www.paper51.com }[,...n] paper51.com
] 内容来自www.paper51.com [For Restore] copyright paper51.com
注释: copyright paper51.com Primary:该选项是一个关键字,用来指定主文件组中的文件。主文件组不但包含了数据库系统表中的全部内容,而且还包含了没有在用户文件组中包含的全部对象。一个数据库只能有一个主文件。在默认情况下,即在没有指定Primary关键字时,列在语句中的第一个文件就是主文件。 http://www.paper51.com Name:该选项指定数据库的逻辑名字,这是在SQLServer 系统中使用的名称,是数据库在SQL Server 中的标识符。 copyright paper51.com Filename:该选项用来指定数据库所在文件的操作系统文件名称和路径。在os_file_name中的路径必须是SQL Server 所在服务器上的一个文件夹。该操作系统文件名称与Name 的逻辑名称是一一对应的。 内容来自www.paper51.com copyright paper51.com |