SQL复杂查询语句总结.ppt_第1页
SQL复杂查询语句总结.ppt_第2页
SQL复杂查询语句总结.ppt_第3页
SQL复杂查询语句总结.ppt_第4页
SQL复杂查询语句总结.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章查询和查看,4.1SQL语言简介4.2SELECT数据访问基本方法4.3条件搜索到的SELECT语句4.4在多个表上搜索到的SELECT语句4.5Union操作和子查询语句4.6SQL公共函数及其使用方法,4.1SQL语言简介,Sql(structured query anguangul)Transact-SQL的配置1)数据定义语言:用于设置数据库、数据库对象。Createtable、view等。2)用于操作数据操作语言(dmldapanilationlanguage) :数据库中数据的命令。Select、insert、update、delete等。3)数据控制语言(DCLDataControlLanguage):用于控制对数据库版本的访问权限等。Grant、Revoke等。4)流程控制语言(FCLFlowControlLanguage):用于设计应用程序的语句。If、while、case等。5)其他语言元素:包括变量、运算符、函数和说明等。4.2SELECT数据查询,SELECT语句的默认格式为:Select Select _ listfrom table _ sourcewhere search _ conditiongroup by group _ by _ expression* | Column _ name | expression | asColumn _ alias| Column _ alias=expression .n,如何使用4.2.1表中的列,1 .所有字段选择SELECT*FROM表名,例如usepubsSELECT*fromauthors(显示authors中的所有信息,查询整个表)2。某些字段select列名1,列名2、列名nFROM表名示例:usestudentSELECT学编号、名字、性别FROM学生基本情况(显示有关学生基本中学编号、名字、性别字段的信息),如何使用SELECT语句,3 .字段的别名选择列名称1as新名称1,列名称2as新名称2、列名nas新名称nFROM表名(选择字段的标题显示为新名称)注意:新标题名为1)列表达式后提供列名selectxh学编号2(使用“=”选择列表达式select学编号=xh3)新标题名用单引号和双引号括起来。4)使用AS关键字查询列表达式和连接指定列名的SELECT语句(例如,authors的编号、名字、电话和地址的信息)时,请输入selectau_id号、au_lname姓、au_fname名、au_fname名在选择列表中使用表达式查询数据时,可以控制一个表中的返回值。例如:查询每个学生的总得分、平均得分。select学号,姓名,数学分数语言分数英语分数as总分数,(数学分数英语分数)/3as平均分数from学生基本情况,SELECT语句,4。字段数据的重复数据消除查询数据时,可能会有大量重复数据。SQL提供的Distinct关键字,用于删除select语句结果集中的重复数据。例如:1)查询学生来了哪个系的信息。Selectdistinct学科名称from学生基本情况2)查询具有某种专业的学生。从学生基本情况,SELECTdistinct专业,select语句,6 .限制查询记录的行数时,您可以使用:1)使用topn:返回前n个记录。2)使用topnpercent:返回前n%的记录。3)使用setrowcountn:返回前n个记录。N=0关闭示例:1)显示前5个记录selecttop5*from student basic 2)显示20%学生的信息select top 20 percent * from student basic 3)在所有select语句中5Setrowcount5select*from学生基本情况,如何使用4.2条件子句,1 .条件子句最常用的条件子句是where和having,使用它们指定一系列条件,并在执行操作时仅返回满足条件的记录。Having通常与Groupby一起使用,以说明返回组的条件。例如:1)显示有关男生的信息Select*from学生基本情况where性别=男性 2)显示男生数超过10人的学科信息Select学科名称,count(*)as男生数from学生基本情况where性别=按男性组算术表达式,比较运算符算术运算符包括:-,*,/,% expression比较运算符:expressionoperatorexpression比较运算符:是两个表达式相同还是返回True或False的最常用条件限制方法。WHERE子句中允许的比较运算符包括=(等于)、(大于)、=(等于)、(不等于)、=(不等于),(不大于),=80and数学分数=90,4.2SELECT语句的查询条件,4 .IN列表搜索标准IN列表搜索标准用于返回与给定列表中的任意值匹配的记录。格式如下:条件字段NOTIN(列表选项):查询数学得分为70、80或90的信息。Select*from学生基本情况where数学分数in(70,80,90)In列表条件是OR的简单形式,上面的语句为:select*from学生基本情况where数学得分=70OR数学得分=80OR数学得分=90,4.2SELECT语句中的查询条件,6。like匹配模式LIKE匹配模式是确定条件字符串是否与指定模式匹配。使用格式:条件字段NOTLIKE匹配模式SQL中的有效模式为:%:可匹配任何类型和长度的字符串。Like lee% _(下划线):匹配任何单个字符。Like 7105 _ :指定范围或集合中的单个字符。Like a-d :不属于指定范围或集合的任何单个字符示例:1)查看所有姓氏“章”的学生信息select*from学生基本情况where名称Like章%,4.2SELECT语句的查询条件,6null搜索标准NULL值比较的关键字为ISNULL或ISNOTNULL。其中NULL表示字段中的数据未知或不确定。格式如下:表达式ISNULL或表达式ISNOTNULL例如,查询缺少数学分数的学生信息。Select*from学生基本情况where数学分数为isnull。查询示例表,练习讨论,以10%的比例显示有关此专业的男生信息。查询“管理学院”专业分布情况。请确认这个专业的学生来自哪个省。查询有关英语不及格学生的信息,显示学号、名字、专业、英语原性、英语10、英语*1.1等字段信息。显示管理学院学生中不是“刘”和“张”的学生信息。查询“数学”在65-75之间、“英语”在70-90之间的学生信息。查询商学院、能源院、机械学院、人文学院的学号在01-07之间的学生信息。学生的“学号、名字、性别、身份证号码”分一列,“本科生姓名、专业”分一列,各数据分“、”;列名分别显示为“基本信息”、“成员资格”。询问总分,=(selectavg(数学成绩)FROM学生基本情况):1)如何查看本专业大学英语成绩=60及以下平均值的学生信息?2)统计管理学院各专业高级数学平均以下人数。查询大学英语分数最高的学生信息。Exists子查询,3)使用Exists的子查询使用Exists(或NotExists)导入子查询时,相当于执行现有测试。外部查询的Where子句测试子查询是否返回任何行。子查询实际上不生成数据,只返回True或False。例:查询成绩单上女学生的学习成绩。SELECT*FROM成绩单Whereexists(select*FROM学生基本情况where学号=成绩单)。学号及性别=女性)事故:1)如何查询商学院的学生成绩?询问这个专业高级数学失败的学生信息吗?根据练习讨论,数据表名称:JBQK,数据表名称:CJB,练习讨论,JBQK表,CJB表构建以下查询:1.查询高级数学分数高于平均分数的学生信息,显示学号、名字、专业、高级数学等。2.信息管理专业男生的高级数学成绩,电子商务专业女生的高级数学成绩,能源所有学生的数学成绩,按教职、专业、专业排序。3.查询“刘文东”等专业的学生信息,显示学号、名字、专业、各科成绩。基于查询的数据表,1基于查询创建新数据表如果需要保存查询结果,可以使用INTO子句创建新表,然后将结果保存到此新数据表中。命令默认格式:Select选择字段表Into新表名FROM现有表where条件,例如1)“学生基本情况”表为jbqkSelect * Intojbqkfrom学生基本情况,2)每个学科英语成绩的平均分数,SELECT学生基本情况。学科名称,AVG(成绩单)。大学英语)AS平均值,MAX(成绩单。大学英语)AS英语最佳,MIN(成绩单。大学英语)AS英语最低,COUNT(*)AS考试人数INTOEng_tjFROM学生基本情况INNERJOIN成绩单ON学生基本情况。学号=成绩单。学号组by学生基本情况。学科名称思维:1)商学院学业成就也将前10名学生的信息存储在数据表gl_10中,只存储学号、名字、专业、各科目分数。2)如何将此专业不及格学生的信息保存在数据表bgg _ xs中?保存学号、名字、专业、各课程成绩。3)将jbqk表的结构复制到jb_jg中。将查询结果插入数据表,2将数据插入现有表使用InsertIntoSelect语句将单个子查询结果添加到数据表。命令格式:查询InsertInto数据表Select。例如,创建临时数据表stu_1,以存放基本情况表、绩效表中查询的学号、名字、性别、年龄、总分数、平均分数等信息。createtable#stu_1(学号char(8),名字nchar(4),性别nchar(1),年龄tinyint,总分int,平均分deciiint学号,jbqk。名称,jbqk。性别、年份(getdate ()-年份(出生日期)、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第一学期总分smallint,第一学期平均decimal(5,(2)goupdate学生基本情况set第一学期总分=(selectcjb)。高等数学cjb。大学英语cjb。基于计算机的cjb。经营from成绩单cjbwhere学生基本知识。学号=cjb。学号),第一学期平均值=(select(cjb .高等数学cjb。大学英语cjb。基于计算机的cjb。管理)/4from成绩单cjbwhere学生基本情况。学习编号=cjb。学习编号)goselect*from学生基本情况思维:1)对未能通过本专业高级数学的学生,数学成绩提高了15%。清空不是该专业学生的各科目分数。删除记录作为子查询,删除记录作为子查询4 Delete命令的where子句可以使用子查询从数据表中删除相关记录。例如:基本情况表,从成绩单中删除“男生”相关记录。Deletefrom成绩单where exiists (select*from学生基本情况jbqkwhere成绩单)。学号=jbqk。学号andjbqk。性别=男性)godeletefrom学生基本情况where性别=男性goselect*from学生基本情况select*from成绩单事故:将此专业学生的成绩备份到dele_bak,然后从cjb中删除;此外,将Dele_flag、dele_table

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论