《SQL查询语句大全.ppt》由会员分享,可在线阅读,更多相关《SQL查询语句大全.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL查询语句大全4.1 SQLSQL语言简介语言简介 1.SQL(Structured Query Language):结构化查询语结构化查询语言,是一种介于关系代数与关系运算之间的语言,主要功能言,是一种介于关系代数与关系运算之间的语言,主要功能包括查询、操纵、定义和控制等方面,是一个通用的、功能包括查询、操纵、定义和控制等方面,是一个通用的、功能极强的关系数据库语言。极强的关系数据库语言。2.Transact-SQL的组成的组成3.1)数据定义语言)数据定义语言(DDL Data Definition Language):用来建立数据库、数据库对象。如用来建立数据库、数据库对象。如Cre
2、ate table、view等。等。4.2)数据操纵语言)数据操纵语言(DML Data Manipulation Language):用来操纵数据库中的数据的命令。如用来操纵数据库中的数据的命令。如select、insert、update、delete等。等。5.3)数据控制语言)数据控制语言(DCL Data Control Language):用来用来控制数据库组建的存取权限等。如控制数据库组建的存取权限等。如Grant、Revoke等。等。6.4)流程控制语言)流程控制语言(FCL Flow Control Language):用来用来设计应用程序的语句。如设计应用程序的语句。如if、
3、while、case等。等。7.5)其他语言要素)其他语言要素(ALE Additional language Element):包括变量、运算符、函数和注解等。包括变量、运算符、函数和注解等。SELECT语句的使用方式语句的使用方式3.为字段设置别名为字段设置别名SELECT 列名列名1 as 新名新名1,列名列名2 as 新名新名2,列名列名n as 新名新名n FROM 表名表名 (将选择字段的标题按新的名称显示)将选择字段的标题按新的名称显示)注意:新标题的名称可以有下列方式:注意:新标题的名称可以有下列方式:1)在列表达式后面给出列名在列表达式后面给出列名 select xh 学号学
4、号2)用用“=”来连接列表达式来连接列表达式 select 学号学号=xh3)新标题的名称用单引号、双引号括起来;新标题的名称用单引号、双引号括起来;4)用用AS关键字来连接列表达式和指定的列名关键字来连接列表达式和指定的列名 SELECT语句语句例如:查询例如:查询authors中编号、姓名、电话、地址的信息,可中编号、姓名、电话、地址的信息,可以采用以下方式:以采用以下方式:1.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors2.select 编号编号=au_id,姓姓=au_lna
5、me,名名=au_fname,电电话话=phone,地址地址=address from authors3.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors4.select au_id 编号编号,au_lname 姓姓,au_fname 名名,phone 电话电话,address 地址地址 from authors5.select au_id as 编号编号,au_lname as 姓姓,au_fname as 名名,phone as 电话电话,address as 地址地址 from a
6、uthorsSELECT语句语句4.在选择列表中使用表达式在选择列表中使用表达式在查询数据时,可以通过运算操作来控制从在查询数据时,可以通过运算操作来控制从一个表中的返回值。一个表中的返回值。例如:查询每个学生的总成绩、平均成绩。例如:查询每个学生的总成绩、平均成绩。select 学号学号,姓名姓名,数学成绩数学成绩+语文成绩语文成绩+英语英语成绩成绩 as 总成绩总成绩,(数学成绩数学成绩+语文成绩语文成绩+英语成英语成绩绩)/3 as 平均成绩平均成绩 from 学生基本情况学生基本情况SELECT语句语句4.消除字段数据的重复值消除字段数据的重复值在查询数据时,可能会有许多重复的数据。在
7、查询数据时,可能会有许多重复的数据。SQL 提供的提供的Distinct 关键字,可以从关键字,可以从select 语句的结果集中消除重复的数据。语句的结果集中消除重复的数据。例如:例如:1)查询学生来至哪些院系的信息。查询学生来至哪些院系的信息。select distinct 院系名称院系名称 from 学生基本情学生基本情况况2)查询有哪些专业的学生。查询有哪些专业的学生。select distinct 所学专业所学专业 from 学生基本情学生基本情况况SELECT语句语句6.限制记录的行数限制记录的行数在限制查询记录的行数时,可以使用下列方式:在限制查询记录的行数时,可以使用下列方式:
8、1)使用使用top n:返回前返回前n条记录;条记录;2)使用使用top n percent:返回前返回前n%条记录条记录;3)使用使用set rowcount n:返回前返回前n条记录。条记录。n=0关闭关闭例如:例如:1)显示前)显示前5条记录条记录select top 5*from 学生基本情况学生基本情况2)显示显示20%学生的信息学生的信息select top 20 percent*from 学生基本情况学生基本情况3)对所有)对所有select 语句,均显示语句,均显示5条记录。条记录。set rowcount 5select *from 学生基本情况学生基本情况4.2 条件子句的
9、使用方法条件子句的使用方法1.条件子句条件子句最常用的条件子句是最常用的条件子句是where 和和having,用它们来,用它们来指定一系列条件,执行操作时只返回满足条件的记录。指定一系列条件,执行操作时只返回满足条件的记录。Having 通常与通常与Group by一起使用,用来说明返回一起使用,用来说明返回分组的条件。分组的条件。例如:例如:1)显示男生的相关信息)显示男生的相关信息Select*from 学生基本情况学生基本情况 where 性别性别=男男2)显示男生人数超过)显示男生人数超过10人的院系信息人的院系信息select 院系名称院系名称,count(*)as 男生人数男生人
10、数 from 学学生基本情况生基本情况 where 性别性别=男男 group by 院系名称院系名称 having count(*)104.2 SELECT语句的查询条件语句的查询条件2算术表达式、比较运算符算术表达式、比较运算符算术运算符有:算术运算符有:+、-、*、/、%使用算术表达式的一般形式为:使用算术表达式的一般形式为:expression operator expression 比比较较运运算算符符:是是最最为为常常见见的的一一种种条条件件限限制制方方式式,用用于于测测试试两两个个表表达达式式是是否否相相同同,返返回回值值为为True 或或False。WHERE子句中允许出现的比
11、较运算符有:子句中允许出现的比较运算符有:=(等等于于)、(大大于于)、=(对对于于等等于于)、(小小于于)、=(小小于于等等于于)、(不不等等于于)、!=(不等于)(不等于)、!(不大于)、(不大于)、!=80 and 数学成绩数学成绩=904.2 SELECT语句的查询条件语句的查询条件4.IN 列表搜索条件列表搜索条件IN 列列表表搜搜索索条条件件用用于于返返回回与与给给定定的的列列表表中中任任意意一一个值相匹配的记录。格式为:个值相匹配的记录。格式为:条件字段条件字段 NOT IN(列表选项列表选项)例如:查询数学成绩为例如:查询数学成绩为70、80、90的信息。的信息。select*
12、from 学学生生基基本本情情况况 where 数数学学成成绩绩 in(70,80,90)In列表条件是列表条件是OR的简化形式,上面语句等价于:的简化形式,上面语句等价于:select*from 学学生生基基本本情情况况 where 数数学学成成绩绩=70 OR数学成绩数学成绩=80 OR 数学成绩数学成绩=904.2 SELECT语句的查询条件语句的查询条件6LIKE匹配模式匹配模式LIKE匹匹配配模模式式是是确确定定条条件件字字符符串串是是否否与与指指定定的的模模式式匹匹配。使用格式:配。使用格式:条件字段条件字段 NOT LIKE 匹配模式匹配模式SQL中的有效模式包括:中的有效模式包
13、括:%:可匹配任意类型和长度的字符串:可匹配任意类型和长度的字符串。Like Like 李李%_(下下 划划 线线):可可 匹匹 配配 任任 何何 单单 个个 字字 符符。Like Like 71005_71005_:指定范围或集合中的任何单个字符。:指定范围或集合中的任何单个字符。Like a-dLike a-d:不属于指定范围或集合的任何单个字符:不属于指定范围或集合的任何单个字符例如:例如:1)查询所有姓)查询所有姓“张张”的学生信息的学生信息select*from 学学生生基基本本情情况况 where 姓姓名名 like 张张%4.2 SELECT语句的查询条件语句的查询条件6NULL
14、搜索条件搜索条件空空值值比比较较的的关关键键字字是是 IS NULL或或 IS NOT NULL。其其中中NULL表表示示字字段段的的数数据据未未知知或或不不确确定。格式为:定。格式为:表达式表达式 IS NULL 或或 表达式表达式IS NOT NULL例如:查询缺少数学成绩的学生信息。例如:查询缺少数学成绩的学生信息。select*from 学学生生基基本本情情况况 where 数数学学成成绩绩 is null查询示例表查询示例表练习讨论练习讨论1.按按10%的比例显示本专业的男生信息;的比例显示本专业的男生信息;2.查询查询“管理学院管理学院”专业分布情况;专业分布情况;3.查询本专业学
15、生来自哪些省份;查询本专业学生来自哪些省份;4.查询英语不及格学生的信息,显示学号、姓名、专业、英查询英语不及格学生的信息,显示学号、姓名、专业、英语原成绩、英语语原成绩、英语+10、英语、英语*1.1等字段信息;等字段信息;5.显示管理学院学生中,不姓显示管理学院学生中,不姓“刘刘”和和“张张”的学生信息;的学生信息;6.查询查询“数学数学”在在65-75之间,而之间,而“英语英语”不在不在70-90之间的学之间的学生信息;生信息;7.查询查询“管理学院、能源学院、机械学院、人文学院管理学院、能源学院、机械学院、人文学院”学号在学号在01-07之间的学生信息。之间的学生信息。8.将学生的将学
16、生的“学号、姓名、性别、身份证号学号、姓名、性别、身份证号”作为一列、作为一列、“院院系名称、专业系名称、专业”作为一列,各数据之间用作为一列,各数据之间用“,”分隔;列名分别为分隔;列名分别为“基本信息基本信息”、“隶属关系隶属关系”进行显示;进行显示;9.查询总成绩查询总成绩、=、(select avg(数学成绩数学成绩)FROM 学生基本情况学生基本情况)思考:思考:1)如何查询本专业大学英语成绩)如何查询本专业大学英语成绩=60且低且低于平均分的学生信息?于平均分的学生信息?2)统计管理学院各专业高等数学低于平均分的人数。统计管理学院各专业高等数学低于平均分的人数。3)查询大学英语成绩
17、最高分的学生信息。)查询大学英语成绩最高分的学生信息。Exists子查询子查询3)使用)使用Exists的子查询的子查询使用使用Exists(或(或Not Exists)引入子查询时,就相)引入子查询时,就相当于进行一次存在测试。当于进行一次存在测试。外部查询的外部查询的Where子句测试子句测试子查询返回的行是否存在。子查询返回的行是否存在。子查询实际上不产生任何子查询实际上不产生任何数据,它只返回数据,它只返回True或或False。例如:查询成绩表中女生的学习成绩。例如:查询成绩表中女生的学习成绩。SELECT*FROM 成绩表成绩表 Where exists(select*FROM 学
18、生基本情况学生基本情况 where 学号学号=成绩表成绩表.学号学号 and 性别性别=女女)思考:思考:1)如何查询管理学院的学生成绩?)如何查询管理学院的学生成绩?2)查询本专业高等数学不及格的学生信息?)查询本专业高等数学不及格的学生信息?练习讨论练习讨论数据表名:数据表名:JBQK数据表名:数据表名:CJB练习讨论练习讨论n根据根据JBQK表、表、CJB表完成下列查询:表完成下列查询:n1.查询高等数学成绩高于平均成绩的学生信查询高等数学成绩高于平均成绩的学生信息,显示学号、姓名、专业、高等数学等;息,显示学号、姓名、专业、高等数学等;n2.查询信息管理专业男生的高等数学成绩、查询信息
19、管理专业男生的高等数学成绩、电子商务专业女生的高等数学成绩、能源学院电子商务专业女生的高等数学成绩、能源学院所有学生的数学成绩,显示显示学号、姓名、所有学生的数学成绩,显示显示学号、姓名、性别、院系、专业、高等数学等,按院系、专性别、院系、专业、高等数学等,按院系、专业排序;业排序;n3.查询与查询与“刘文东刘文东”同专业的学生信息,显示同专业的学生信息,显示显示学号、姓名、专业、各门课程成绩。显示学号、姓名、专业、各门课程成绩。基于查询的数据表基于查询的数据表1 基于查询生成新的数据表基于查询生成新的数据表如果需要将查询结果保存下来,使用如果需要将查询结果保存下来,使用INTO子子句可以生成
20、一个新表并将结果保存在这个新的句可以生成一个新表并将结果保存在这个新的数据表中。数据表中。命令基本格式:命令基本格式:Select 选择字段表选择字段表 Into 新的表名新的表名 FROM 已有的表已有的表 where 条件条件例如:例如:1)将)将“学生基本情况学生基本情况”表复制成表复制成jbqkSelect*Into jbqk from 学生基本情况学生基本情况2)统计各个院系英语成绩的平均分、最高分、最低分、考试统计各个院系英语成绩的平均分、最高分、最低分、考试人数,结果放在人数,结果放在Eng_tj表。表。SELECT 学生基本情况学生基本情况.院系名称院系名称,AVG(成绩表成绩
21、表.大学英语大学英语)AS 英语平均英语平均,MAX(成绩表成绩表.大学英语大学英语)AS 英语最高英语最高,MIN(成成绩表绩表.大学英语大学英语)AS 英语最低英语最低,COUNT(*)AS 考试人数考试人数INTO Eng_tjFROM 学生基本情况学生基本情况 INNER JOIN 成绩表成绩表 ON 学生基本情况学生基本情况.学号学号=成绩表成绩表.学号学号GROUP BY 学生基本情况学生基本情况.院系名称院系名称思考:思考:1)将管理学院学习成绩前)将管理学院学习成绩前10名学生的信息保存到数名学生的信息保存到数据表据表gl_10中,只保存学号、姓名、专业、各门课程成绩。中,只保
22、存学号、姓名、专业、各门课程成绩。2)如何将本专业不及格学生的信息保存在数据表)如何将本专业不及格学生的信息保存在数据表bjg_xs?,保存学号、姓名、专业、各门课程成绩。,保存学号、姓名、专业、各门课程成绩。3)将)将jbqk表的结构复制到表的结构复制到jb_jg中。中。将查询结果插入数据表将查询结果插入数据表2 向已有表插入数据向已有表插入数据用用Insert IntoSelect语句,可以将一个子语句,可以将一个子查询的结果添加到数据表中。查询的结果添加到数据表中。命令格式:命令格式:Insert Into 数据表数据表 Select 查询查询例如:创建临时数据表例如:创建临时数据表st
23、u_1,存放从基本,存放从基本情况表、成绩表中查询出来的学号、姓名、性情况表、成绩表中查询出来的学号、姓名、性别、年龄、总成绩、平均成绩等信息。别、年龄、总成绩、平均成绩等信息。create table#stu_1(学号学号 char(8),姓名姓名 nchar(4),性别性别 nchar(1),年龄年龄 tinyint,总成绩总成绩 int,平均成绩平均成绩 decimal(5,2)goinsert into#stu_1 select jbqk.学号学号,jbqk.姓名姓名,jbqk.性别性别,year(getdate()-year(出生日期出生日期),cjb.高等数学高等数学+cjb.大学
24、英语大学英语+cjb.计算机基础计算机基础+cjb.管理学管理学,(cjb.高等数学高等数学+cjb.大学英语大学英语+cjb.计算机基础计算机基础+cjb.管理学管理学)/4from 学生基本情况学生基本情况 jbqk inner join 成绩表成绩表 cjb on jbqk.学号学号=cjb.学号学号goselect*from#stu_1思考:如何将信息管理、电子商务专业学习成绩前思考:如何将信息管理、电子商务专业学习成绩前5名的学名的学生信息放到与基本情况表结构类似的数据表生信息放到与基本情况表结构类似的数据表inf_ec中?中?子查询修改记录子查询修改记录3 用子查询修改记录用子查询
25、修改记录Update 语句中,语句中,Set子句、子句、Where 子句均可以使用子查询。子句均可以使用子查询。例如:在基本情况表中添加字段例如:在基本情况表中添加字段“第第1学期总分学期总分”、“第第1学期平均学期平均”,并修改这些,并修改这些字段的值。字段的值。alter table 学生基本情况学生基本情况 add 第第1学期总分学期总分 smallint,第第1学期平均学期平均 decimal(5,2)goupdate 学生基本情况学生基本情况 set 第第1学期总分学期总分=(select cjb.高等数学高等数学+cjb.大学英语大学英语+cjb.计算机基础计算机基础+cjb.管理
26、学管理学 from 成绩表成绩表 cjb where 学生基本情况学生基本情况.学号学号=cjb.学号学号),第第1学期平均学期平均=(select(cjb.高等数学高等数学+cjb.大学英语大学英语+cjb.计算机基础计算机基础+cjb.管理学管理学)/4 from 成绩表成绩表 cjb where 学生基本情况学生基本情况.学号学号=cjb.学号学号)goselect*from 学生基本情况学生基本情况思考:思考:1)对本专业高等数学不及格的学生,将数学成绩提高)对本专业高等数学不及格的学生,将数学成绩提高15%;2)将不是本专业学生的各门课程成绩清空;)将不是本专业学生的各门课程成绩清空
27、;子查询删除记录子查询删除记录4 用子查询删除记录用子查询删除记录Delete 命令的命令的where 子句可以使用子查询来从数据表中删子句可以使用子查询来从数据表中删除相关记录。除相关记录。例如:从基本情况表、成绩表中删除例如:从基本情况表、成绩表中删除“男生男生”的相关记录。的相关记录。delete from 成绩表成绩表 where exists(select*from 学生基学生基本情况本情况 jbqk where 成绩表成绩表.学号学号=jbqk.学号学号 and jbqk.性别性别=男男)godelete from 学生基本情况学生基本情况 where 性别性别=男男goselec
28、t*from 学生基本情况学生基本情况select*from 成绩表成绩表思考:将本专业学生的成绩备份到思考:将本专业学生的成绩备份到dele_bak,并从,并从cjb中删中删除;同时在除;同时在jbqk表中添加字段表中添加字段Dele_flag、dele_table,并,并给给dele_flag赋值赋值1、给、给dele_table赋值备份表的名称。赋值备份表的名称。SQL查询的增强功能查询的增强功能1.COMPUTE子句子句2.使用使用COMPUTE和和COMPUTE BY子句既能浏览子句既能浏览详细数据又可看到统计的结果。详细数据又可看到统计的结果。3.主要功能:主要功能:4.1)生成合
29、计作为附加的汇总放在结果集的最后。)生成合计作为附加的汇总放在结果集的最后。5.2)当与)当与BY一起使用时,则在结果集生成控制中一起使用时,则在结果集生成控制中断与小计。断与小计。6.3)同一查询内可同时用)同一查询内可同时用COMPUTE和和COMPUTE BY子句。子句。7.4)如果使用)如果使用COMPUTE BY,则必须使用,则必须使用ORDER BY。COMPUTE子句子句其语法形式为:其语法形式为:COMPUTE 聚合函数聚合函数(column_name),n BY column_name,n 注意:注意:nCOMPUTE BY 子句不能与子句不能与SELECT INTO子句一起
30、使用。子句一起使用。nCOMPUTE子句中的列必须出现在子句中的列必须出现在SELECT子句的列表中。子句的列表中。nCOMPUTE BY表示按指定的列进行明细汇总,使用表示按指定的列进行明细汇总,使用BY关键字时必须同时使用关键字时必须同时使用ORDER BY子句,并且子句,并且COMPUTE BY后出现的列必须具有与后出现的列必须具有与ORDER BY后出现的后出现的列相同的顺序,且不能跳过其中的列。列相同的顺序,且不能跳过其中的列。例如:如果例如:如果ORDER BY子句按照如下顺序指定排序列:子句按照如下顺序指定排序列:ORDER BY a,b,c则则COMPUTE BY后的列表只能是
31、下面任一种形式:后的列表只能是下面任一种形式:BY a,b,cBY a,bBY aCOMPUTE子句子句应用举例:应用举例:1)对管理学院学生的学号、姓名、高等数学、)对管理学院学生的学号、姓名、高等数学、大学英语、数据库列出明细,并统计高等数学大学英语、数据库列出明细,并统计高等数学平均分、最高分及人数;平均分、最高分及人数;2)对管理学院学生按专业列出学号、姓名、)对管理学院学生按专业列出学号、姓名、专业、高等数学的明细,并统计高等数学的平专业、高等数学的明细,并统计高等数学的平均、最高、最低成绩;均、最高、最低成绩;3)按专业列出高等数学的明细,并统计各专)按专业列出高等数学的明细,并统
32、计各专业的平均、最高、最低成绩;然后计算全校的业的平均、最高、最低成绩;然后计算全校的平均、最高、最低成绩。平均、最高、最低成绩。WITH ROLLUP在在Group By子句后使用子句后使用with Rollup,将对,将对Group By指定的各列产生汇总行。指定的各列产生汇总行。例如:例如:1)统计各专业人数及总人数。)统计各专业人数及总人数。2)按专业统计男、女生人数,并统计专业总)按专业统计男、女生人数,并统计专业总人数及学生的总人数。人数及学生的总人数。3)按学院、专业统计数据库的平均、最高分,)按学院、专业统计数据库的平均、最高分,同时统计各个学院以及全校的平均、最高成绩。同时统
33、计各个学院以及全校的平均、最高成绩。WITH Cube在在Group By子句后使用子句后使用with Cube,将对,将对Group By指定的各列的所有可能组合均产生汇指定的各列的所有可能组合均产生汇总行。总行。例如:按专业统计男、女生人数,并统计专例如:按专业统计男、女生人数,并统计专业总人数及男、女生总人数、全部学生的总人业总人数及男、女生总人数、全部学生的总人数。数。Select 所学专业所学专业,性别性别,count(*)as 人数人数From jbqkGroup by 所学专业所学专业,性别性别 with cube常用字符串函数常用字符串函数1.ASCII(C):返回字符串最左端
34、字符的返回字符串最左端字符的ASCII值;值;例如:显示字符例如:显示字符A、a、0的的ASCII值值select ascii(A)as A,ascii(a)as a,ascii(0)as zero2.CHAR(N):返回返回n(0-255)对应的字符;对应的字符;例如:显示十进制数例如:显示十进制数65、97、48、32对应的字符对应的字符select char(65),char(97),char(48),char(32)3.STR(FLOAT,LEN,DECIMAL):将数转换成字将数转换成字符串;符串;FLOAT:表示要转换的数值;:表示要转换的数值;LEN:转换后的字符串的长度;转换后
35、的字符串的长度;DECIMAL:转换后的字符串中包含的小数位数。转换后的字符串中包含的小数位数。常用字符串函数常用字符串函数说明:说明:1)若没有给出长度,则对整数部分按默认长度)若没有给出长度,则对整数部分按默认长度10位进行转换;位进行转换;2)若给出的长度太短,则先满足整数部分,然后)若给出的长度太短,则先满足整数部分,然后是小数部分;是小数部分;3)若给出的长度不能满足整数部分的长度,则显)若给出的长度不能满足整数部分的长度,则显示示n个个*。例如:例如:select str(123.45),str(123.45,6,2),str(123.45,5,2),str(123.45,3,2)
36、,str(123.45,2,2)思考:长度不够时,是否进行四舍五入?思考:长度不够时,是否进行四舍五入?常用字符串函数常用字符串函数4.SUBSTRING(C,START,LENGTH):截取子串;截取子串;其中:其中:C待截取的字符串;待截取的字符串;START截取字符的起始位置;截取字符的起始位置;LENGTH截取字符的长度。截取字符的长度。例如:例如:SELECT SUBSTRING(12345ABCDEF,1,2),SUBSTRING(12345ABCDEF,5,5),SUBSTRING(12345ABCDEF,6,5),SUBSTRING(12345ABCDEF,10,5),SUBS
37、TRING(12345ABCDEF,12,2)思考:思考:1)位置、长度参数是否可以省略?)位置、长度参数是否可以省略?2)显示基本情况表中,学号)显示基本情况表中,学号01开头的学生信息开头的学生信息3)根据身份证号,显示)根据身份证号,显示1988年出生的学生信息年出生的学生信息常用字符串函数常用字符串函数4.LEFT(C,LEN):从左边开始截取给定长度从左边开始截取给定长度字符串;字符串;6.RIGHT(C,LEN):从右边开始截取给定长从右边开始截取给定长度字符串;度字符串;7.LEN(C):返回字符串的字符个数(不包括返回字符串的字符个数(不包括尾部空格)尾部空格)8.LTRIM(
38、C):删除字符串左端空格;删除字符串左端空格;9.RTRIM(C):删除字符串右端空格;删除字符串右端空格;10.CAST(表达式表达式 as 类型类型):将表达式转换为将表达式转换为SQL的某种类型。的某种类型。字符函数应用举例字符函数应用举例1 显示姓名最后一个字为显示姓名最后一个字为“强强”的学生;的学生;select*from 学生基本情况学生基本情况 where 姓名姓名 like%强强%goselect*from 学生基本情况学生基本情况 where right(rtrim(姓名姓名),1)=强强2 显示身份证号带显示身份证号带X的学生信息;的学生信息;select*from 学生
39、基本情况学生基本情况 where 身份证号身份证号 like%X%goselect*from 学生基本情况学生基本情况 where right(rtrim(upper(身份证号身份证号),1)=X3 显示姓名为两个字的学生信息;显示姓名为两个字的学生信息;select*from 学生基本情况学生基本情况 where len(rtrim(姓名姓名)=24 将学号、姓名、数学成绩组成一个显示内容;将学号、姓名、数学成绩组成一个显示内容;select 学号学号+姓名姓名+str(数学成绩数学成绩,5)as 组合显示组合显示 from 学生基本学生基本情况情况 思考:思考:1 如何查询姓名仅一个或两个
40、字的学生信息?如何查询姓名仅一个或两个字的学生信息?2 如何将学号、姓名、平均成绩进行组合显示?如何将学号、姓名、平均成绩进行组合显示?3 如何显示如何显示“管院管院”学生的信息?学生的信息?字符函数应用举例字符函数应用举例写出下列语句的结果:写出下列语句的结果:1.select ascii(123)+ascii(char(65)+len(str(100+23)+len(ltrim(str(12*10+23+456/1000)as len12.select ascii(str(456)+ascii(ltrim(str(456)+ascii(rtrim(str(456)as len23.sele
41、ct ascii(str(456,3)+len(left(管理管理,2)+len(right(学院学院,2)+len(rtrim(str(789.123)as len34.declare s1 char(100),s2 char(50)set s1=西安科技大学管理学院西安科技大学管理学院set s2=信息管理与信息系统信息管理与信息系统select substring(s1,1,1)+substring(s1,3,1)+substring(s1,5,1)+substring(s2,1,1)+substring(s2,3,1)+char(48)+char(49)go 常用日期时间函数常用日期时
42、间函数Getdate():返回当前系统的日期和时间;返回当前系统的日期和时间;Year(date):返回指定日期的年份;返回指定日期的年份;Month(date):返回指定日期的月份;返回指定日期的月份;Day(date):返回指定日期的某天;返回指定日期的某天;Dateadd(datepart,n,date):在指定日期上加上一在指定日期上加上一段时间,返回新的日期时间;段时间,返回新的日期时间;其中:其中:Datepart:yyyy;mm;dd;ww/wk;hh;mi;ss;Datediff(datepart,startdate,enddate):返回两返回两个日期的日期和时间的差值。个日
43、期的日期和时间的差值。Datename(datepart,date):返回指定日期部分的返回指定日期部分的字符串。字符串。日期时间函数举例日期时间函数举例1)select dateadd(yyyy,2,getdate()2)select 学号学号,姓名姓名,出生日期出生日期,datediff(yy,出生日期出生日期,getdate()as 年龄年龄 from 学生基本情况学生基本情况where month(getdate()=month(出生出生日期日期)3)select 2年后的今天是年后的今天是+datename(dw,dateadd(yyyy,2,getdate()as 星期星期日期时间
44、函数举例日期时间函数举例declare d datetime -声明局部变量声明局部变量set d=getdate()-将系统日期时间赋给变量将系统日期时间赋给变量select 今天是今天是+datename(yyyy,d)+年年+datename(mm,d)+月月+datename(dd,d)+日日+datename(hh,d)+时时+datename(mi,d)+分分+datename(ss,d)+秒秒+datename(dw,d)日期时间函数举例日期时间函数举例说明下列语句的作用:说明下列语句的作用:1.select top 5 姓名姓名,datediff(yy,出生日期出生日期,get
45、date()as 年龄年龄 from 学生基本情况学生基本情况 order by 2 desc2.select 学号学号,姓名姓名,出生日期出生日期,year(getdate()-year(出生日期出生日期)as age from 学生基本情况学生基本情况 where year(出生日期出生日期)1982 order by age desc3.select 学号学号,姓名姓名,出生日期出生日期 from 学生基学生基本情况本情况 where year(出生日期出生日期)between 1982 and 1985 order by 出生日期出生日期日期时间函数举例日期时间函数举例思考:思考:1
46、如何显示下一个月过生日的学生信息?如何显示下一个月过生日的学生信息?2 如何显示如何显示2008年年龄正好年年龄正好25岁的学生?岁的学生?3 如何显示身份证出生日期与实际出生日期如何显示身份证出生日期与实际出生日期不一致的学生信息?不一致的学生信息?4 如何显示闰年出生的学生信息?如何显示闰年出生的学生信息?5 列举日期函数的其他用法。列举日期函数的其他用法。数学函数数学函数1 绝对值函数:绝对值函数:Abs(n)返回表达式的绝对值;返回表达式的绝对值;2 随机函数:随机函数:Rand()返回返回(0,1)间的随机数间的随机数3 指数函数:指数函数:Exp(n)返回返回en;4 符号函数:符
47、号函数:Sign(n)返回表达式的符号(返回表达式的符号(N0,返回,返回1;N=0,返回,返回0;N0,返回,返回-1)5 对数函数:对数函数:Log(n);Log10(n);6 圆周率函数:圆周率函数:Pi();7 三角函数:三角函数:Sin();cos();tan();asin();acos();atan()8 幂函数:幂函数:Power(x,y);9 平方根函数:平方根函数:Sqrt(n);10 取整函数:取整函数:floor(n)如:如:select sign(2),pi(),sqrt(25),log(2.72),log10(10),power(2,5)数学函数应用数学函数应用数学函
48、数应用:数学函数应用:写出下列数学公式的写出下列数学公式的SQL语句:语句:1)2)产生产生50-100之间的随机数;之间的随机数;3)计算半径为)计算半径为3的圆的面积。的圆的面积。4)随机计算)随机计算sin三角函数值。三角函数值。5)计算计算0,45,90度的度的cos函数值。函数值。6)显示学号为奇数的学生信息。)显示学号为奇数的学生信息。7)显示学号为)显示学号为1,9,17,的学生信息。的学生信息。综合练习综合练习根据根据jbqk、cjb表快速生成数据表表快速生成数据表jb_cj,字段包括,字段包括学号、姓名、性别、出生日期、院系名称、所学专业、学号、姓名、性别、出生日期、院系名称
49、、所学专业、高等数学、大学英语、数据库、管理学;只保留表结高等数学、大学英语、数据库、管理学;只保留表结构,并完成下列操作:构,并完成下列操作:1)录入)录入“管理学院管理学院”学生信息,只包括学号学生信息,只包括学号,姓名姓名,性性别别,出生日期出生日期,院系名称院系名称,所学专业所学专业,高等数学高等数学,数据库的相数据库的相关信息;关信息;2)录入)录入“机械学院机械学院”学生信息,只包括学号学生信息,只包括学号,姓名姓名,性性别别,出生日期出生日期,院系名称院系名称,所学专业所学专业,大学英语大学英语,管理学的管理学的相关信息;相关信息;3)录入)录入“能源学院能源学院”、“人文学院人
50、文学院”学生信息;学生信息;综合练习综合练习4)修改)修改“学号学号”的宽度为的宽度为10,并将本专业的学号前,并将本专业的学号前6位改为位改为专业的编号、第专业的编号、第7位为位为1或或2(随机产生)、后两位不变;(随机产生)、后两位不变;5)添加)添加“年龄年龄”字段,并计算每个学生的年龄;字段,并计算每个学生的年龄;6)添加)添加“出生年月出生年月”字段,并按字段,并按“xx年年xx月月xx日日 星期星期x”格式格式显示;并删除显示;并删除”出生日期出生日期”字段;字段;7)将高等数学为空的记录,修改为)将高等数学为空的记录,修改为60,85)之间的随机数;之间的随机数;8)将大学英语为