第4章Transact—SQL简介
4.1Transact—SQL语言概述
SQL即结构化查询语言,是访问数据库的标准语言,可以完成复杂的数据库操作.
由于SQL语言具有功能丰富、使用方便灵活、语言简洁易用等特点,深受广大计算机用户的欢迎,许多数据库厂家也都推出支持SQL的数据库管理软件。
1989年,国际标准化组织ISO将SQL定为国际标准,推荐它为标准关系数据库语言。1990年,我国也颁布了《信息处理系统数据库语言SQL》,将其定为中国国家标准。
在Microsoft SQL Server中,使用的是Transact-SQL,它可以看作是标准SQL的一种方言,与标准SQL基本兼容。
用户向数据库提出要求,与SQL Server数据库进行交流的语言是Transact-SQL语言。用Transact-SQL语言编写应用程序可以完成所有的数据库管理工作。任何应用程序,必须通过SQL语句为表现形式的指令向数据库管理系统发送指令,以获得数据库管理系统的响应。因此学习SQL语言对于数据库开发人员来说十分必要。
本小节将介绍Transact-SQL的语法规则和常用函数。
4.1.1标识符
SQL Server标识符有自己的命名规则,介绍如下:
组成标识符的字符个数在1~128之间。
标识符的首字符可以是:字母、汉字、下划线、@、#。
以@符号开头的标识符表示局部变量或参数;
以#符号开头的标识符表示临时表或过程;
以##符号开头的标识符表示全局临时对象。
用字母做标识符时不区分大、小写。
标识符中不应含空格和保留字。保留字是SQL Server系统使用的符号,如SELECT、FROM、WHERE、DATABASE、VIEW、TABLE等。
如果需要用保留字或空格作为标识符使用,则需要用“”或[]进行分隔处理。例如观察下面的SQL语句:
SELECT*FROM[My TABLE]WHERE[VIEW]>20
该语句中,表名称My TABLE中含有空格,所以要用分隔符[]将其括住,否则SQL Server 会将其看作两个标识符;另外在WHERE后边的VIEW是保留字,所以也必须用分隔符[]将其括住。
4.1.2注释
SQL Server支持两种注释符:--和/*……*/。
--:是单行注释符。如果注释内容为多行需要在每行注释的前边加“--”。例如有两行注释,书写格式为:
--这是注释
--这里也是注释
/*……*/:是多行注释符,从/*开始,到*/之间的所有内容均为注释部分。例如有两行注释,书写格式为:
/*这是注释
这里也是注释*/
4.1.3常用函数
Transact—SQL中提供的函数包括:聚合函数、数学函数、字符串函数、日期时间函数、配置函数、游标函数、安全函数、系统函数、文本和图象函数等。
1.聚合函数
聚合函数也称统计函数,经常用于Select语句中,对表或视图中的数据进行统计。常用的聚合函数如下:
AVG:用来计算指定参数组的平均值。
COUNT:用来计算指定参数组中项目的数量。
MAX:用来求指定参数组中的最大值。
MIN:用来求指定参数组中的最小值。
SUM:用来求指定参数组中的所有值的和。
2.配置函数
配置函数用于得到当前系统中配置选项的设置信息。常用的配置函数如下:
(1)@@LANGUAGE
该函数返回系统当前使用的语言。例在查询分析器中,执行如下语句:
SELECT@@LANGUAGE
结果显示为:
简体中文
(2)@@VERSION
该函数返回SQL Server2000当前安装的日期、版本、和处理器类型信息。例在查询分析器中,执行如下语句:
SELECT@@VERSION
结果显示版本信息。
(3)@@MAX_CONNECTIONS
该函数返回SQL Server允许的最大连接数。例如在查询分析器中,执行如下语句:SELECT@@MAX_CONNECTIONS
结果显示为:
32767
3.数学函数
数学函数可以对数值进行数学计算。常用的数学函数介绍如下。
(1)SQRT函数
返回指定值的平方根。例在查询分析器中,执行如下语句:
SELECT SQRT(25)
结果显示为:
5.0
(2)ROUND函数
该函数对数值表达式的计算结果进行4舍5入处理。
函数的使用格式:ROUND(表达式,n)
其中n表示取小数的位数。例在查询分析器中,执行如下语句:
SELECT ROUND(25.0/8,3)
结果显示为:
3.125000
在查询分析器中,执行如下语句:
SELECT ROUND(25.0/8,2)
结果显示为:
3.130000
(3)PI函数
该函数返回π的值。例在查询分析器中,执行如下语句:
SELECT PI()
结果显示为:
3.1415926535897931
其余函数,自己看书。
4.2SQL的数据查询功能
4.2.1简单的Select语句
Select语句是SQL语言中应用最多的语句,可以将满足一定约束条件的一个或多个表中的字段挑选出来,并按照一定的分组和排序方法显示出来。
简单格式:Select字段名列表From表名称
功能:从当前数据库中的指定表中选择指定字段的所有记录。
字段名列表:指出要查询的字段,若有多个字段,要用逗号分隔;若选择所有字段,可以用“*”代替所有字段名。
例4-1要列出全部课程信息。
设计SQL语句为:Select*From课程信息表
例4-2只查询所有课程的课程编号、课程名称,学时。
设计SQL语句为:
Select课程编号,课程名称,学时From课程信息表
4.2.2Select语句的更多功能
Select语句还可以完成更复杂的查询功能。
Select语句的格式如下:
Select[All|Distinct][Top n]
*|列名1[As列标题1][,列名2[As列标题2][,…]
From表名1[In数据库名1]别名1[,表名2[In数据库名2]别名2…]
[Where条件]
[Group By列名1[,列名2]…]
[Having条件]
[Order By列名1[ASC|DESC][,列名2[ASC|DESC]…]]
注意:[]中的内容是可以省略的。
1.Select子句
All,Distinct参数用于限制显示记录的数量。使用时二者任选其一,不指定参数时默认为All。
All:表示显示符合条件的全部记录。
例如Select All*From成绩表
等价于:Select*From成绩表
Distinct:表示在查询结果中对于相同的记录只包含一条记录。
例4-3列出所有选课学生的学号。
若执行SQL语句:
Select学号From成绩表
查询结果如图4-3(b)所示,因为一个学生可能选择多门课,所以其中会有重复的记录。
若执行SQL语句:
Select Distinct学号From成绩表
结果如图4-3(a),与图4-3(b)比较,可以看到Distinct使重复的记录只显示一次。
本题不希望出现重复记录,正确答案应是后边的SQL语句。
Top n:表示只包含查询结果的前n条记录。
例4-4列出成绩表前5条记录。
设计SQL语句:Select Top5*From成绩表
例4-5查询选课的学生学号,并只要前5个记录。
设计SQL语句:
Select Distinct Top5学号From成绩表
结果显示不重复的学号的前5条记录。
列名:用于指定选择哪些字段。其中
*:表示选择所有字段。
As列标题:用于定义字段的别名,常用来指定在查询结果中取代原列名而显示的列标题,或者在创建一个合计字段时,也可以用这种格式为该字段取名。
例4-6查询成绩表中的所有记录,但要求“成绩”字段的标题显示为“分数”。
设计SQL语句为:
Select学号,课程编号,成绩As分数From成绩表
执行结果如图4-5,可见“成绩”列的标题显示为“分数”。
例4-7假设将成绩的85%计入期末成绩,则要求显示字段“学号”、“课程编号”、“计入期末分数”。
设计SQL语句为:
Select学号,课程编号,成绩*0.85As计入期末分数From成绩表
执行结果入图4-6所示。
2.From子句
用于指定访问的表名及其所在的数据库名。
3.Where子句
Where子句用于设定查询条件,目的是为了从表的数据集中,筛选出符合条件的记录,从而可以限制查询的范围,提高查询效率。
查询条件可以是:
sql server2000简介算术表达式、逻辑表达式或关系表达式,
使用的运算符有:
AND,OR,NOT,=,<,<=,>,>=,<>,LIKE,BETWEEN,IN等。
查询条件:可以是算术表达式、逻辑表达式或关系表达式,使用的运算符有:AND,OR,NOT, =,<,<=,>,>=,<>,LIKE,BETWEEN,IN等。
AND:表示并列条件关系,且条件必须同时成立。
OR:表示选择条件关系,有一个条件成立即可。
例4-8列出计算机专业的男学生信息。
设计SQL语句如下:
Select*from学生信息表
Where专业='计算机'AND性别='男'
在查询分析器中,执行结果如图4-7。
BETWEEN…AND:用于查询某字段值在某区间的记录。
否定形式为:NOT BETWEEN…AND
例4-10查成绩在85分和95分之间的学生。
设计SQL语句如下:
Select*From成绩表Where成绩BETWEEN85AND95
等价于
Select*From成绩表Where成绩>=85And成绩<=95
执行结果如图4-8所示。
IN:用于设置当字段值是几个值中的一个时的条件。
其否定形式:NOT IN
例4-11查“机械自动化”和“自动化”专业学生的学号、姓名和专业。
设计SQL语句如下:
SELECT学号,姓名,专业
FROM学生信息表
WHERE专业IN('机械自动化','自动化')
等价于以下语句:
SELECT学号,姓名,专业
FROM学生信息表
WHERE专业='机械自动化'OR专业='自动化'
LIKE:用于在查询条件中比较字符串,实现模糊查询。
在实际应用中,用户不一定总是能够给出精确的查询条件,因此经常需要根据一些不太确切的线索来搜索信息。在WHERE子句中用LIKE与通配符“%”配合搜索,这种查询称为“模糊查询”。
例查所有姓李的学生记录:
SELECT*FROM学生信息表WHERE姓名Like'李%'
例4-12查询03级和04级的学生成绩情况。
因为学号的前2位代表年级,故只要查学号前2位是03和04的记录即可。
设计SQL语句如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。