知识点、SQL语句学习及详细总结_第1页
知识点、SQL语句学习及详细总结_第2页
知识点、SQL语句学习及详细总结_第3页
知识点、SQL语句学习及详细总结_第4页
知识点、SQL语句学习及详细总结_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、一. 数据库简介和创建1. 系统数据库在安装好SQL SERVER后,系统会肖动安装5个用于维护系统正常运行的系统数据库:(1) master :记录了 SQL SERVER实例的所有系统级消息,包括实例范围的元数据(如登录帐号)、端点、链接服务器和系统配冒设置。(2) msdb:供SQL SERVER代理服务调度报警和作业以及记录操作员的使用,保存关于调度报警、作业、操作负等信息。(备份还原时)(3) model: SQL SERVER实例上创建的所有数据库的模板,。(4) tempdb:临时数据库,用于保存临时对象或中间结杲集,为数据库的排列等操作提供一个临时工作空间。(每次启动都会重新创

2、建)(5) Resource: 一个只读数据库,包含了 SQLSERVER的所有系统对象。(隐 藏的数据库)2. 数据库的组成2.1数据文件(1) 主要数据文件:扩展名为-mdf ,每个数据库有且只能有一个。(2) 次要数据文件:扩展名为ndF ,可以没有或有多个。2.2日志文件扩展名为dF ,用于存放恢复数据库的所有R志信息。稍远2.3数据的存储分配(1 )数据文件和FI志文件的默认存放位置为:Programe File叭Microsoft: SQLScn-crMSSQL.1 MSSQLData 文件夹。(2) 数据的存储分配单位是数据页。一页表是一块8KE的连续磁危空间。(3) 页是存储数

3、据的晟小空间分配单位,页的大小决定了数据库表中一行数据 的最大大小。3.SQL语句数据库操作(1)创建数据库CREATE DATABASE databasc_namc二. SQL基础SQL (Structured Query Language,结构化查询语言)是用户操作关系数据库的通 用语言。1.SQL功能概述Creatre2.系统提供的数据类型2.1数值数据类型数据类型说明存储 空间bitbit數据类型是整型,其值只能畏0、1或空值。这种数据类型用于存储只有两种可 能值的數据,如Yus或Nq、True或Fnlsu、On或Of (很筍空间的一种数据类 型,如杲能够满足需求应该尽量多用。)1宇

4、节数据类型说明存储 空间tinyinttinyint数据类型能存储从0到255之间的整數。它在你只打算存储有限數目的數值 时很有用。1宇 节smallintsmallint数据类型可以存储从-2的15次專(-32768)到2的15次臬(32767)之间的整數。 这种数据类型对存储一些常限定在特定范围内的数值型數据非常有用。(如果tinyint 类型太单调不能满足您的需求,您可以考虑用smallint类型,肉为这个类型相对也 是比较安全的,不接受恶意脚本内容的眾入。)2宇 节intint數据类型可以存储从-2的31次(-2147483648)到2的31次專(2147483 647)之 间的整數。

5、存储到數据库的几乎所有數值型的数据都可以用这种數据类型4个 宇节numeric (p,s) 或 decimal(p,s)数据类型能用来存储从-10的38次幕-1到10的38次银-1的同定精度和范围的数值 型数据。使用这种数据类塑时,必须指定范围和精度。范围是小數点左右所能存 储的数宇的总位數。精度是小數点右边存储的数宇的位數最多 17个 宇节2.2普通编码字符串类型数据类 型说明char(n)char數据类型用来存储指定长度的定长非统一编码型的數据q表示宇符串的*大长度,取值范围 为1-8000 (若实际宇符串控件小于n,系统自动在后面补空格)varchar(n)可变长度的宇符串类型Q袅示宇符

6、串的晟大长度,取值范围为18000。数据类 型说明texttext数据类型用来存储大量的非统一编码型宇符數据。这种数据类型晟多可以有231-1或20亿个 宇符.精选char和varchar的区别:若某列数据类型为varchar(20),存宇符串” Jom”时,只占用4个字节,而char(20)会在为填满的空间中填写空格。所以,varchar类型比char类型更节省空 间,但它的开销会大一些,处理速度也慢一些。闵此,n值比较小(小于4), 用char类型更好些。2.3统一编码字符串类型(Unicode)数据类塑说明nchar數据类型用来存储定长统一编码宇符型数据。统一编码用双宇节结构来存储每个宇

