第6章TSQL程序设计 第6章T-SQL程序设计 本章要点 ·T-SQL语言基础 。 SELECT查询语句 ·各种查询子句 ·流控制语句 ·系统内置函数 ·用户自定义函数 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 1 第6章 T-SQL程序设计 本章要点 • T-SQL语言基础 • SELECT查询语句 • 各种查询子句 • 流控制语句 • 系统内置函数 • 用户自定义函数
第6章TSQL程序设计 6.1T-SQL语言基础 SQL(Structured Query Language)指的是结构化查询语言。 6.1.1常量 常量包括: 字符型:'this is test!! 整型:56,-90 实型:67.89,-45.89,1.34E7 日期型:6/23/2004,Jan12004 货币型:$3.43,$3456789.78 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 2 6.1 T-SQL 语言基础 SQL (Structured Query Language)指的是结构化查询语言。 6.1.1 常量 常量包括: 字符型: ‘this is test!’ 整型:56, -90 实型:67.89, -45.89, 1.34E7 日期型:6/23/2004, Jan 1 2004 货币型:$3.43, $3456789.78
6.1.2变量 第6章TSQL程序设计 变量是用户定义并可赋值的实体。 全局变量:由系统定义和维护。例:@@name 局部变量:在声明变量的过程内。@name 用declare语句声明 ,由set或select语句赋值。 例1: Declare @var1 char(20),@var2 int Set varl='this is a tes!' Select var2=67 例2: declare title cursor scroll cursor/*定义游标变量title cursor*/ for select*from SXQK where专业='信息管理' 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 3 6.1.2 变量 变量是用户定义并可赋值的实体。 全局变量:由系统定义和维护。例:@@name 局部变量:在声明变量的过程内。@name 用declare语句声明 ,由set或select 语句赋值。 例1: Declare @var1 char(20), @var2 int Set var1=’this is a tes!’ Select var2=67 例2: declare title_cursor scroll cursor /*定义游标变量 title_cursor*/ for select * from SXQK where 专业=’信息管理’
第6章TSQL程序设计 6.1.3数据类型 数据类型:定义烈、存储过程参数和局部变量所允许的数据值, 他决定了数据的存储格式,代表着不同的信息类型。 1、 系统数据类型 2、用户自定义的数据类型 例: exec sp_addtype phone no,nvarchar(12)',null exec sp addtype city,'nvarchar(15)',null exec sp addtype region,'nvarchar(15)',null exec sp droptype phone no 2023/7/16 《SQLSever程序设计》 4
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 4 6.1.3 数据类型 数据类型:定义烈、存储过程参数和局部变量所允许的数据值, 他决定了数据的存储格式,代表着不同的信息类型。 1、 系统数据类型 2、 用户自定义的数据类型 例: exec sp_addtype phone_no, ‘nvarchar(12)’, null exec sp_addtype city, ‘nvarchar(15)’, null exec sp_addtype region, ‘nvarchar(15)’, null exec sp_droptype phone_no
第6章TSQL程序设计 6.1.4运算符 1、算术运算符:+·*/%(取漠,除法余数) 2、比较运算符:><>=70and开课学期=l 5、 位运算符:对二进制数据进行按位:&(与)|(或)(异 或)(反) 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 5 6.1.4 运算符 1、 算术运算符: + - * / %(取谟,除法余数) 2、 比较运算符:> = 3、 字符串连接运算符: 234+asf 234asf 4、 逻辑运算符:AND OR NOT 例:列出课程学时数大于70且在第一学期开课的课程 select * from XSKC where 学时> 70 and 开课学期=1 5、 位运算符:对二进制数据进行按位: &(与) | (或) ^ (异 或) ~(反)
第6章TSQL程序设计 运算符的优先级:从高到低排列 0 ~反 */% ● ^异或 ● &与 ● 或 ● NOT ● AND ● OR 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 6 运算符的优先级:从高到低排列 l () l ~ 反 l * / % l + - l ^ 异或 l & 与 l |或 l NOT l AND l OR
第6章TSQL程序设计 6.2查询语句SELECT 6.2.1 SELECT的语句结构 SELECT [ALLIDISTINCT]select list/*所有行删除重复行*/ [INTO [new table name]] [FROM (table namelview name)[optimizer_hints] [WHERE clause] /*指定查询条件*/ [GROUP BY clause]/*统计处理*/ [HAVING clause] /*再次过滤SELECT WHERE语句的结果*/ [ORDER BY clause] /*排序*/ [COMPUTE clause] /*同时查询数据,并做数据总计操作*/ [FOR BROWSE] 2023/7/16 《SQLSever程序设计》 7
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 7 6.2 查询语句 SELECT 6.2.1 SELECT 的语句结构 SELECT [ALL|DISTINCT] select_list /*所有行|删除重复行*/ [INTO [new_table_name]] [FROM {table_name|view_name}[optimizer_hints] ] [WHERE clause] /*指定查询条件*/ [GROUP BY clause] /*统计处理*/ [HAVING clause] /*再次过滤SELECT WHERE语句的结果*/ [ORDER BY clause] /*排序*/ [COMPUTE clause] /*同时查询数据,并做数据总计操作*/ [FOR BROWSE]
第6章TSQL程序设计 6.2.2 SELECT子句 select list:可以是一组列名、星号、表达式、变量 1、选择所有列 select from XSQK 2、选择指定列并指定它们的显示次序 例:显示学生情况(XSQK)中专业名称和学生姓名: select专业,姓名from XSQK 例:给学生课程表(XSKC)中每门课程的学分加1分。 Select课程名,学分=学分+1 from XSKC 2023/7/16 《SQLSever程序设计》
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 8 6.2.2 SELECT 子句 select_list :可以是一组列名、星号、表达式、变量 1、 选择所有列 select * from XSQK 2、 选择指定列并指定它们的显示次序 例:显示学生情况(XSQK)中专业名称和学生姓名: select 专业, 姓名 from XSQK 例:给学生课程表(XSKC)中每门课程的学分加1分。 Select 课程名,学分=学分+1 from XSKC
第6章TSQL程序设计 3、指定列标题 格式:列标题=列名 例:显示学生课程表(XSKC)中课程名和学时,并把学时列 显示为‘学时数’ Select课程名,学时数=学时from XSKC 4、删除重复行 [ALLDISTINCTI *所有行删除重复行*/ 例:默认设置显示学生情况表(XSQK)中的专业、班级。 Select专业,班级from XSQK 结果显示有重复行出现,用distinct删除: Select distinct专业,班级from XSOK/*结果无重复行*/ 2023/7/16 《SQLSever程序设计》 9
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 9 3、 指定列标题 格式: 列标题=列名 例:显示学生课程表(XSKC)中课程名和学时,并把学时列 显示为‘学时数’ 。 Select 课程名,学时数=学时 from XSKC 4、 删除重复行 [ALL|DISTINCT] /*所有行|删除重复行*/ 例:默认设置显示学生情况表(XSQK)中的专业、班级。 Select 专业,班级 from XSQK 结果显示有重复行出现,用distinct 删除: Select distinct 专业,班级 from XSQK /*结果无重复行*/
第6章TSQL程序设计 6.2.3 WHERE子句 [WHERE clause] /*指定查询条件*/ 例:要查询学生课程表(XSKC)中课程学时数大于65的课程 的课程号、课程名以及学时数: Select课程号,课程名,学时from XSQK where学时>65 /*结果无重复行*/ 2023/7/16 《SQLSever程序设计》 10
第6章 T-SQL程序设计 2023/7/16 《SQL Sever 程序设计》 10 6.2.3 WHERE 子句 [WHERE clause] /*指定查询条件*/ 例:要查询学生课程表(XSKC)中课程学时数大于65的课程 的课程号、课程名以及学时数: Select 课程号,课程名,学时 from XSQK where 学时>65 /*结果无重复行*/