数据库原理SQL结构化查询

上传人:痛*** 文档编号:152639574 上传时间:2022-09-16 格式:PPT 页数:42 大小:2.11MB
返回 下载 相关 举报
数据库原理SQL结构化查询_第1页
第1页 / 共42页
数据库原理SQL结构化查询_第2页
第2页 / 共42页
数据库原理SQL结构化查询_第3页
第3页 / 共42页
点击查看更多>>
资源描述
SQL概述二、SQL的特点综合统一高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方式语言简捷、易学易用一、SQL语言的基本功能定义、查询、操纵、控制二、SQL语言的基本概念三级体系结构一个SQL数据库是一组表的汇集一个SQL数据库中的表分为视图视图和基表基表一个基表可对应一个或多个存储文件,一个存储文件也可存放一个或多个基表用户通过SQL语句对视图和基表进行查询和其他操作。SQL视图2视图1基表4基表3基表2基表1存储文件2存储文件1外模式模式内模式SQLServer的初步认识SQL语言语言数据的定义定义基本表:CREATETABLE说明:1.在SQL语句中不区分大小写2.UNIQUE,PRIMARYKEY的区别的区别:在一个表中只能定义一个PRIMARYKEY,不允许空值;而UNIQUE可定义多个,且允许空值3.在SQLServer中支持的数据类型4.自动计数和标识符列:IDENTITY,GUID注:GUID可由NEWID()自动创建修改基本表:ALTERTABLE删除基本表:DROPTABLE建立与删除索引数据的查询:数据库的核心操作语法:选择若干列选择若干元组1.消除重复的行2.查询满足条件的元组对查询结果排序说明:1.要排序的列,可为列名,列的别名或表达式Order by order_by_expression ASC|DESC例:查询全体学生情况,结果按学生的出生年份的降序排列2.在排序时,空值最大3.查询结果多个列排序时,排序列间用“,”隔开使用集函数对查询结果分组说明:1.Group by对where子句的结果进行分组。2.Having子句只能在Group by后出现,不能单独使用。3.Having子句只能对分组计算的结果进行筛选。4.Having子句不能使用别名。例:检索选课人数超过1人的课程号及相应人数关于Where子句、group by子句和 having子句的区别Where子句:作用于table,viewgroup by子句:对查询结果分组,目的是为了细化集合函数的作用对象。having子句:对分组后的结果进行筛选。例:1、列出各科成绩的最高分及最低分2、按平均成绩从高到低顺序,列印出所有学生的三门课(1、2、3)的成绩。其列印格式如下:Sno 课程一课程二课程三有效课程数有效平均分3、按各科平均成绩从低到高和及格率的百分数从高到低顺序,统计并列印各科平均成绩和及格率百分数。4、统计列印各科成绩各分数段人数笛卡尔积:等值与非等值连接:同一个表自身连接:外连接:1.左连接2.右连接3.完整外连接Tableref join tableref on Left joinonright joinonfull joinon复合条件连接:多表连接Inner merge join on.inner hash joinon连接查询连接查询子查询子查询返回一个值的子查询返回一个值的子查询:例2:检索与95001学生在同一个系的所有学生信息例1:查询选修了课的的学生信息(学号、姓名、课程名、成绩)注:1.子查询可嵌套,而嵌套的层次由系统决定2.在子查询中不能用order by3.子查询一般用()括起内外层查询相互依赖:例3:检索成绩85的学生名称例4:Sno 课程一课程二课程三有效课程数有效平均分例5:返回每门课成绩最高的学生信息及课程信息。内外层查询相互独立:(不包括95001)返回一个集合的子查询返回一个集合的子查询:NOTIN:元素与某一集合进行比较。ANY:任一个ALL:所有的EXISTS:存在量词和比较运算符使用的子查询例:学生刘晨没选的课程号。例:学生刘晨没选的课程号。注:有些IN子查询可以用连接代替,有些不可以。注:可以用集函数代替,且查询效率高些。注:可以代替前面的子查询例:请分别用关系代数和SQL语言进行下列的查询:1、求被所有学生选修的课程名2、没有被任何学生选的课程名3、只有95001选修了的课程名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语句完成如下查询:1)查询所有女生的姓名和年龄。2)查询计算机系教师开设的所有课程的课程号和课程名。3)查询选修“微机原理”的所有学生的姓名和成绩。4)查询未选修“高等数学”的所有学生的姓名和成绩。5)查询不是计算机系教师讲授的课程的课程名和课程号6)查询年龄在18到20岁(包括18和20)间的所有学生信息。7)查询至少选修了“高等数学”或“普通物理”的学生姓名。8)查询男、女同学各多少人。9)查询每门课的学生选修人数(只输出超过10人的课程)要求输出课程号和选修人数,查询结果按人数降序排列,若人数同,按课程号升序排列。10)查询至少选修了两门课程的学生学号。11)查询至少讲授两门课程的教师姓名和其所在系。12)查询年龄大于女生平均的男生的姓名和年龄。13)查询年龄大于所有女生年龄的男生姓名和年龄。14)查询只选修了一门课程的学生学号和姓名。查询小结:SELECT ALL|DISTINCT 别名,别名 FROM 别名,别名 WHERE GROUP BY HAVING ORDER BY ASC|DESC作业P148,5(1)-(6)数据更新一、插入数据(一)、INSERT INTO:向数据表中添加一个或多个新行.1、语法:INSERTINTOTABLEREF(COLNAME1,COLNAME2,)VALUES(EXPRNULL,EXPRNULL)SUBQUERY使用VALUES结构:一次只能插入一条记录。例:向STUDENT表插入一条新记录(学号:95021,年龄:20)在列表中没指定的列,都必须允许为空,或有默认指派值。注:提供的数据值类型必和列表相匹配。用select子查询来添加数据:添加的数据来自于其它表或视图在INTO子句中没指定列表,则新插入的记录必须在每个属性列均有值。(二)SELECTINTO用查询的结果集来创建新数据表,数据表的名字在子句中定义。例:把95001学生的选修课程情况放入一个NEWTABLE表(三)大量数据复制SQLSERVERDTS开始导入导出数据企业管理器数据库任务导入导出数据二、修改数据:UPDATE(一)功能:修改单独一个行、一组行或者数据表或视图中所有行的数据。还可用该语句来更新远程服务器上的行。(二)语法:UPDATE tablerefSET colname=expr|NULL|subquery,WHERE search_condition|FROM subquery其中:1.SET子句:指定要被修改的列及对于该列的新值。例:将所有学生的各科成绩上调10%UPDATESCSETGRADEGRADE1.12.WHERE子句:指定要更新的行。例:把95001学生的各科成绩上调10%UPDATESCSETGRADEGRADE1.1WHERESNO950013.FROM子句:从多个数据表和视图中取数据例:请把刘晨各科成绩上调10%UPDATESCSETGRADEGRADE1.1FROMSCJOINSTUDENTS ONSC.SNOSTUDENT.SNO WHERES.SNAME刘晨注意:UPDATE语句只能对一个表进行修改。以下写法错误。UPDATESCSETSC.GRADEGRADE1.1(三)删除数据1.功能:从表中删除满足条件的记录。2.注意:1)DELETE语句只删除表中的记录,并不删除表结构。用DROPTABLE删除表结构。2)删改表时,要考虑数据的完整性。从表记录存在时,不能删除主表记录。先删关联的从表记录,再删主表记录。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!