7、符,而不nchar(n)爱用单宇节(普通文本中的情况)。它允许大量的扩展宇符。此數据类型能存储4000种宇符,便用的 宇节空间上增加了 一信.nvarchar(n)nvarchar數据类型用作变长的统一编码宇符型数据。此數据类型能存储4000种宇符,便用的宇节 空间增加了 一借.ntext最多可存储2的30次方将近10亿个宇符三. SQL数据操作语言1数据查询语句1.1查询语句的基本结构SELECT 目标列名序列-需要哪些列From 嶷名 一来自哪张表WHERE 行选择条件刃GROUP BY v分组依据列HAVING V组ORDER BY 排序依据列SELECT子句用于指定输出的宇段;FROM

8、子句用于指定数据的来源;WHERE子句用于指定数据的选择条件;GROUP BY子句用于对检索到的记录进行分组;HAVING子句用于指定组的选择条件;ORDER BY子句用于对查询的结果进行排序;以上子句中,SELECT子句和FROM子句是必需的,其它是可选的。1.2单表查询1.2.1选择表中若干列(1) 査询指定的列SELECT列名FROM表名例子:SELECT Snamc.Sno FROM Student(2) 査询全部列SELECT * FROM 表名例子:SELECT * FROM Siudmt(3) 査询经过计算的列SELECT列名FROM表名例子:SELECT Snamc,ycar(

9、getdata0) - ycar(Birlhdatc) FROM Student122选择表中的若干元祖(1) 消除取值相同的行:DISTINCTSELECT DISTINCT Sno FROM 丧名例子:SELECT DISTINCT Sno FROM Studmi(2) 査询满足条件的元祖查询条件比较谓词=、=、v=、v、v、!=、!、y査询条件谓词确定范围BETWEEN AND、NOT BETW EEN AND确定集合IN、NOT IN宇符匹配LIKE、NOT LIKE空值】S NULL、IS NOT NULL多重条件(逻辑谓词)AND. OR久比较大小例子:SELEOT Snamc F

10、ROM Student WHERE ycar(gct:dataO) - ycar(Birthdalc) 20b.确定范围EETWEENAND和NOT BEWEEN - AND可用于查找厲性值在或不在指定范围。列名|表达式| NOT BETWEEN下限值AND上限值 1BETWEENAND代表的范围是在上限值和下限值之间(包括边界值),即为trucoNOT BETWEEN- AND代表的范围是不在上限值和下限值之间(不包括边界值),即为ITU6 (若判断值为边界值时,为false)通配符含义-(下划线)匹配任意一个宇符% (百分号)匹配0个或多个宇符0匹配中的任意一个宇符。如abed裘示匹配“b

11、ed其中任何一个,若是连续的,可以用-表示,n不匹配中的任意一个宇符。如abed表示不匹配abed其中任何一个,若绘连续的,可以用-例子:(査询姓“张”的学生详细信息)SELECT * FROM Student WHERE Snamc LIKE 张(查询不姓“张”的学生详细信息)SELECT * FROM Student WHERE Snamc NOT LIKE 张(査询姓“张”、“爭”的学生详细信息)SELECT * FROM Student WHERE Snamc LIKE 张李%(查询名宇的第二个宇为“小”或“大”的学生详细信息)SELECT * FROM Student WHERE S

12、namc LIKE小大%e.涉及空值的查询空值(NULL)在数据库中有特殊含义,表示当前不确定或耒知的值。判断是否为NULL时,不可用普通的比较运算符,需用IS NULL例子:SELECT Sn()FROM StudmtVTHERE Gmdu IS NULL1.2.3对查询结果进行排序将查询结杲按照指定的顺序显示。ASC表示按列值升序排列(从上往下,值从大 到小)。DESC表示按列值降序排列(从上往下,值从小到大)。默认为ASC。ORDER BY v 列名ASC| DESC例子:SELECT Sno,Grade FROM SC ORDER BY Grade DESC1.2.4使用聚合函数统计数

13、据聚合函数也称为统计函数或集合函数,作用是对一组值进行计算并返回一个统计 结果。聚合函数含义COUNT统计表中元袒的个數COUNT(DISTINCT 列名 )统计本列的非空列值个数SUM(列名)计算列值的和值(必须是數值型列)含义聚合函数AVG(列名)计算列債的平均債(必须是數值型列)MAX(列名)计算列值的最大值NO N (列名)计算列值的最小值上述函数除COUNTS)外,其它函数在计算过程中均忽略NULL值(统计学生总人數)SELECT COUNT(*) FROM Student(统计“001”学号学生的考试平均成纟费)SELECT AVG(Gradc) FROM SC WHERE Sno

