欢迎来到天天文库
浏览记录
ID:40120082
大小:2.11 MB
页数:42页
时间:2019-07-22
《【数据库原理】sql结构化查询》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQL概述二、SQL的特点综合统一高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方式语言简捷、易学易用一、SQL语言的基本功能定义、查询、操纵、控制二、SQL语言的基本概念三级体系结构一个SQL数据库是一组表的汇集一个SQL数据库中的表分为视图和基表一个基表可对应一个或多个存储文件,一个存储文件也可存放一个或多个基表用户通过SQL语句对视图和基表进行查询和其他操作。SQL视图2视图1基表4基表3基表2基表1存储文件2存储文件1外模式模式内模式SQL Server的初步认识SQL语言数据的定义定义基本表:CREATE
2、TABLE说明:1.在SQL语句中不区分大小写2.UNIQUE,PRIMARY KEY的区别: 在一个表中只能定义一个PRIMARY KEY,不允许空值;而UNIQUE可定义多个,且允许空值3.在SQL Server中支持的数据类型4.自动计数和标识符列:IDENTITY,GUID注:GUID可由NEWID()自动创建修改基本表:ALTER TABLE删除基本表:DROP TABLE建立与删除索引数据的查询:数据库的核心操作语法:选择若干列选择若干元组消除重复的行查询满足条件的元组对查询结果排序说明:要排序的列,可为列名,列的别
3、名或表达式Orderbyorder_by_expression[ASC
4、DESC]例:查询全体学生情况,结果按学生的出生年份的降序排列在排序时,空值最大查询结果多个列排序时,排序列间用“,”隔开使用集函数对查询结果分组说明:Groupby对where子句的结果进行分组。Having子句只能在Groupby后出现,不能单独使用。Having子句只能对分组计算的结果进行筛选。Having子句不能使用别名。例:检索选课人数超过1人的课程号及相应人数关于Where子句、groupby子句和having子句的区别Where子句:作用于ta
5、ble,viewgroupby子句:对查询结果分组,目的是为了细化集合函数的作用对象。having子句:对分组后的结果进行筛选。例:1、列出各科成绩的最高分及最低分2、按平均成绩从高到低顺序,列印出所有学生的三门课(1、2、3)的成绩。其列印格式如下:Sno课程一 课程二 课程三 有效课程数 有效平均分3、按各科平均成绩从低到高和及格率的百分数从高到低顺序,统计并列印各科平均成绩和及格率百分数。4、统计列印各科成绩各分数段人数笛卡尔积:等值与非等值连接:同一个表自身连接:外连接:左连接右连接完整外连接Tablerefjointa
6、blerefonLeftjoin…on…rightjoin…on…fulljoin…on…复合条件连接:多表连接Innermergejoin…on..innerhashjoin…on连接查询子查询返回一个值的子查询:例2:检索与95001学生在同一个系的所有学生信息例1:查询选修了课的的学生信息(学号、姓名、课程名、成绩)注:1.子查询可嵌套,而嵌套的层次由系统决定2.在子查询中不能用orderby3.子查询一般用()括起内外层查询相互依赖:例3:检索成绩>85的学生名称例4:Sno课程一 课程二
7、 课程三 有效课程数 有效平均分例5:返回每门课成绩最高的学生信息及课程信息。内外层查询相互独立:(不包括95001)返回一个集合的子查询:[NOT]IN:元素与某一集合进行比较。ANY:任一个ALL:所有的EXISTS:存在量词和比较运算符使用的子查询例:学生刘晨没选的课程号。例:学生刘晨没选的课程号。注:有些IN子查询可以用连接代替,有些不可以。注:可以用集函数代替,且查询效率高些。注:可以代替前面的子查询例:请分别用关系代数和SQL语言进行下列的查询:1、求被所有学生选修的课程名2、没有被任何学生选的课程名3、只有‘950
8、01’选修了的课程名4、求‘95001’选了但‘95002’未选的课程名例题集合查询多个select语句的结果可进行集合操作并操作UNION交操作INTERSECT差操作MINUS注:标准的SQL中没有直接提供集合交和差操作查询综合例题:教学数据库中有四个表:教师情况基本表T(TNO,TN,TD);课程基本表C(CNO,CN,TNO);学生情况基本表S(SNO,SN,SA,SEX);学习成绩基本表SC(SNO,CNO,G);用SQL语句完成如下查询:查询所有女生的姓名和年龄。查询计算机系教师开设的所有课程的课程号和课程名。查询选
9、修“微机原理”的所有学生的姓名和成绩。查询未选修“高等数学”的所有学生的姓名和成绩。查询不是计算机系教师讲授的课程的课程名和课程号查询年龄在18到20岁(包括18和20)间的所有学生信息。查询至少选修了“高等数学”或“普通物理”的学生姓名。查询男、女同学各多少人
此文档下载收益归作者所有