版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统的原理和设计第5讲SQL语言-2,主讲人:古曦电话子邮件:主要内容,SQL概述数据定义数据更新1简单查询连接查询,聚合查询集操作嵌套子查询SQL查询通用格式数据更新2视图,12:09,2,1简单查询,1.1投影操作1.2选择操作1.3排序操作1.4查询表,1.1投影操作。SQL查询的基本结构包括三个子句:SELECT子句对应于投影操作,指定查询结果或表达式中所需的属性FROM子句对应于笛卡尔乘积,并给出查询中涉及的表。表可以是基本表、视图或查询表。WHERE子句对应于选择操作,指定查询结果元组所需的选择条件。注意:选择是必要的,其他是可选的。12:09,4,
2、基本语法是,选择A1,A2,An /*要从R2 R1找到的属性或表达式*/FROM,Rm /*查询中涉及的表*/WHERE P /*表示谓词(即选择条件),如果省略WHERE子句,则指示P为真的查询结果*/SQL允许包括重复元组的执行过程:首先,在表R1、R2、Rm,然后在笛卡儿积中选择使谓词p为真的记录,然后在属性列A1,A2,An,在不消除重复元组的情况下,12:09,5,1.1.1查询指定列,选择表中的所有列或指定列,并选择以确定要查询的属性。3.1查询所有班级的班级编号和班级名称,选择所属学院的班级编号、班级名称。该查询的执行过程是:依次从类表中取出每个元组,只选择类号、类名和从类元组
3、中提取值,形成新的元组,最后将这些新元组组织成结果关系输出。12:09,6,1.1.2消除重复元组,需要消除重复元组。使用DISTINCT关键字示例3.2查询所有学院的名称。从类中选择机构上述查询不消除重复元组消除重复元组从类中选择不同的机构,12:09,7,1.1.3以两种方式查询所有列:在SELECT子句中列出所有列(您可以更改列的显示顺序);使用*符号,*表示所有属性,并按表定义的顺序显示所有属性。示例3.3查询所有类别的所有信息。选择classno,classname,classnum,grade,institute from class或select * from class,12:
4、09,8,1.1.4,为属性列赋予别名,这可以为属性列赋予可理解的列名。例如,使用中文将列名显示为属性列以采用别名特别适合于计算列。示例3.4查询所有班级的学院、班级编号和班级名称。如果需要用中文显示列名,可以用as关键字取别名:选择学院作为附属学院,班级编号,班级名称作为班级名称,12:09,9,1.1.5。查询计算列。您可以使用属性、常数、函数和表达式示例3.5来查询每个类的编号、类名以及该类现在的等级,并将类编号中的大写字母更改为小写字母以输出SELECT lower(类编号)、类名、Year(curate()-grade AS grade FROM Class函数lower()将大写字
5、母更改为小写字母函数curate()获取当前系统的日期其他函数:now(),getdate()函数Year()提取日期中的年份,12336009,10,1.2选择操作(其中常用的查询条件有:比较操作:=,(或!=)范围查询:BETWEEN.与集查询:在空查询中:是空字符匹配查询:类似逻辑查询:与,或,不是,12:09,11,1.2.1比较操作,比较运算符,=,(或!=)例3.6查询2007级的班级编号、班级名称和学院。选择classNo,className,institute FROM Class WHERE grade=2007,12:09,12,执行查询的方式可能有很多:全表扫描法依次取出
6、Class表中的每个元组,判断元组的等级属性值是否等于2007;如果是,取出元组的类号、类名和学院属性,形成新的元组;最后,所有新的元组被组织成结果关系和输出。这种方法适用于小桌子。或者该表在等级属性列上没有索引。如果表在等级属性列上有索引,并且满足条件的记录不多,则可以使用索引搜索方法来检索数据。数据库管理系统的查询优化器选择使用哪种方法。详见第8章,12:09,13,在学生表中查询19岁以上学生的学号、姓名和出生日期。从学生中选择学生编号、学生姓名、生日,其中年份(curate()-年份(生日)=19,示例3.7,12:09,14, 1.2.2范围查询,BETWEEN.属性值在一定范围内的
7、元组不在中间.属性值不在一定范围内的与元组是属性的下限值。“与”之后是属性的上限值。示例3.8在课程评分表中查询学生编号、课程编号和分数在8090之间的相应年级。从得分在80到90之间的分数中选择学生编号、课程编号和分数。这个查询也可以通过逻辑运算“与”来实现。参见示例3.22、12:09、15和3.9。在成绩表中查询成绩不在8090分之间的学生的学号、课程号和相应的成绩。从分数不在80和90之间的分数中选择学生编号、课程编号、分数。这个查询也可以通过使用逻辑操作或者,如示例3.23、12:09、16、1.2.3中所示的set query来实现。输入用于查询属性值在某个集合中的元组。非输入用于
8、查询属性值不在某个集合中的元组。在是一个集合之后,它可以是一个特定的集合或一组查询的元组(有关详细信息,请参见第3.4节)。例3.10在选修成绩表中查询选修“001”、“005”或“003”课程的学生人数、课程编号和相应的分数。从课程编号在(001,005,003)的分数中选择学生编号、课程编号、分数。这个查询也可以通过使用逻辑or来实现,如示例3.19、12:09、17和3.11所示。在学生学生表中,您可以查询学生的姓名、籍贯和班级,这些学生的籍贯不是“南昌”或“上海”从学生中选择学名、籍贯、班级号,这些学生的籍贯不在(南昌、上海)这个查询也可以通过使用逻辑运算“与”来实现,如示例3.21、
9、12:09、18、1.2.4中的空值查询,其中空值表示未知或不确定的值。空表示空不为空不为空不为空不为空不能使用“=”作为替代3.12查询课程表中具有空先决课程的课程信息。从先前课程为空的课程、12:09、19、示例3.13中选择*并在课程课程表中查询先前课程的课程信息。选择*前一个过程不为空的过程,12:09,20,1.2.5字符匹配查询,LIKE用于字符匹配查询,语法格式为:NOT LIKE ESCAPE查询意思是:如果在LIKE之前没有NOT,查询指定的属性列值和匹配的元组;如果之前没有LIKE,则查询中指定的属性列的值与元组不匹配。12:09,21,可以是特定的字符串,或者包含通配符%
10、和_%,这表示任意长度的字符串ab%,这表示所有以ab开头的任意长度的字符串;“张”以“张”开头,以“ab”结尾,中间可以是一串任意字符。符号_(下划线)代表任何字符ab_,它代表以ab开头的所有三个字符串,第三个字符是任何字符;A_b代表所有以a开头、以b结尾的4个字符的字符串,第二个和第三个字符是任意字符。12:09,22,示例3.14,在类类表的类名中查询带有会计科目的类信息从类名如% accounting%的类中选择*。注意:字符串必须用一对引号括起来,但它们可以是单引号或双引号,因此请仔细匹配。,12:09,23,例3.15,查找所有姓王、全名为3个汉字的学生的学号和姓名,从学号为的
11、学生中选择学号、学名_ _注意:在中文SQL-Server中,如果匹配字符串为汉字,下划线表示汉字;如果是西文,下划线代表一个字符。12:09,24,例3.16,查询学生编号和学生表中姓名不含“fu”的学生姓名。从学生中选择学生编号、学生姓名,其中学生名称不像% fu %,12:09,25,示例3.17,在学生表中查询蒙古学生的学生编号和姓名选择学生编号、学生姓名,其中国家像蒙古。注意:如果匹配的字符串不包含%和_,那么like与比较运算符“=”的查询结果相同。从学生中选择学生编号、学生姓名,其中民族=蒙古语,12:09,26,转义。如果查询字符串本身包含%和_,则通配符必须转义。mysql转
12、义字符是。例3.18在类名表中用“08_”符号查询类名。从类中选择类名,其中类名如%不是通配符,而是普通用户想要查询的符号。12:09,27,1.2.6逻辑查询,SQL提供逻辑“与”、“或”和“非”运算符,分别实现逻辑“与”、“逻辑“或”和逻辑“非”。3.19在选课成绩表中查询选修“001”、“005”或“003”课程的学生人数、课程编号及相应的年级。在示例3.10中,使用了设置运算,在此示例中,使用了逻辑或运算,即12:09、28和示例3.20。在学生表中查询1991年出生的汉族学生。从学生中选择学号、学名、生日,其中年(生日)=1991,民族=汉族,12:09,29,注意:在逻辑运算中,不
13、能对同一属性进行逻辑“与”等价运算。例如,如果在选课成绩表中查询同时选修“001”和“002”课程的学生的选课信息,下面的查询是错误的,不能得到结果:从成绩中选择*其中课程号=001,课程号=002,需要使用连接操作或嵌套子查询通过连接操作来表达查询。参见示例3.29、3.31、3.39、3.40、12:09、30和3.21,查询学生表中母语不是“南昌”或“上海”的学生的姓名、籍贯和班级编号。选择学生姓名,本地,班级无来自学生本地!=南昌本地人!=上海,案例3.22。在成绩表中查询成绩在8090分之间的学生的学号、课程号和相应的成绩。从分数=80且分数=90的分数中选择学生编号、课程编号、分数,12:09、31,例如3.23,并在课程选择分数表中查询分数不在8090分之间的学生的学生编号、课程编号和相应分数。从分数90、12:09、32、1.3中选择学生号、课程号、分数,使用ORDER BY子句实现排序操作。它的语法是:按ASC排序| DESC,ASC | DESC,可以是属性、函数或表达式,默认情况下按升序(ASC)和降序排序。必须指明DESC选项。操作方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园灾害应急演练活动总结报告(2篇)
- 21《我不能失信》教学设计语文三年级下册统编版
- 高中信息技术 软件安装教案
- 2025-2026学年鲁滨逊漂流教学设计
- 关于施工员暑期实习报告范文(2篇)
- 维修检测报告(2篇)
- 2025-2026学年采山音乐教学设计小学
- 多发性创伤的护理查房模板
- 24“创作飞天科幻故事”(教学设计)初中物理项目化课程案例
- 2026年发电集控值班员技能鉴定考试题库(含答案)
- 2025-2026学年风筝教学设计图片素材
- 《地球的“面纱”》教学设计-2026-2027学年青岛版四年级科学上册
- GB 48013-2026养老机构基本规范
- 完整版农田建设项目施工组织设计方案
- 2026增材制造用金属粉末球形度控制关键技术突破
- 2026年生态环境行政执法与刑事司法衔接竞赛
- 2026年特殊食品考核测试卷【必刷】附答案详解
- 云知账号案例分析(小约翰可汗)
- 三生公司直销培训课件
- 2025年南京神学院考试题及答案
- 煤矸石处置申请书
评论
0/150
提交评论