14、 = 001(查询“C001”号课程考试成纟贵的晟高分和晟低分)SELECT MAX(Gradc)晟高分,MIN(Gradc)最低分 FROM SC WHERE Cno = C001聚合函数不能出现在WHERE子句中!1.2.5对数据进行分组统计需要先对数据进行分组,然后再对每个组进行统计。分组子句group by。在 一个查询语句中,可以用多个列进行分组。分组子句跟在VCHERE子句的后面:GROUP BY 分组依据列L.nHAVING V组筛选条件(1) 使用group by子句(统计每门课程的选课人數,列出课程号和选课人数)SELECT Cno as 课程号,COUNT(Sno) as

15、选课人数 From SC Group BY Cno(统计每个学生的选课门數和平均成绩)SELECT Sno 学号,C()UNT(*) 选课门数,AVG(Gr“du)平均成纟贵 From SC Group BY Sno带V7HERE于句的分组(统计每个系的女生人数)SELECT Pcpt, C(兀NT(*) 女生人數 From Student VCTicrc Sex = 女 Group BY Pept(2) 使用HAVING子句HAVING子句用于对分组后的统计结果再进行筛选,它的功能与WHERE子句 类似,它用于组而不是单个记录。在HAVING子句中可以使用聚合函数,但在 WHERE子句中不能

16、,通常与GROUP子句一起使用。(查询选课门数超过3门的学生的学号和选课门数)SELECT Sno 学号,C()UNT(*)选课门数,AVG(Gr“du)平均成绩 From SC Group BY SnoHAVING COUNT(*) 3(3) WHERE、GROUP BY、HAVING的作用及执行顺序 WHERE子句用于筛选FROM子句中指定的数据所产生的行数据。 GROUP BY子句用于对经WHERE子句筛选后的结杲数据进行分组。 HAVING子句用于对分组后的统计结果再进行筛选。可以分组操作之前应用的筛选条件,在VCHERE子句中指定它们更有效,这样可 以减少参与分组的数据行。在HAVI

17、NG子句中指定的筛选条件应该是那些必须 在执行分组操作之后应用的筛选条件。(查询计算机系和信息管理系每个系的学生人數)第一种:SELECT Dcpt,C()LNT(*) FROM Student GROUP BY Pept Having Dept inf计算机系,渗息管理系)第二种:SELECT Dcpt,C兀NT(*) FROM Student VTHERE Dept in (计算机系信息管理系)GR()UP BY Dept以上例子比较:第一种是按照系分组好了之后,只采取所有系中的两个系,显然 效率不高。而笫二种是先进行VCHERE筛选条件之后,再进行GROUP BY计算, 显示更好。1.3

18、多表连接查询若一个查询同时涉及到两张或以上的表,则称为连接查询。1.3.1内连接使用内连接时,如果两个表的相关字段满足条件,则从两个表中提取数据组成新的记录。FROM 表 1 PNNER JOIN 表 2 OX 连接条件 1注意:连接条件中的连接宇段必须是可比的,必须是语义相同的列。(查询学生此选课的详细信息)SELECT * FROM Student INNER JOIN SC ON SiudcntSno = SC.Sno(查询计算机系学生的选课悄况,列出该学生的名宇、所修谦程号、成绩)行选择条件SELECT SnamcCno,Grade FROM Student INNER JOIN SC

19、 ON Stiidcnt.Sno = SC-Sno W HERE Dept = 计算机系。(统计每个系的平均成绩)分组的多表查询SELECT Pcpt,AVCT(Gradc) AS AvcragtCiradc FROM Student S INNER JOIN SC ON S.Sn o = SC.Sno Group BY Dept(统计计算机系每个学生的选课门数.平均成绩、聂高成绩、晟低成纟贵)一分组和行选择 条件的多裘连接查询SELECT Sn()C()UNTO,AVG(Gradc)MAX(Gradc),MlJ(Gradc) FROM Student S JOIN SCON S.Sno =

