数据库基础第2章SQL语言编程基础.ppt
《数据库基础第2章SQL语言编程基础.ppt》由会员分享,可在线阅读,更多相关《数据库基础第2章SQL语言编程基础.ppt(79页珍藏版)》请在三一办公上搜索。
1、第 2 章 SQL语言编程基础,本章学习目标,l了解Transact-SQL语言起源、组成l掌握Transact-SQL编程基础知识l 综合运用变量、表达式、函数及流控语句等编写应用程序代码,2.1 Transact-SQL语言概论2.1.1 Transact-SQL语言简介SQL的含义为结构化查询语言,即Structured Query Language,是在关系型数据库系统中被广泛采用的一种语言形式。SQL语言能够针对数据库完成定义、查询、操纵和控制功能,是关系型数据库领域中的标准化查询语言。微软公司在SQL语言的基础上对其进行了大幅度的扩充,并将其应用于SQL Server服务器技术中,
2、从而将SQL Server所采用的SQL语言称为Transact-SQL语言。目前SQL语言的最新标准为SQL-92,由美国国家标准局制定,包含了语法标准以及对SQL关键字的定义。在使用SQL语言的过程中,用户不需要知道数据库中的数据是如何定义和怎样存储的,只需要知道表和列的名字,即可从表中查询出需要的信息。SQL语言特别适合于Client/Server体系结构,客户用SQL语句发出请求,服务器处理用户发出的请求,客户与服务器之间任务划分明确。但SQL语言本身不是独立的程序设计语言,不能进行屏幕界面设计和控制打印等,因此通常将SQL语言嵌入到程序设计语言(如Visual Basic、C语言、D
3、elphi等)中使用。,SQL语言由三部分组成:数据定义语言(Data Definition Language,简称DDL)、数据操纵语言(Data Manipularion Language,简称DML)、数据控制语言(Data Control Language,简称DCL)。对上述三种语言的描述如表2-1所示。表2-1 SQL语言的组成,2.1.2 Transact-SQL语法规则1Transact-SQL语法规则为方便用户更好地掌握与使用Transact-SQL语言,需要首先向读者介绍Transact-SQL中涉及到的语法规则,如表2-2所示:,表2-2 Transact-SQL的语法规
4、则,2数据库对象的引用规则一般情况下,数据库对象的引用都由以下四部分所组成:l server_name 用于指定所连结的本地服务器或远程服务器的名称。l database_name 用于确定在服务器中当前状态下所操作的数据库名称l object_name 在数据库中被引用的数据库对象名称l owner_name 表示数据库对象的所有者,所以一个完整的数据对象引用的表示方法应该为:server_name.database_name.owner_name.object_name,其中,服务器名称、数据库名称以及所有者都可以省略,所以下列对象的表示方法都是合法的:server_name.databa
5、se_name.owner_name.object_nameserver_name.database_name.object_nameserver_name.owner_name.object_nameserver_name.object_namedatabase_name.owner_name.object_namedatabase_name.object_nameowner_name.object_nameobject_name例如:shutupandcode.xscj.dbo.班级表、shutupandcode.xscj.dbo.课程信息表。2.1.3 Transact-SQL语法元素在
6、大部分Transact-SQL语句中,都包含诸如标识符、数据类型、函数、表达式、运算符、注释以及保留关键字等语法元素。,1 识符用于标识数据库对象的名称,这些对象包括服务器、数据库及相关对象(如表、视图、列、索引、触发器、过程、约束、规则等)。标识符在定义对象时进行命名,当需要使用某个对象时可以通过引用该对象的名称来完成。标识符可划分为常规标识符与分隔标识符两类,其中常规标识符的命名规则如下:l 第一个字符必须由字母a-z、A-Z,以及来自其他语言的字母字符或者下划线_、#构成,其中表示局部变量或参数,以#开头的标识符表示全局临时对象,以开始的标识符表示全局变量,也称为配置函数。l 在定义标识
7、符时,不能占用Transact-SQL 的保留字,例如不能将Table、View、Index等定义为一个标识符。l 在标识符中不能含有空格,并且标识符中的字符数量不能超过128个。如果定义的标识符不符合上述规则时,即被称为分隔标识符,需要使用双引号”或方括号对其进行分割。例如:SELECT*FROM my table,1 数据类型Transact-SQL中的基本数据类型如表2-3表所示:表2-3 Transact-SQL基本数据类型,(1)整型数据整数数据类型是最常用的数据类型之一,由正整数和负整数所组成,使用 bigint、int、smallint和tinyint数据类型进行存储。bigin
8、t 数据类型可存储的数字范围比 int 数据类型广。int 数据类型比 smallint 数据类型的存储范围大,而 smallint 的数值范围又比 tinyint 类型大。,l bigint:可以存储-263到263-1之间的数字,占据8个字节存储空间。l int:可以存储从-231到231-1范围之间的所有整数,占据4字节存储空间。l smallint:可以存储从-215到215-1范围之间的所有整数,占据2字节存储空间。l tinyint:可以存储从0到255范围之间的所有正整数。,(2)浮点数据类型主要包括Real、Float、Decimal和numeric四种类型。,l Real:用
9、于存储7位小数的十进制数据,所能够表示的范围为-3.40E+38到1.79E+38。l Float:可以精确到第15位小数,数据范围为-1.79E-308到1.79E+308。l Decimal:提供小数所需要的实际存储空间,可以存储2到17个字节的从-1038-1到1038-1之间的数值。l numeric:与Decimal数据类型几乎完全相同,区别是在表格中,只有numeric型的数据可以带有identity关键字的列。,(3)字符数据类型SQL Server提供了三种字符数据类型,分别是Char、Varchar和Text。,l Char:最长可以容纳8000个字符,并且每个字符占用一个字
10、节的存储空间。使用Char数据类型定义变量时,需要指定数据的最大长度。如果实际数据的字符长度小于指定长度时,剩余的字节用空格来填充。如果实际数据的长度超过了指定的长度,则超出部分将会被删除。在表示字符串常量时,需要使用一对单引号将其括起来。l varchar:该数据类型的使用方式与Char数据类型类似。Char 数据类型不同的是,Varchar数据类型所占用的存储空间由字符数据所占据的实际长度来确定。l text:该数据类型所能表示的最大长度为 231-1 即2,147,483,647个字符,当需要表示的数据类型长度超过了8000时,可以采用text来处理可变长度的字符数据。,(4)日期/时间
11、数据类型日期/时间数据类型可以分为datetime和smalldatetime两类。,l Datetime:范围从1753年1月1日到9999年12月31日,可以精确到千分之一秒,此类型的数据占用8个字节的存储空间。l Smalldatetime:数据范围从1900年1月1日到2079年6月6日,可以精确到分,此类型的数据占4个字节的存储空间。,(5)货币数据类型SQL Server提供了Money和Smallmoney两种货币数据类型。,l Money:占据8字节存储空间。每4字节分别用于表示货币值的整数部分及小数部分。Money的取值的范围为-263到263-1,并且可以精确到万分之一货币
12、单位。l Smallmoney:占据4字节存储空间。每2字节分别用于表示货币值的整数部分以及小数部分。smallmoney的取值范围为-214,748.3648到+214,748.3647,可以精确到万分之一货币单位。,(6)二进制数据类型用于存储二进制数据,有binary、varbinary两种。,l Binary:用于存储固定长度的二进制数据,表示数据的长度取值为1到8000个字节。在输入数据时必须在数据前加上字符0X作为二进制标识。如要输入abc则应输入0 xabc。若输入的数据过长将会截掉其超出部分,若输入的数据位数为奇数则会在起始符号0X后添加一个0。如上述的0 xabc会被系统自动
13、变为0 x0abc。l Varbinary:具有可变长度的特性,表示数据的长度也为1到8000个字节,若输入的数据过长将会截掉其超出部分。当binary数据类型允许NULL值时将被视为varbinary数据类型。,(7)逻辑数据类型 bit数据类型占用1个字节的存储空间,其值为0或1,如果输入0或1以外的值将被视为1。bit类型不能定义为NULL值(所谓NULL值是指空值或无意义的值)。(8)文本和图形数据类型这类数据类型用于存储大量的字符或二进制数据。,l Text:用于存储大量文本数据,其容量理论上为1-231-1(2,147,483,647)个字节,在实际应用时需要视硬盘的存储空间而定。
14、l ntext:与text类型相似,不同的是ntext类型采用Unicode标准字符集(Character Set),因此其理论容量为230-1(1,073,741,823)个字节。l image:用于存储大量的二进制数据。其理论容量为231-1(2,147,483,647)个字节。通常用来存储图形等(OLE Object Linking and Embedding,对象连接和嵌入)对象。在输入数据时同binary数据类型一样,必须在数据前加上字符“0X”作为二进制标识。,(9)特定数据类型SQLServer提供的特殊数据类型有Timestamp、Uniqueidentifier2种。,l T
15、imestamp:用于表示SQL Server 活动的先后顺序,以二进投影的格式表示。Timestamp 数据与插入数据或者日期和时间没有关系。l Uniqueidentifier:由 16 字节的十六进制数字组成,此数字称为GUID(GloballyUniqueIdentifier即全球惟一鉴别号)。此数字由SQLServer的NEWID函数产生全球惟一的编码。在全球各地的计算机经由此函数产生的数字不会相同。,(10)用户定义的数据类型 用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、
16、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为postal_code 的数据类型,它基于 Char 数据类型。当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。(11)新数据类型 SQLServer2000中增加了3种数据类型bigint、SQL_variant和table。其中bigint数据类型已在整数类型中介绍。,l SQL_variant:可以存储除文本图形数据text、ntext、image、timestamp类型数据外其它任何合法的SQLServer数据。此数据类型大大方便了SQLServer的开发工作。l Tab
17、le:用于存储对表或视图处理后的结果集。这一新类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便快。,3、函数在SQL Server中包含了大量具有执行特定运算功能的内置函数。函数的使用可以包含在SELECT查询语句的选择列表中、WHERE子句搜索条件中、视图的搜索条件中、约束或触发器中。一般情况下,无论函数是否有参数,在调用函数时,函数名称后都需要带有圆括号()。有时,用来指定数据库、计算机、登录或数据库用户的参数是可选的,如果未指定这些参数,就默认地将这些参数赋值为当前的数据库、主机、登录或数据库用户。同时,SQL Server中的函数可以支持嵌套。SQL Server中函数
18、的种类如表2-4所示:,表2-4 SQL Serverr的函数类型,2.2 函数、变量与表达式2.2.1 常量 常量可以用来表示特定的数值,根据不同的数据类型,常量的格式也会发生相应的变化。常量可以分为:字符串常量、二进制常量、bit常量、datetime常量、integer常量、decimal常量、float和real常量、uniqueidentifier常量等。,1字符串常量字符串常量需要括在一对单引号中,其中包含字母数字(a-z、A-Z、0-9)以及其他特殊字符,如!、#。如果在字符串中含有一个嵌入的引号时,为了避免发生混淆,用两个单引号代替嵌入的单引号。以下字符串均为合法的常量:XJN
19、ZY、abc、efg。,2数值常量,l 二进制常量 其前缀为OX,并且由16进制数字所组成。例如,0 xAE、0 x12Ef。l bit常量 该常量的取值为0或1,如果bit常量的值大于1则自动被转换为1。l integer常量 用于表示l decimal常量 浮点数类型的常量,可以包含小数点。lfloat和real常量 采用科学计数法来表示浮点数。例如101.5E5、0.5E-2等。l 指定正数和负数 在数字前面添加+或-,指明一个数是正数或是负数。如+14562、-¥87.56、+324E-5等。money常量 货币常量,以$作为前缀,可以包含小数点。如$16.34、$134.5等。,3u
20、niqueidentifier 常量 该类常量用于产生一个全局唯一标识符(GUID)值的字符串。可用于数据库中的某一个关键字字段。其格式可以指定为字符或二进制字符串。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF。4datetime常量 用于表示特定的日期和时间。在SQL Server中能够识别的日期格式包括,字母日期格式、数字日期格式以及未分隔的字符串格式,例如:April 15,2005、01/15/2006、20051220。时间常量可以参照如下示例,如:14:30:24、04:24 PM。2.2.2 变量变量对应内存中的一个存储空间,它与常量不同,变量的
21、值在程序运行过程中可以随时改变。有局部变量与全局变量两种。变量采用先申明后使用的原则。1局部变量局部变量是用户在程序中定义的变量,一次只能保存一个值,它仅在定义的程序范围内有效。局部变量可以临时存储数值。局部变量名以符号开始,最长为128个字符。,l 申明局部变量 可以通过DECLARE语句声明局部变量,需要确定变量的名字、数据类型和长度。例如,定义一个整数类型的变量score以及字符串类型的变量name,可以表示为:DECLARE score INTDECLARE name CHAR(12)l 对局部变量赋值 局部变量的初值为NULL(空),可以使用SELECT语句或SET语句对变量进行赋值
22、。SET语句一次只能给一个局部变量赋值,SELECT语句则可以同时给一个或多个变量赋值。,局部变量通常用于以下几种情况:作为计数器计算循环执行的次数或控制循环执行的次数。保存数据值以供流控语句测试。保存由存储过程返回代码的数据值。在使用变量之前应该考虑到变量的作用域,只有在变量的作用范围以内才能够正确的对变量进行操作。变量的作用域指从申明变量的开始位置到含有该变量的批处理或存储过程的结束位置。【例2-1】在数据库XSCJ中定义一个长度为12的字符串类型变量student,对该变量进行赋值,并且查询出“学生基本信息表“中该变量所指定姓名的学生信息。在查询分析器中运行如下命令:USE XSCJGO
23、DECLARE student CHAR(12)SET student=王倩倩SELECT*FROM 学生基本信息表 WHERE 姓名=student运行结果如图2-1所示。,图2-1定义一个长度为12的字符串类型变量,【例2-2】在数据库XSCJ中定义两个日期时间类型的变量max_csrq、min_csrq,分别用于查询“学生基本信息表”中“出生日期”的最大值、最小值。可在查询分析器中运行如下命令:USE XSCJGODECLARE max_csrq DATETIME,min_csrq DATETIMESELECT max_csrq=MAX(出生日期),min_csrq=MIN(出生日期)F
24、ROM 学生基本信息表PRINT max_csrqPRINT min_csrq运行结果如图2-2所示:,图2-2定义日期时间类型变量运行结果,2 全局变量全局变量以开头,实际上它是SQL Server的配置函数。2.2.3 表达式 在Transact-SQL语言中,表达式由标识赋、数值、运算符组成。可以对表达式进行计算并且得到结果。表达式可以是一个常量、变量、字段名、函数或子查询。可以通过运算符将两个或更多的简单表达式联接起来组成复杂的表达式。表达式中的运算符可以执行算术、比较、连接或赋值操作。运算符大致可以划分为:算术运算符、位运算符、逻辑运算符、比较运算符、字符串连接运算符等。常用的算术运
25、算符有+(加)、(减)、*(乘)、/(除)、%(求余)等;常用的比较运算符有=(等于)、=(大于等于)、(不等于)或!=(不等于)等;常用的位运行符有&(按位与)、|(按位或)、(按位异或)等;常用的逻辑运算符有AND(逻辑与)、NOT(逻辑非)、OR(逻辑或)等。2.2.4 常用函数 在SQL Server 2000中提供了大量的系统函数,通过使用这些函数,用户可以根据需要完成特定的操作。常用的系统函数有:聚合函数、数学函数、字符串函数、日期时间函数、数据类型转换函数等。,1聚合函数聚合函数也称为统计函数,它对一组值进行计算并返回一个数值。聚合函数经常与SELECT语句一起使用。常用聚合函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 基础 SQL 语言 编程
链接地址:https://www.31ppt.com/p-6578485.html