资源描述:
《Transact-SQL第10章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章Transact-SQL1SQL的特点1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方法5.语言简洁,易学易用2语言简捷,易学易用3SELECT语句是掌握SQL语言的关键在创建视图、插入数据(大部分)均需查询语句。4★单表查询★连接查询★嵌套查询★集合查询9.2.4数据查询5SELECT语句的语法格式为:语句格式SELECT[ALL
2、DISTINCT]<目标列表达式>[,<目标列表达式>]…[INTO新表名]FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>
3、]][ORDERBY<列名2>[ASC
4、DESC]]SELECT语句概述6语句格式SELECT子句:指定要显示的属性列FROM子句:指定查询对象(基本表或视图)WHERE子句:指定查询条件GROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HAVING短语:筛选出只有满足指定条件的组ORDERBY子句:对查询结果表按指定列值的升序或降序排序7注意把SELECT语句和关系代数表达式联系起来考虑问题SELECT-FROM-WHERE句型∏A1…An(σF(R1×R2×……×Rn))SELECTA1,…,AnFROMR1,R2……,
5、RnWHEREF8示例数据库Xjgl(学籍管理)数据库学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)9★单表查询查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列(投影查询)二、选择表中的若干元组(选择查询)三、对查询结果排序(排序查询)四、使用集函数五、对查询结果分组101、查询指定列[例1]查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent[例2]查询全体学生的姓名、学号、所在系。SELECTS
6、name,Sno,SdeptFROMStudent一、选择表中的若干列验证112、查询全部列[例3]查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent或SELECT*FROMStudent123、查询经过计算的值SELECT子句的<目标列表达式>为表达式算术表达式字符串常量函数列别名等133.查询经过计算的值(续)[例4]查全体学生的姓名及其出生年份。SELECTSname,2000-SageFROMStudent输出结果:Sname无列名----------------------李勇1976刘晨1977王名1978张
7、立1978143.查询经过计算的值(续)[例5]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。SELECTSname,'YearofBirth:',2000-Sage,LOWER(Sdept)FROMStudent验证15例题(续)输出结果:Sname无列名无列名无列名----------------------------------------------李勇YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is16[例6]使用列别名改变查询结果的列标题
8、SELECTSnameNAME,'YearofBirth:'BIRTH,2000-SageBIRTHDAY,LOWER(Sdept)DEPARTMENTFROMStudent或SELECTSnameasNAME,'YearofBirth:'asBIRTH,2000-SageasBIRTHDAY,LOWER(Sdept)asDEPARTMENTFROMStudent输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------李勇YearofBirth:1976cs刘晨Y
9、earofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is17二、选择表中的若干元组消除取值重复的行查询满足条件的元组181.消除取值重复的行在SELECT子句中使用DISTINCT短语假设SC表中有下列数据SnoCnoGrade---------------------950011929500128595001388950022909500238019ALL与DISTINCT[例7]查询选修了课程的学生学号。(1)SELECTSnoF