20、SC.Sno WHERE Dept =计算机系,Group BY Dept13.2自连接自连接是一种特殊的内连接,相互连接的表在物理上是一张表,但在逻辑上可以看做是两张表。FROM 裘 1 AS T1 JOIN 丧 1 AS T2 1通过为表取别名的方法,可以让物理上的一张表在逻辑上成为两张表。(一定要 为表取别名!)(查询与刘展在同一个系学习的学生的姓名、所在系)SELECT Sl.Snamc,Sl.r)cpt FROM Student SI JOIN Student S2ON Sl.Pcpt = S2.Dcpt 同一个系的学生WHERE S2.Snamc =,刘艮 S2裘作为查询条件AND

21、 Sl.Smmu !刘殳 -S1裘作为结果表,并从中去掉刘晨本人信息1.3.3外连接在内连接操作中,只有满足条件的元祖才能出现在查询结果集中。外连接是只限制一张表中的数据必须满足条件,而另一张表的数据可以不满足条 件。FROM 裘 1 LEFT| RIGHT OUTER JOIN 表 2 ON 连接条件 1LEFT OUTER JOIN称为左外连接,含义是限制表2中的数据必须满足条件,但不管表1中的数据是否满足条件,均输出表1中的数据。LEFT OUTER JOIN称为右外连接,含义是限制表1中的数据必须满足条件,但不管表2中的数据是否满足条件,均输出表2中的数据。内连接与外连接的区别:内连接

22、:表A与表E进行内连接,则结果为两个表中满足条件的记录集,即C 部分。外连接:如果表A和表E进行左外连接,则结果为记录集A+记录集C;如果表A和表E进行右外连接,则结果为记录集E+记录集C。(查询没有人选的选修课程名)SELECT Cnamc FROM Course C LEFT JOIN SC ON C.Cno = SC.Cno WHERE SC.Cn o IS NULL例子解析:如果存在部分课程为被人选择,则必定在Course表中有但在SC表中 没有出现,即在进行外连接时没人选的课程在与SC表构成的连接结果集中,对 应的Sno、Cn。、Grade列必定为空,所以只需*在连接后的结果中选出衬

23、SC表 中Sno或Cn()为空的元祖即可。(统计计算机系每个学生的选谦门数,包括没选课的学生)SELECT S.Sno AS 学号,a)CXT(SC.Cno) AS 选课门數 FROM Student S LEFT JOIN SCON S.Sno = SC.Sno WHERE Dept = 计算机系GROUP BY S.Sno 例子解析:上述例子要求统计每个学生的.,所以在GROUP BY分组时,是按 照学生表中的学号来分。而对于聚合函数COUNT,上述要求统计每个学生的选 课门数,若写成C()UNT(S.Sn(或COUNT(吻 则对没选课的学生都返回1,因为 在外连接结果中,S.Sno不会是

24、NULL,而COUNTS)函数本身也不考虑NULL, 它是直接对元祖个数进行计数。注意:在对外连接的结果进行分组、统计等操作时,一定要注意分组依据列和统 计列的选择。1.4使用TOP限制结果集行数在使用SELECT语句进行查询时,有时只需要前几行数据。TOP (expression) PERGENT rXITH TIES 1 expression:指定返回行数的数值表达式。如果指定了 PERCE NT, expression 将隐式转換成float,否则是bigint PERCENT:指定只返回结果集中前expression%行数据。 WITH TIES:指定从基本结果集中返回额外的数据行(只

25、有在SELECT 子句中包含了(JRD已RBY子句时,才能使用)。TOP谓词写在SELECT单词的后面(如果有DISTINCT,则在DISTINCT后面)。(査询考试成绩最高的3个成纟费。列出学号、课程号、成绩)SELECT TOP 3 Sno,Cno,Grade FROM SC ORDER BY Grade PESC若要包括并列第3名的成纟贵:SELECT TOP 3 Sno,Cno,Grade WITH TIES FROM SC ORDER BY Grade DESC2 数据更改功能2.1插入数据INSERT INTO 表名(列名)VALUES (值) 1(1) 简单插入语句INSERT

26、INTO Student VALUES (OOV;陈东丁男V1996/6/23*;信息管理系) 1(2) 多行插入语句INSERT INTO SC VALUESC0017C00r,90),0)01乂002:30),COO17COO5NULL)(3) 不按表顺序插入语句按与表列顺序不同的顺序插入数据INSERT INTO SiudcntCSnonamc.Scx.Dcpt) VALUES fOOV;东丁再996/6/23,信息管理 系)2.2更新数据UPDATE表名SET列名=值(1)无条件更新UPDATE SC SET Grade = Gradc+10(2)有条件更新(将“C001”号课程的学分

27、改成5分)UPDATE Course SET Grade = 5 WHERE Cno = C001(将计算机系全体学生的成绩加5分)UPDATE SC SET Grade = Gradc+5 FROM SC JOIN Student S ON S.Sno = SC.Sno WHERE Dept =计算机系2.3删除数据DELETE TOP (expression) PERCENTFROM表名(1)无条件删除DELETE FROM Student(2)有条件删除(删除所有考试成绩不合格的学生的选课记录)DELETE FROM SC WHERE Grade n THEN rcsult_cxprcs

