




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章查询与视图 4 1SQL语言简介4 2SELECT数据访问基本方法4 3条件检索的SELECT语句4 4从多张表检索的SELECT语句4 5Union操作和子查询语句4 6SQL常用函数及其使用方法 4 1SQL语言简介 SQL StructuredQueryLanguage 结构化查询语言 是一种介于关系代数与关系运算之间的语言 主要功能包括查询 操纵 定义和控制等方面 是一个通用的 功能极强的关系数据库语言 Transact SQL的组成1 数据定义语言 DDLDataDefinitionLanguage 用来建立数据库 数据库对象 如Createtable view等 2 数据操纵语言 DMLDataManipulationLanguage 用来操纵数据库中的数据的命令 如select insert update delete等 3 数据控制语言 DCLDataControlLanguage 用来控制数据库组建的存取权限等 如Grant Revoke等 4 流程控制语言 FCLFlowControlLanguage 用来设计应用程序的语句 如if while case等 5 其他语言要素 ALEAdditionallanguageElement 包括变量 运算符 函数和注解等 4 2SELECT数据查询 SELECT语句的基本格式如下 SELECTselect listFROMtable source WHEREsearch condition GROUPBYgroup by expression HAVINGsearch condition ORDERBYorder expression ASC DESC INTOnew table SELECT子句 SELECT ALL DISTINCT TOPn PERCENT table name view name table alias column name expression AS column alias column alias expression n 4 2 1表中列的使用方法 1 选择所有字段SELECT FROM表名如 usepubsselect fromauthors 显示authors中的所有信息 全表查询 2 选择部分字段SELECT列名1 列名2 列名n FROM表名如 usestudentselect学号 姓名 性别from学生基本情况 显示学生基本情况中学号 姓名 性别字段的信息 SELECT语句的使用方式 3 为字段设置别名SELECT列名1as新名1 列名2as新名2 列名nas新名n FROM表名 将选择字段的标题按新的名称显示 注意 新标题的名称可以有下列方式 1 在列表达式后面给出列名selectxh学号2 用 来连接列表达式select学号 xh3 新标题的名称用单引号 双引号括起来 4 用AS关键字来连接列表达式和指定的列名 SELECT语句 例如 查询authors中编号 姓名 电话 地址的信息 可以采用以下方式 selectau id编号 au lname姓 au fname名 phone电话 address地址fromauthorsselect编号 au id 姓 au lname 名 au fname 电话 phone 地址 addressfromauthorsselectau id 编号 au lname 姓 au fname 名 phone 电话 address 地址 fromauthorsselectau id 编号 au lname 姓 au fname 名 phone 电话 address 地址 fromauthorsselectau idas编号 au lnameas姓 au fnameas名 phoneas电话 addressas地址fromauthors SELECT语句 4 在选择列表中使用表达式在查询数据时 可以通过运算操作来控制从一个表中的返回值 例如 查询每个学生的总成绩 平均成绩 select学号 姓名 数学成绩 语文成绩 英语成绩as总成绩 数学成绩 语文成绩 英语成绩 3as平均成绩from学生基本情况 SELECT语句 4 消除字段数据的重复值在查询数据时 可能会有许多重复的数据 SQL提供的Distinct关键字 可以从select语句的结果集中消除重复的数据 例如 1 查询学生来至哪些院系的信息 selectdistinct院系名称from学生基本情况2 查询有哪些专业的学生 selectdistinct所学专业from学生基本情况 SELECT语句 6 限制记录的行数在限制查询记录的行数时 可以使用下列方式 1 使用topn 返回前n条记录 2 使用topnpercent 返回前n 条记录 3 使用setrowcountn 返回前n条记录 n 0关闭例如 1 显示前5条记录selecttop5 from学生基本情况2 显示20 学生的信息selecttop20percent from学生基本情况3 对所有select语句 均显示5条记录 setrowcount5select from学生基本情况 4 2条件子句的使用方法 1 条件子句最常用的条件子句是where和having 用它们来指定一系列条件 执行操作时只返回满足条件的记录 Having通常与Groupby一起使用 用来说明返回分组的条件 例如 1 显示男生的相关信息Select from学生基本情况where性别 男 2 显示男生人数超过10人的院系信息select院系名称 count as男生人数from学生基本情况where性别 男 groupby院系名称havingcount 10 4 2SELECT语句的查询条件 2 算术表达式 比较运算符算术运算符有 使用算术表达式的一般形式为 expressionoperatorexpression比较运算符 是最为常见的一种条件限制方式 用于测试两个表达式是否相同 返回值为True或False WHERE子句中允许出现的比较运算符有 等于 大于 对于等于 不等于 不等于 不大于 不小于 4 2SELECT语句的查询条件 3 逻辑表达式在Transact SQL中可以使用的逻辑运算符有三个 NOT 逻辑反 对指定的布尔表达式求反 AND 逻辑与 只有当两个条件都是TRUE时取值为TRUE OR 逻辑或 当两个条件中任何一个条件是TRUE时 取值为TRUE 优先顺序 先Not 再And 后Or 4 2SELECT语句的查询条件 4 BETWEEN条件BETWEEN用于搜索介于两个指定值之间的所有信息 且包括两个指定的值 格式为 条件字段 NOT BETWEENbegin expressionANDend expression例如 查询数学成绩在80到90之间的信息 Select from学生基本情况where数学成绩between80and90Between是AND的简化用法 上面的语句等价于 Select from学生基本情况where数学成绩 80and数学成绩 90 4 2SELECT语句的查询条件 4 IN列表搜索条件IN列表搜索条件用于返回与给定的列表中任意一个值相匹配的记录 格式为 条件字段 NOT IN 列表选项 例如 查询数学成绩为70 80 90的信息 select from学生基本情况where数学成绩in 70 80 90 In列表条件是OR的简化形式 上面语句等价于 select from学生基本情况where数学成绩 70OR数学成绩 80OR数学成绩 90 4 2SELECT语句的查询条件 6 LIKE匹配模式LIKE匹配模式是确定条件字符串是否与指定的模式匹配 使用格式 条件字段 NOT LIKE匹配模式SQL中的有效模式包括 可匹配任意类型和长度的字符串 Like 李 下划线 可匹配任何单个字符 Like 71005 指定范围或集合中的任何单个字符 Like a d 不属于指定范围或集合的任何单个字符例如 1 查询所有姓 张 的学生信息select from学生基本情况where姓名like 张 4 2SELECT语句的查询条件 6 NULL搜索条件空值比较的关键字是ISNULL或ISNOTNULL 其中NULL表示字段的数据未知或不确定 格式为 表达式ISNULL或表达式ISNOTNULL例如 查询缺少数学成绩的学生信息 select from学生基本情况where数学成绩isnull 查询示例表 练习讨论 按10 的比例显示本专业的男生信息 查询 管理学院 专业分布情况 查询本专业学生来自哪些省份 查询英语不及格学生的信息 显示学号 姓名 专业 英语原成绩 英语 10 英语 1 1等字段信息 显示管理学院学生中 不姓 刘 和 张 的学生信息 查询 数学 在65 75之间 而 英语 不在70 90之间的学生信息 查询 管理学院 能源学院 机械学院 人文学院 学号在01 07之间的学生信息 将学生的 学号 姓名 性别 身份证号 作为一列 院系名称 专业 作为一列 各数据之间用 分隔 列名分别为 基本信息 隶属关系 进行显示 查询总成绩 210 语文成绩在75 90间 且不属于 人文学院 的学生信息 排序和分组的使用 排序使用Orderby对查询结果中的一个或多个字段进行排序 排序可以升序 ASC 也可以是降序 DESC 若未指定排序方式 默认升序 例如 1 按姓名升序查询学生信息 select from学生基本情况orderby姓名2 查询数学成绩前5名的学生信息selecttop5 from学生基本情况orderby数学成绩desc思考 1 如何按院系升序 姓名降序查询 2 如何查询总成绩前10名的学生信息 3 如何按性别降序 学号升序 平均成绩升序查询 4 查询本专业女生中年龄最小的10个学生信息 数据记录的分组 使用GroupBy进行分组 返回的结果中 每一行都产生聚合值 常用的聚合函数包括 Sum 返回一个数字列或计算列的总和Avg 返回一个数字列或计算列的平均值Min 返回一个数字列或计算列的最小值Max 返回一个数字列或计算列的最大值Count 返回非NULL值的记录个数count 返回符合条件的记录个数 排序与分组 例如 1 统计各个院系的学生人数 select院系名称 count as人数from学生基本情况groupby院系名称2 统计各个院系的男生 女生的人数 select院系名称 性别 count as人数from学生基本情况groupby院系名称 性别思考 1 查询各个专业 不同省份的学生人数 2 查询数据表中所有男生 女生的人数 3 查询本专业数学成绩的总分 平均分 最高分 最低分 4 按性别查询本专业英语的平均分 最高分 最低分和人数 4 3数据连接与子查询 数据连接查询根据各个表之间的逻辑关系 从两个或多个表中检索数据 并把所有检索到的数据通过一个数据集返回 1 用WHERE进行数据连接使用WHERE子句可以实现多个表间的数据连接 例如 从学生基本情况表与成绩表中查询学生的学号 姓名 专业 各门课程成绩 SELECT学生基本情况 学号 姓名 所学专业 成绩表 高等数学 成绩表 大学英语 计算机基础 管理学FROM学生基本情况 成绩表where学生基本情况 学号 成绩表 学号 WHERE数据连接 如果数据表名称太长 造成书写麻烦 可以给数据表另外取一个简洁的名称 即别名 例如 将上面语句中的基本情况表改名为jbqk 将成绩表改名为cjb 则语句变成 SELECTjbqk 学号 姓名 所学专业 高等数学 大学英语 cjb 计算机基础 管理学FROM学生基本情况asjbqk 成绩表ascjbwherejbqk 学号 cjb 学号或者改成 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqk 成绩表cjbwherejbqk 学号 cjb 学号 JoinOn连接 2用JOINON连接在Select语句中 通常使用Join On连接词来实现表间的连接 例如 上面的Where连接可以改成 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkjoin成绩表cjbonjbqk 学号 cjb 学号 连接查询 3用连接关键字进行连接从多个表中查询相关数据 最好在FROM子句中指定连接条件 这样可以将指定的连接条件与WHERE子句的搜索条件分开 连接查询的主要用法为 Select选择字段列表From数据表连接的类型其它表 on连接条件 Where搜索条件 OrderBy排序字段 InnerJoin 1 内连接 InnerJoin 内连接是最常用的连接操作 连接的结果是从两个表中挑选出符合连接条件的数据 如果数据无法满足连接条件则将其丢弃 例如 使用内连接 从学生基本情况表与成绩表中查询学生的学号 姓名 专业 各门课程成绩 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkinnerjoin成绩表cjbonjbqk 学号 cjb 学号 OuterJoin 2 外连接 OuterJoin 外连接中 参与连接的表有主从之分 以主表的每行数据去匹配从表的数据行 符合条件的数据将直接返回到查询结果中 如果主表的行在从表中没有相匹配的行 则对应从表的列将填上NULL值 外连接的类型有 左连接 LeftJoin LeftOuterJoin 右连接 RightJoin RightOuterJoin 完全连接 FullJoin FullOuterJoin LeftJoin 1 左连接 LeftJoin 以连接左边的表为主表 即左边表的所有行都显示出来 若左边表在从表中没有与连接条件相匹配的数据行 则从表不匹配的列填上NULL 例如 前面的查询 使用左连接查询 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkleftjoin成绩表cjbonjbqk 学号 cjb 学号 RightJoin 2 右连接 RIGHTJoin 以连接右边的表为主表 即右边表的所有行都显示出来 若右边表在左表中没有与连接条件相匹配的数据行 则左表不匹配的列填上NULL 例如 前面的查询 使用右连接查询 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkRightjoin成绩表cjbonjbqk 学号 cjb 学号 FullJoin 3 完全连接 FullJoin 不管另一边的表是否有匹配的行 查询结果将显示两个表的所有行 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkfulljoin成绩表cjbonjbqk 学号 cjb 学号 CrossJoin 3 交叉连接 CrossJoin 交叉连接产生的查询结果的行数是第一个表的行数乘以第二个表的行数 即迪卡尔积 如第一个表有15条记录 第二表有20条记录 则交叉连接返回的记录有300条 对上面的例子 使用交叉连接 SELECTjbqk 学号 jbqk 姓名 jbqk 所学专业 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学FROM学生基本情况jbqkcrossjoin成绩表cjb 练习讨论 数据表名 JBQK 数据表名 CJB 练习讨论 1 查询本专业陕西前5名学生各门课程的学习成绩 按省份升序 性别降序 姓名升序进行排序 显示学生的学号 姓名 性别 省份及各门课程成绩 2 统计管理学院各专业男女生高等数学的平均分 最高分 最低分及人数 按专业降序排列 3 按内连接 左连接 右连接 完全连接显示两个表的信息 按专业排序 4 统计管理学院各专业大学英语的平均分 学习人数 按专业降序排列 只显示学习人数不低于3人的专业 5 统计总成绩前10名的学生 显示学号 姓名 专业 各门课程成绩及总成绩 按总成绩 专业 学号排序 联合查询 4 联合查询 Union 使用Union子句将两个或多个Select语句的结果组合成一个结果集 按照第一个Select的字段列表进行显示 Union会自动将重复的数据行删除 但要求每个Select语句的结果必须具有相同的结构和列数 并且每列的数据类型也必须兼容 Union查询的基本格式 Select from Where条件 UnionSelect from Where条件 n OrderBy排序字段 联合查询 例如 将学生基本情况表中以01开头的学号 各门课程的成绩与成绩表的学号 各门课程成绩联合查询 SELECT学号 数学 语文 英语FROM学生基本情况where学号like 01 UnionSELECT学号 高等数学 大学英语 计算机基础FROM成绩表思考 1 如何查询男 女生各5名的学习成绩 按性别和总成绩排序 2 如何查询管理学院 能源学院 机械学院高等数学成绩的最高分 最低分 平均分 2子查询 Subquery 子查询是一条包含在另外一条Select语句里面的Select语句 外层的Select语句叫外部查询 内层的Select语句叫内部查询 或子查询 包括子查询的Select语句主要格式有 1 where字段名 not IN 子查询 2 WHERE字段名关系运算符 子查询 3 where not Exists 子查询 IN子查询 使用IN的子查询使用IN 或NOTIN 的子查询返回的查询结果是一列零值或多列值 子查询返回结果之后 外部查询可以使用这些结果 格式 where字段名IN 子查询 例如 查询与 张海燕 同省份的学生信息 SELECT FROM学生基本情况Where省份IN select省份FROM学生基本情况where姓名 张海燕 思考 1 显示高等数学在80 90间的学生基本信息 显示学号 姓名 专业 高等数学等信息 2 查询 5个年龄较小 的所有学生信息 3 查询学生基本信息 并统计高等数学的平均成绩 每人与平均成绩的差值 2 使用比较运算符的子查询子查询可以由一个比较运算符引入 比较运算符可以是 selectavg 数学成绩 FROM学生基本情况 思考 1 如何查询本专业大学英语成绩 60且低于平均分的学生信息 2 统计管理学院各专业高等数学低于平均分的人数 3 查询大学英语成绩最高分的学生信息 Exists子查询 3 使用Exists的子查询使用Exists 或NotExists 引入子查询时 就相当于进行一次存在测试 外部查询的Where子句测试子查询返回的行是否存在 子查询实际上不产生任何数据 它只返回True或False 例如 查询成绩表中女生的学习成绩 SELECT FROM成绩表Whereexists select FROM学生基本情况where学号 成绩表 学号and性别 女 思考 1 如何查询管理学院的学生成绩 2 查询本专业高等数学不及格的学生信息 练习讨论 数据表名 JBQK 数据表名 CJB 练习讨论 根据JBQK表 CJB表完成下列查询 1 查询高等数学成绩高于平均成绩的学生信息 显示学号 姓名 专业 高等数学等 2 查询信息管理专业男生的高等数学成绩 电子商务专业女生的高等数学成绩 能源学院所有学生的数学成绩 显示显示学号 姓名 性别 院系 专业 高等数学等 按院系 专业排序 3 查询与 刘文东 同专业的学生信息 显示显示学号 姓名 专业 各门课程成绩 基于查询的数据表 1基于查询生成新的数据表如果需要将查询结果保存下来 使用INTO子句可以生成一个新表并将结果保存在这个新的数据表中 命令基本格式 Select选择字段表Into新的表名FROM已有的表 where条件 例如 1 将 学生基本情况 表复制成jbqkSelect Intojbqkfrom学生基本情况 2 统计各个院系英语成绩的平均分 最高分 最低分 考试人数 结果放在Eng tj表 SELECT学生基本情况 院系名称 AVG 成绩表 大学英语 AS英语平均 MAX 成绩表 大学英语 AS英语最高 MIN 成绩表 大学英语 AS英语最低 COUNT AS考试人数INTOEng tjFROM学生基本情况INNERJOIN成绩表ON学生基本情况 学号 成绩表 学号GROUPBY学生基本情况 院系名称思考 1 将管理学院学习成绩前10名学生的信息保存到数据表gl 10中 只保存学号 姓名 专业 各门课程成绩 2 如何将本专业不及格学生的信息保存在数据表bjg xs 保存学号 姓名 专业 各门课程成绩 3 将jbqk表的结构复制到jb jg中 将查询结果插入数据表 2向已有表插入数据用InsertInto Select语句 可以将一个子查询的结果添加到数据表中 命令格式 InsertInto数据表Select查询例如 创建临时数据表stu 1 存放从基本情况表 成绩表中查询出来的学号 姓名 性别 年龄 总成绩 平均成绩等信息 createtable stu 1 学号char 8 姓名nchar 4 性别nchar 1 年龄tinyint 总成绩int 平均成绩decimal 5 2 goinsertinto stu 1selectjbqk 学号 jbqk 姓名 jbqk 性别 year getdate year 出生日期 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学 cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学 4from学生基本情况jbqkinnerjoin成绩表cjbonjbqk 学号 cjb 学号goselect from stu 1思考 如何将信息管理 电子商务专业学习成绩前5名的学生信息放到与基本情况表结构类似的数据表inf ec中 子查询修改记录 3用子查询修改记录Update语句中 Set子句 Where子句均可以使用子查询 例如 在基本情况表中添加字段 第1学期总分 第1学期平均 并修改这些字段的值 altertable学生基本情况add第1学期总分smallint 第1学期平均decimal 5 2 goupdate学生基本情况set第1学期总分 selectcjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学from成绩表cjbwhere学生基本情况 学号 cjb 学号 第1学期平均 select cjb 高等数学 cjb 大学英语 cjb 计算机基础 cjb 管理学 4from成绩表cjbwhere学生基本情况 学号 cjb 学号 goselect from学生基本情况思考 1 对本专业高等数学不及格的学生 将数学成绩提高15 2 将不是本专业学生的各门课程成绩清空 子查询删除记录 4用子查询删除记录Delete命令的where子句可以使用子查询来从数据表中删除相关记录 例如 从基本情况表 成绩表中删除 男生 的相关记录 deletefrom成绩表whereexists select from学生基本情况jbqkwhere成绩表 学号 jbqk 学号andjbqk 性别 男 godeletefrom学生基本情况where性别 男 goselect from学生基本情况select from成绩表思考 将本专业学生的成绩备份到dele bak 并从cjb中删除 同时在jbqk表中添加字段Dele flag dele table 并给dele flag赋值1 给dele table赋值备份表的名称 SQL查询的增强功能 COMPUTE子句使用COMPUTE和COMPUTEBY子句既能浏览详细数据又可看到统计的结果 主要功能 1 生成合计作为附加的汇总放在结果集的最后 2 当与BY一起使用时 则在结果集生成控制中断与小计 3 同一查询内可同时用COMPUTE和COMPUTEBY子句 4 如果使用COMPUTEBY 则必须使用ORDERBY COMPUTE子句 其语法形式为 COMPUTE聚合函数 column name n BYcolumn name n 注意 COMPUTE BY 子句不能与SELECTINTO子句一起使用 COMPUTE子句中的列必须出现在SELECT子句的列表中 COMPUTEBY表示按指定的列进行明细汇总 使用BY关键字时必须同时使用ORDERBY子句 并且COMPUTEBY后出现的列必须具有与ORDERBY后出现的列相同的顺序 且不能跳过其中的列 例如 如果ORDERBY子句按照如下顺序指定排序列 ORDERBYa b c则COMPUTEBY后的列表只能是下面任一种形式 BYa b cBYa bBYa COMPUTE子句 应用举例 1 对管理学院学生的学号 姓名 高等数学 大学英语 数据库列出明细 并统计高等数学平均分 最高分及人数 2 对管理学院学生按专业列出学号 姓名 专业 高等数学的明细 并统计高等数学的平均 最高 最低成绩 3 按专业列出高等数学的明细 并统计各专业的平均 最高 最低成绩 然后计算全校的平均 最高 最低成绩 WITHROLLUP 在GroupBy子句后使用withRollup 将对GroupBy指定的各列产生汇总行 例如 1 统计各专业人数及总人数 2 按专业统计男 女生人数 并统计专业总人数及学生的总人数 3 按学院 专业统计数据库的平均 最高分 同时统计各个学院以及全校的平均 最高成绩 WITHCube 在GroupBy子句后使用withCube 将对GroupBy指定的各列的所有可能组合均产生汇总行 例如 按专业统计男 女生人数 并统计专业总人数及男 女生总人数 全部学生的总人数 Select所学专业 性别 count as人数FromjbqkGroupby所学专业 性别withcube 常用字符串函数 1 ASCII C 返回字符串最左端字符的ASCII值 例如 显示字符 A a 0 的ASCII值selectascii A asA ascii a asa ascii 0 aszero2 CHAR N 返回n 0 255 对应的字符 例如 显示十进制数65 97 48 32对应的字符selectchar 65 char 97 char 48 char 32 3 STR FLOAT LEN DECIMAL 将数转换成字符串 FLOAT 表示要转换的数值 LEN 转换后的字符串的长度 DECIMAL 转换后的字符串中包含的小数位数 常用字符串函数 说明 1 若没有给出长度 则对整数部分按默认长度10位进行转换 2 若给出的长度太短 则先满足整数部分 然后是小数部分 3 若给出的长度不能满足整数部分的长度 则显示n个 例如 selectstr 123 45 str 123 45 6 2 str 123 45 5 2 str 123 45 3 2 str 123 45 2 2 思考 长度不够时 是否进行四舍五入 常用字符串函数 4 SUBSTRING C START LENGTH 截取子串 其中 C 待截取的字符串 START 截取字符的起始位置 LENGTH 截取字符的长度 例如 SELECTSUBSTRING 12345ABCDEF 1 2 SUBSTRING 12345ABCDEF 5 5 SUBSTRING 12345ABCDEF 6 5 SUBSTRING 12345ABCDEF 10 5 SUBSTRING 12345ABCDEF 12 2 思考 1 位置 长度参数是否可以省略 2 显示基本情况表中 学号 01 开头的学生信息3 根据身份证号 显示1988年出生的学生信息 常用字符串函数 4 LEFT C LEN 从左边开始截取给定长度字符串 6 RIGHT C LEN 从右边开始截取给定长度字符串 7 LEN C 返回字符串的字符个数 不包括尾部空格 8 LTRIM C 删除字符串左端空格 9 RTRIM C 删除字符串右端空格 10 CAST 表达式as类型 将表达式转换为SQL的某种类型 字符函数应用举例 1显示姓名最后一个字为 强 的学生 select from学生基本情况where姓名like 强 goselect from学生基本情况whereright rtrim 姓名 1 强 2显示身份证号带 X 的学生信息 select from学生基本情况where身份证号like X goselect from学生基本情况whereright rtrim upper 身份证号 1 X 3显示姓名为两个字的学生信息 select from学生基本情况wherelen rtrim 姓名 24将学号 姓名 数学成绩组成一个显示内容 select学号 姓名 str 数学成绩 5 as组合显示from学生基本情况思考 1如何查询姓名仅一个或两个字的学生信息 2如何将学号 姓名 平均成绩进行组合显示 3如何显示 管院 学生的信息 字符函数应用举例 写出下列语句的结果 1 selectascii 123 ascii char 65 len str 100 23 len ltrim str 12 10 23 456 1000 aslen12 selectascii str 456 ascii ltrim str 456 ascii rtrim str 456 aslen23 selectascii str 456 3 len left 管理 2 len right 学院 2 len rtrim str 789 123 aslen34 declare s1char 100 s2char 50 set s1 西安科技大学管理学院 set s2 信息管理与信息系统 selectsubstring s1 1 1 substring s1 3 1 substring s1 5 1 substring s2 1 1 substring s2 3 1 char 48 char 49 go 常用日期时间函数 Getdate 返回当前系统的日期和时间 Year date 返回指定日期的年份 Month date 返回指定日期的月份 Day date 返回指定日期的某天 Dateadd datepart n date 在指定日期上加上一段时间 返回新的日期时间 其中 Datepart yyyy mm dd ww wk hh mi ss Datediff datepart startdate enddate 返回两个日期的日期和时间的差值 Datename datepart date 返回指定日期部分的字符串 日期时间函数举例 1 selectdateadd yyyy 2 getdate 2 select学号 姓名 出生日期 datediff yy 出生日期 getdate as年龄from学生基本情况wheremonth getdate month 出生日期 3 select 2年后的今天是 date
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论