28、sinnELSE clsc_cxprcssi()nEND input-expression:所计算的表达式,可以是一个变量名、字段名、函数或 子查询。 when_expression :要与input .expression进行比较的简单表达式。简单表 达式中不可包含比较运算法,只需给出被比较的表达式或值。else_expression :比较结果均不为TRUE时返回的表达式。(査询选了 JAVA 程的学生的学号、姓名、所在系、成绩,若所在系为“计算机系”,则显示“CS” ;若所在系为“信息管理系”,则显示“IM” ; 若所在系为“通信工程系”,则显示“COM” )SELECT S.S110

29、学号,Snamc 姓名,CASE DeptWHEN,计算机科THEN TS*WHEN 信息管理系,THEN IMWHEN 通信工程系,THEN OM1END AS所在系Gradc成纟贵FROM Student S JOIN SC ON S.Sno = SC.SnoJOIN Course C ON C.Cno = SC.CnoWHERE Cnamc = lava*1.2搜索CASE函数简单CASE函数只能将input_expression与一个单值进行比较,如果需要跟一个 范围内的值进行比较,就需要搜索CASE函数。CASEVTHEX B(x)lc;in_cxprcssi)n THEN rcsu

30、lt_cxprcssi()nnELSE clsc_cxprcssi()nEND12 3 4 5 Boolean.expression :比较表达式,可以包含比较运算符,直接将两者进行比较。上逑例于也可以用搜索CASE函数:SELECT S.Sno 学号,Smmc 姓名,CASEWHEN Dept = 计算机系 THEN SWHEN Dept =缩息管理系,THEN IMWHEN Dept =通信工程系,THEN COM1END AS所柱系,Gradc成纟贵FROM Student S JOIN SC()N S.Sno = SC.SnoJOIN Course C()N C.Cno = SC.Cn

31、oVTHERE Cnamc = 1 ava*(查询COOl课程的考试惰况,列出学号和成绩,然后根据成绩划分等级)SELECT S.Sno 学号,Smimu 姓名,CASE精选VTHEN(jradc=90 THEN 代WHEN(jradcBETVCEEN80ANO99 THEN,良.VTHEN(jradcBE TWEEN70AND79 THEN 中.WHEN(jradcBETVCEEN60ANP69 THEN 格END AS成绩FROM SC ON WHERE Cn()= *C00r2.子查询如果一个 SELECT 语句嵌套在另一个 SELECT、INSERT、UPDATE 或 DELETE 语

32、句中,则称为子查询或内层查询;而包含子查询的语句称为主查询。子查询通常用于满足下列需求之一: 把一个查询分解成一系列的逻辑步骤 提供一个列表作为戏HERE子句和IN、EXISTS. ANY、ALL的冃标对象 提供由外层查询中每一条记录驱动的查询子查询通常有几种形式: WHERE列名NOT IN (子查询) WHERE列名比较运算符(子查询) WHERE EXISTS(子查询)2.1使用基于集合测试的嵌套子查询使用嵌套子查询进行基于集合的测试时,子查询返回的是一个值列表,外层查询 通过运算符1N或NOT IN对子查询返回的结果集进行比较。SELECT v查询列表FROM .WHERE v列名NO

33、T IN (SELECT 列名FROM)包含这种子查询形式的查询语句是分步骤实现的,即先执行子查询,然后在子查 询的结果基咄上执行外层查询(先内后外)。子查询返回的结果是一个集合,外 层查询就是在这个集合上使用IN运算符进行比较。(查询与刘展在同一系的学生)SELECT Sn(,Snamc,Dcpt FROM Student WHERE Dept IN(SELECT Dept From Student VCTicrc Snamc = 刘灵)(查询选修了 JAVA课程学生的姓名)SELECT Snamc FROM Stduent WHERE Sno IN(SELECT Sno FROM SC W

34、HERE Cn)1N(SELECT Cno FROM Course WHERE Cnamc = JAVA)第二个例于也可以用了逹接查询来做:SELECT Snamc From Student S JOIN SC ON S.Sno = SC.Sno JOIN Course C ON C.Cn o = SC.Cno WHERE Cnamc = JAVA上述的例子可以看出子査询和连接査询可以互通,但在某些情况下是不可以的:(统计选了 JAVA课程的学生的姓名和所在系)于査询:SELECT Sno学号,C()UNT(*)选谦门熱AVG(Gmdu)平均成绩FROM SC WHERE Sno IN(SEL

35、ECT Sno FROM SC JOIN Course CON C.Cno = SC.CnoWHERE Cnamc = JAVA1)GROUP BY Sno这个查询不能完全用连接查询实现,因为这个查询的语义是要先找出选了 JAVA谦程的学生,然后再计算这些学生的选课门数和平均成绩。连接查询:SELECT Sno学号,C()UNT(*)选课门数,AVG(Gradu)平均成绩FROM SC JOIN Course C ON C.Cno = SC.Cno VCHERE Cnamc = AVA*GROUP BY Sno以上查询是错俣的,查出来学生的选课门数都是1!实际上这个1指的是JAVA这一门课程,

36、其平均成绩也是JAVA成绩。【注意:】连接查询和子查询的区别: 之所以这样,是闵为在执行有连接操作的查询时,系统首先将所有被连接 的表连接成一张大表,这张天表中的数据全部满足连接条件的数据。之后再 在这张连接后的大表上执行WHERE子句,然后是GROUP EY子句。执行完WHERE子句之后,连接的大表中的数据就只剩下JAVA这一门课程的情 况了,显然不符情况。对于含有嵌套的子查询的直询,是先执行子查询,然后在子查询的结果基砒上再执行外层查询。【注意:】在子查询中否定和在外查询中否定的区别1N和!二的播配相较于NOT IN和二的播配是否相同?在子查询中否定和在外查询中否定的区别?(查询没选C00

37、1课程的学生的姓名和所在系)1多裘逹接:SELECT SnamcDcpt FROM Student S JOIN SC ON S.Sn)= SC。Sno WHERE Cno != *C oor2.嵌套子查询:1)在于査询中否定SELECT SnamcDept FR( )M StudentWERE Sno NOT IN(SELECT Sno FROM SC WHERE Cm = 0X)1)2)在外层查询中否定SELECT Snamc.Dcpt FROM StudentWHERE Sno IN(SELECT Sno FROM SC VCHERE Cno != G()l)这个例子,连接查询是错泯的,

38、嵌套子查询中方法一在子查询中的否定是错误的!嵌套子查询中方法二在外查询中的否定是正确的!【连接查询】:-上面已经讲过,对于连接查询,所有的条件都是在连接之后的结果表上进行的, 而且是逐行进行判断。一旦发现满足要求“Cn()!= C()()l ”,则此行满足条件。 所以晟后的结果既包括没有选C001课程的学生,也包含选了 C001同时选了别的 课程的学生。【含有嵌套的子查询】:-对于含有嵌套的子查询的查询,是先执行子查询,然后在子查询的结果基咄上 再执行外层查询。而且在子查询中也是逐行判断的,当发现有满足条件的数据时, 将此行数据作为外行查询的一个比较条件。本例要查询的是某个学生所选的全部课程中

39、均不包含C001课程,如果将否定放 在子查询中,则查出的学生既包括没有选C001课程的学生,也包含选了 C001 同时选了别的课程的学生。显然,这个否定的范围不够。通常情况下,对于这种带有部分否定条件的査询都应该用子査询来实现,而且应 该放在外层!2.2使用比较测试的嵌套子查询SELECT 查询列裘FROM.WHERE V列名比较运算符(SELECT v列名FROM .)使用嵌套子查询进行比较测试时,要求子查询只能返回单个值。外层查询一般通 过比较运算符(二、=、=),将外层查询中某个列的值与子查询返回的 值进行比较。(查询选了 C004课程且成绩高于此课程的平均成绩的学生的学号和成绩)SELECT Sno, Grade FROM SCWHERE Cno = C004 AND Grade (SELECT AVG(Gradc) FROM SC WHERE Cno = C004*2.2使用SOME和ALL嵌套子查询当子査询返回单值

温馨提示

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

评论

0/150

提交评论