SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx

上传人:一*** 文档编号:82687501 上传时间:2023-03-26 格式:PPTX 页数:117 大小:393.38KB
返回 下载 相关 举报
SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx_第1页
第1页 / 共117页
SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx_第2页
第2页 / 共117页
点击查看更多>>
资源描述

《SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx》由会员分享,可在线阅读,更多相关《SQL语言基础基本概念 SQL的数据类型基本表的定义删除及修改数据查询功能数据更改功能建立与删除索引.pptx(117页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、4.1 4.1 基本概念基本概念语言的发展 语言的特点语言功能概述 第1页/共117页语言的发展1986年10月由美国ANSI 公布最早的SQL标准。1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89。1992年11月,ISO又公布了新的SQL标准,称为SQL-92(以上均为关系形式)。1999年颁布SQL-99,是SQL92的扩展。第2页/共117页语言的特点1.一体化。2.高度非过程化。3.简洁。4.使用方式多样。第3页/共117页语言功能概述SQL功能功能命令动词命令动词数据查询数据查询SELECT数据定义数据定义CREATE、DROP、ALTER数据操纵数据操纵INS

2、ERT、UPDATE、DELETE数据控制数据控制GRANT、REVOKE四大功能:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。第4页/共117页4.2 SQL的数据类型SQL Server SQL Server 为例为例:数值型 字符串型日期时间型货币型第5页/共117页数值型准确型准确型 整数整数Bigint:8字节,字节,Int:4字节字节Smallint:2字节,字节,Tinyint:1字节字节 Bit:1位,存储位,存储1或或0小数小数Numeric(p,q)或)或 Decimal(p,q),),其中:其中:p为数字位长度,为数字位长度,q为小数位长度。为小数位长度。近似

3、型近似型 Float:8字节字节 Real:4字节字节第6页/共117页字符串型普通编码字符串类型统一字符编码字符串类型二进制字符串类型第7页/共117页普通编码字符串类型Char(n):定长存储,n=8000 Varchar(n):不定长存储(按实际长度存储),长度最大不超过n,n=8000 注:n 为字符个数Text:存储大于8000字节的文本第8页/共117页统一字符编码(统一字符编码(UnicodeUnicode)字符串类型)字符串类型nchar(n):定长存储,n=4000 nvarchar(n):不定长存储,长度最大不超过n,n=4000 ntext:存储大于8000字节的文本特点

4、:每个字符占两个字节第9页/共117页二进制字符串类型Binary(n):固定长度,n=8000。Varbinary(n):可变长度,n 8000。注:n为二进制数据的字节数image:大容量、可变长二进制字符数据,可用于存储文件。第10页/共117页日期时间型日期时间型Datetime:8字节,年月日时分秒毫秒(例:2001/08/03 10:30:00.000)SmallDateTime:4字节,年月日时分 (例:2001/08/03 10:30:00)日期、时间的输入格式第11页/共117页货币类型Money:8 个字节,精确到货币单位的千分之十。Smallmoney:4 个字节,精确到

5、货币单位的千分之十。限制到小数点后 4 位。可以带有适当的货币符号。例如,100 英镑可表示为 100。第12页/共117页4.3 基本表的定义、删除及修改 基本表的定义与删除 修改表结构 第13页/共117页基本表的定义与删除1定义基本表 使用SQL语言中的CREATE TABLE 语句实现,其一般格式为:CREATE TABLE (列级完整性约束定义列级完整性约束定义 ,列级完整性约束定义列级完整性约束定义,列级完整性约束定义列级完整性约束定义,表级完整性约束定义表级完整性约束定义 );第14页/共117页在列级完整性约束定义处可以定义的约束在列级完整性约束定义处可以定义的约束NOT NU

6、LL:限制列取值非空。DEFAULT:给定列的默认值。UNIQUE:限制列取值不重。CHECK:限制列的取值范围。PRIMARY KEY:指定本列为主码。FOREIGN KEY:定义本列为引用其他表的外码。使用形式为:FOREIGN KEY()REFERENCES()第15页/共117页几点说明NOT NULLNOT NULL和和DEFAULTDEFAULT只能是列级完整性约束;只能是列级完整性约束;其他约束均可在表级完整性约束处定义。其他约束均可在表级完整性约束处定义。注意以下几点:注意以下几点:第一,如果第一,如果CHECKCHECK约束是定义多列之间的取值约束,约束是定义多列之间的取值约

7、束,则只能在表级完整性约束处定义;则只能在表级完整性约束处定义;第二,如果表的主码由多个列组成,则也只能在表第二,如果表的主码由多个列组成,则也只能在表级完整性约束处定义,并将主码列用括号括起来,级完整性约束处定义,并将主码列用括号括起来,即:即:PRIMARY KEY PRIMARY KEY(列(列1 1,列,列2 2 ););第三,如果在表级完整性约束处定义外码,第三,如果在表级完整性约束处定义外码,则则“FOREIGN KEY(FOREIGN KEY()”)”部分不能省。部分不能省。第16页/共117页约束定义 列取值非空约束 NOT NULL例:sname char(10)NOT NU

8、LL第17页/共117页约束定义(续)表主码约束表主码约束在定义列时定义主码(仅用于单列主码)列定义 PRIMARY KEY例:SNO char(7)PRIMARY KEY在定义完列时定义主码(用于单列或多列主码)PRIMARY KEY()例:PRIMARY KEY(SNO)PRIMARY KEY(SNO,CNO)第18页/共117页约束定义(续)外码引用约束外码引用约束指明本表外码列引用的表及表中的主码列。FOREIGN KEY()REFERENCES()例:FOREIGN KEY(sno)REFERENCES 学生表(sno)第19页/共117页约束定义(续)默认值约束默认值约束格式:DE

9、FAULT 默认值例:定义系的默认值为“计算机系”。DEFAULT 计算机系第20页/共117页约束定义(续)CHECKCHECK约束约束格式:CHECK(约束表达式)例:定义成绩大于等于0。CHECK(grade=0)第21页/共117页约束定义(续)UNIQUEUNIQUE约束约束在列级约束定义(仅用于单列约束)列定义 UNIQUE例:SNAME char(7)UNIQUE在表级约束定义(用于单列或多列组合约束)UNIQUE()例:UNIQUE(SNO,CNO)第22页/共117页创建学生表创建学生表CREATE TABLE Student(Sno char(7)PRIMARY KEY,S

10、name char(10)NOT NULL,Ssex char(2)CHECK(Ssex=男OR Ssex=女),Sage tinyint CHECK(Sage=15 AND Sage0),Semester tinyint CHECK(Semester0),Period int CHECK(Period0),PRIMARY KEY(Cno)第24页/共117页创建创建SC表表CREATE TABLE SC(Sno char(7)NOT NULL,Cno char(10)NOT NULL,Grade tinyint CHECK(Grade=0 and Grade=100),PRIMARY KEY

11、(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno)第25页/共117页删除表删除表当确信不再需要某个表时,可以将其删除删除表时会将与表有关的所有对象一起删掉,包括表中的数据。删除表的语句格式为:DROP TABLE ,例:删除test表的语句为:DROP TABLE test第26页/共117页修改表结构 在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE语句实现。ALTER TABLE语句可以对表添加列、删除列、修改列的定义

12、、定义主码、外码,也可以添加和删除约束。第27页/共117页修改表结构语法ALTER TABLE ALTER COLUMN|ADD COLUMN|DROP COLUMN|ADD PRIMARY KEY(列名,n )|ADD FOREIGN KEY(列名)REFERNECES 表名(列名)第28页/共117页示例例2为SC表添加“修课类别”列,此列的定义为:XKLB char(4)ALTER TABLE SC ADD XKLB char(4)NULL 第29页/共117页示例例3将新添加的XKLB的类型改为 char(6)。ALTER TABLE SC ALTER COLUMN XKLB cha

13、r(6)第30页/共117页示例例4删除Course表的Period列。ALTER TABLE Course DROP COLUMN Period 第31页/共117页4.4 数据查询功能 查询语句的基本结构简单查询多表连接查询子查询 第32页/共117页查询语句基本格式SELECT -需要哪些列 FROM -来自于哪些表 WHERE -根据什么条件 GROUP BY HAVING ORDER BY 第33页/共117页简单查询1.选择表中若干列 第34页/共117页1.查询指定的列查询指定的列查询表中用户感兴趣的部分属性列。例5:查询全体学生的学号与姓名。SELECT Sno,Sname F

14、ROM Student例6:查询全体学生的姓名、学号和所在系。SELECT Sname,Sno,Sdept FROM Student 第35页/共117页2.查询全部列查询全部列 例7查询全体学生的记录SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student等价于:SELECT *FROM Student 第36页/共117页3.查询经过计算的列查询经过计算的列 例8查询全体学生的姓名及其出生年份。SELECT Sname,2006-Sage FROM Student例9查询全体学生的姓名和出生年份所在系,并在出生年份列前加入一个列,此列的每行数据均为出生年份

15、常量值。SELECT Sname,出生年份,2006-Sage FROM Student 第37页/共117页改变列标题改变列标题 语法:列名|表达式 AS 列标题或:列标题 列名|表达式例:SELECT Sname 姓名,Year of Birth 出生年份,2006-Sage 年份,FROM Student 第38页/共117页简单查询2.选择表中若干元组 第39页/共117页1.消除取值相同的记录消除取值相同的记录例10在修课表中查询有哪些学生修了课程,要求列出学生的学号。SELECT Sno FROM SC结果中有重复的行。用DISTINCT关键字可以去掉结果中的重复行。DISTINC

16、T关键字放在SELECT词的后边、目标列名序列的前边。SELECT DISTINCT Sno FROM SC第40页/共117页2.查询满足条件的元组查询满足条件的元组 查询条件查询条件谓谓 词词比较运算符=,=,=,(或!=)NOT+比较运算符 确定范围BETWEENAND,NOT BETWEENAND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE 空值IS NULL,IS NOT NULL逻辑谓词)AND,OR第41页/共117页比较大小比较大小例11查询计算机系全体学生的姓名。SELECT Sname FROM Student WHERE Sdept=计算机系例12查询年龄

17、在20岁以下的学生的姓名及年龄。SELECT Sname,Sage FROM Student WHERE Sage 20例13查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade 60第42页/共117页确定范围确定范围用BETWEENAND和NOT BETWEENAND是逻辑运算符,可以用来查找属性值在或不在指定范围内的元组,其中BETWEEN后边指定范围的下限,AND后边指定范围的上限。BETWEENAND的格式为:列名|表达式 NOT BETWEEN 下限值 AND 上限值如果列或表达式的值在不在下限值和上限值范围内,则结果为T

18、rue,表明此记录符合查询条件。第43页/共117页示例例14查询年龄在2023岁之间的学生的姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23例15查询年龄不在2023之间的学生姓名、所在系和年龄。SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23第44页/共117页确定集合使用IN运算符。用来查找属性值属于指定集合的元组。格式为:列名 NOT IN(常量1,常量2,常量n)当列中的值与IN中的某个常量值相

19、等时,则结果为True,表明此记录为符合查询条件的记录;NOT IN:当列中的值与某个常量值相同时,则结果为False,表明此记录为不符合查询条件的记录 第45页/共117页示例例16查询信息系、数学系和计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student WHERE Sdept IN(信息系信息系,数学系数学系,计算机系计算机系)例17查询既不是信息系、数学系,也不是计算机系学生的姓名和性别。SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN(信息系信息系,数学系数学系,计算机系计算机系)第46页/共117页字

20、符匹配使用LIKE运算符一般形式为:列名 NOT LIKE 匹配串中可包含如下四种通配符:_:匹配任意一个字符;%:匹配0个或多个字符;:匹配 中的任意一个字符;:不匹配 中的任意一个字符 第47页/共117页示例例18查询姓张的学生的详细信息。SELECT*FROM Student WHERE Sname LIKE 张张%例19查询学生表中姓张、李和刘的学生的情况。SELECT*FROM Student WHERE Sname LIKE 张李刘张李刘%例20查询名字中第2个字为小或大的学生的姓名和学号 SELECT Sname,Sno FROM Student WHERE Sname LIK

21、E _小大小大%第48页/共117页示例(续)例21查询所有不姓“刘”的学生。SELECT Sname FROM Student WHERE Sname NOT LIKE 刘刘%例22查询学号的最后一位不是2、3、5的学生情况。SELECT*FROM Student WHERE Sno LIKE%235 第49页/共117页涉及空值的查询涉及空值的查询空值(NULL)在数据库中表示不确定的值。例如,学生选修课程后还没有考试时,这些学生有选课记录,但没有考试成绩,因此考试成绩为空值。判断某个值是否为NULL值,不能使用普通的比较运算符。判断取值为空的语句格式为:列名 IS NULL判断取值不为空

22、的语句格式为:列名 IS NOT NULL 第50页/共117页示例例23查询无考试成绩的学生的学号和相应的课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NULL例24查询所有有考试成绩的学生的学号和课程号。SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL 第51页/共117页多重条件查询在WHERE子句中可以使用逻辑运算符AND和OR来组成多条件查询。用AND连接的条件表示必须全部满足所有的条件的结果才为True;用OR连接的条件表示只要满足其中一个条件结果即为True。例25查询计算机系年龄在20岁以下的学生

23、姓名。SELECT Sname FROM Student WHERE Sdept=CS AND Sage 20 第52页/共117页简单查询3.对查询结果进行排序 第53页/共117页对查询结果进行排序可对查询结果进行排序。排序子句为:ORDER BY ASC|DESC ,说明:按进行升序(ASC)或降序(DESC)排序。第54页/共117页示例例26将学生按年龄的升序排序。SELECT*FROM Student ORDER BY Sage例27查询选修了c02号课程的学生的学号及其成绩,查询结果按成绩降序排列。SELECT Sno,Grade FROM SCWHERE Cno=c02 ORD

24、ER BY Grade DESC 例28查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。SELECT*FROM StudentORDER BY Sdept,Sage DESC 第55页/共117页简单查询4.使用计算函数汇总数据 第56页/共117页使用计算函数汇总数据 SQL提供的计算函数有:COUNT(*):统计表中元组个数;COUNT(DISTINCT ):统计本列列值个数;SUM(DISTINCT ):计算列值总和;AVG(DISTINCT ):计算列值平均值;MAX(DISTINCT ):求列值最大值;MIN(DISTINCT ):求列值最小值。上述函

25、数中除上述函数中除COUNT(*)外,其他函数在计算过程中均忽)外,其他函数在计算过程中均忽略略NULL值。值。第57页/共117页示例例29统计学生总人数。SELECT COUNT(*)FROM Student 例30统计选修了课程的学生的人数。SELECT COUNT(DISTINCT Sno)FROM SC例31 计算9512101号学生的考试总成绩之和。SELECT SUM(Grade)FROM SC WHERE Sno=9512101 第58页/共117页示例(续)例32计算C01号课程学生的考试平均成绩。SELECT AVG(Grade)FROM SC WHERE Cno=C01例

26、33查询选修了C01号课程的学生的最高分和最低分。SELECT MAX(Grade),MIN(Grade)FROM SC WHERE Cno=C01注意:计算函数不能出现在WHERE子句中 第59页/共117页简单查询5.对查询结果进行分组计算 第60页/共117页对查询结果进行分组计算对查询结果进行分组计算 作用:可以控制计算的级别:对全表还是对一组。目的:细化计算函数的作用对象。分组语句的一般形式:GROUP BY HAVING 第61页/共117页1.使用GROUP BY例34统计每门课程的选课人数,列出课程号和人数。SELECT Cno as 课程号,COUNT(Sno)as 选课人数

27、 FROM SC GROUP BY Cno 对查询结果按Cno的值分组,所有具有相同Cno值的元组为一组,然后再对每一组使用COUNT计算,求得每组的学生人数。第62页/共117页SnoSnoCnoCnoGradeGrade951201951201C01C018080951201951201C02C027878951202951202C01C019090952103952103C02C028888952103952103C01C018585952103952103C03C039191952103952103C04C047474CnoCnoCount(Sno)Count(Sno)C01C013

28、3C02C022 2C03C031 1C04C041 1SnoSnoCnoCnoGradeGrade951201951201C0C01 18080951202951202C0C01 19090952103952103C0C01 18585951201951201C02C027878952103952103C02C028888952103952103C03C039191952103952103C04C047474第63页/共117页例35查询每名学生的选课门数和平均成绩。SELECT Sno as 学号,COUNT(*)as 选课门数,AVG(Grade)as 平均成绩 FROM SC GROU

29、P BY Sno第64页/共117页2.使用HAVINGHAVING用于对分组自身进行限制,它有点象WHERE子句,但它用于组而不是对单个记录。例36查询修了3门以上课程的学生的学号SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)3 第65页/共117页示例例37查询修课门数等于或大于4门的学生的平均成绩和选课门数。SELECT Sno,AVG(Grade)平均成绩,COUNT(*)修课门数 FROM SC GROUP BY Sno HAVING COUNT(*)=4 第66页/共117页多表连接查询 若一个查询同时涉及两个或两个以上的表,则称之为

30、连接查询。连接查询是关系数据库中最主要的查询连接查询包括内连接、外连接和交叉连接等。第67页/共117页连接基础知识连接基础知识连接查询中用于连接两个表的条件称为连接条件或连接谓词。一般格式为:必须是可比的必须是可比的第68页/共117页内连接SQL-92 内连接语法如下:SELECT FROM 表名 INNER JOIN 被连接表 ON 连接条件第69页/共117页执行连接操作的过程:执行连接操作的过程:首先取表首先取表1 1中的第中的第1 1个元组,然后从头开始扫描表个元组,然后从头开始扫描表2 2,逐一查找,逐一查找满足连接条件的元组,满足连接条件的元组,找到后就将表找到后就将表1 1中

31、的第中的第1 1个元组与该元组拼接起来,形成结果个元组与该元组拼接起来,形成结果表中的一个元组。表中的一个元组。表表2 2全部查找完毕后,再取表全部查找完毕后,再取表1 1中的第中的第2 2个元组,然后再从头开个元组,然后再从头开始扫描表始扫描表2 2,重复这个过程,直到表重复这个过程,直到表1 1中的全部元组都处理完毕为止。中的全部元组都处理完毕为止。第70页/共117页例40.查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。SELECT Sname,Cno,Grade FROM Student JOIN SC ON Student.Sno=SC.Sno WHERE S

32、dept=计算机系 第71页/共117页例41.查询信息系修了VB课程的学生的修课成绩,要求列出学生姓名、课程名和成绩。SELECT Sname,Cname,Grade FROM Student s JOIN SC ON s.Sno=SC.Sno JOIN Course c ON c.Cno=SC.Cno WHERE Sdept=信息系 AND Cname=VB 第72页/共117页自连接为特殊的内连接相互连接的表物理上为同一张表。必须为两个表取别名,使之在逻辑上成为两个表。第73页/共117页例43.查询与刘晨在同一个系学习的学生的姓名和所在的系。SELECT S2.Sname,S2.Sde

33、pt FROM Student S1 JOIN Student S2 ON S1.Sdept=S2.Sdept WHERE S1.Sname=刘晨 AND S2.Sname!=刘晨第74页/共117页外连接只限制一张表中的数据必须满足连接条件,而另一张表中数据可以不满足连接条件。ANSI方式的外连接的语法格式为:FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON theta方式的外连接的语法格式为:左外连接:FROM 表1,表2 WHERE 表1.列名(+)表2.列名右外连接:FROM 表1,表2 WHERE 表1.列名 表2.列名(+)第75页/共117页例44.查询学生

34、的修课情况,包括修了课程的学生和没有修课的学生。SELECT Student.Sno,Sname,Cno,GradeFROM Student LEFT OUTER JOIN SCON Student.Sno=SC.Sno 第76页/共117页子查询 在SQL语言中,一个SELECTFROMWHERE语句称为一个查询块。子查询是一个 SELECT 查询,它嵌套在 SELECT、INSERT、UPDATE、DELETE 语句的 WHERE 或 HAVING 子句内,或其它子查询中 子查询的 SELECT 查询总是使用圆括号括起来。第77页/共117页使用子查询进行基于集合的测试使用子查询进行基于集

35、合的测试的语句的一般格式为:列名 NOT IN(子查询)第78页/共117页示例例45.查询与刘晨在同一个系的学生。SELECT Sno,Sname,Sdept FROM StudentWHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=刘晨)AND Sname!=刘晨 第79页/共117页示例例46.查询成绩为大于90分的学生的学号、姓名。SELECT Sno,Sname FROM StudentWHERE Sno IN(SELECT Sno FROM SCWHERE Grade 90)第80页/共117页例47.查询选修了“数据库基础

36、”课程的学生的学号、姓名。SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno IN(SELECT Cno FROM Course WHERE Cname=数据库基础)第81页/共117页使用子查询进行比较测试使用子查询进行比较测试 带比较运算符的子查询指父查询与子查询之间用比较运算符连接,当用户能确切知道内层查询返回的是单值时,可用、=、=、运算符。第82页/共117页例48.查询修了c02课程且成绩高于此课程的平均成绩的学生的学号和成绩。SELECT Sno,Grade FROM SC WHERE C

37、no=c02 and Grade (SELECT AVG(Grade)from SC WHERE Cno=c02)第83页/共117页使用子查询进行存在性测试使用子查询进行存在性测试 一般使用EXISTS谓词。带EXISTS谓词的子查询不返回查询的数据,只产生逻辑真值(有数据)和假值(没有数据)。第84页/共117页例49.查询选修了c01号课程的学生姓名。SELECT Sname FROM Student WHERE EXISTS(SELECT*FROM SC WHERE Sno=Student.Sno AND Cno=c01)第85页/共117页注意注1:处理过程为:先外后内;由外层的值决

38、定内层的结果;内层执行次数由外层结果数决定。注2:由于EXISTS的子查询只能返回真或假值,因此在这里给出列名无意义。所以在有EXISTS的子查询中,其目标列表达式通常都用*。第86页/共117页上句的处理过程1.找外层表Student表的第一行,根据其Sno值处理内层查询2.由外层的值与内层的结果比较,由此决定外层条件的真、假3.顺序处理外层表Student表中的第2、3、行。第87页/共117页例50.查询没有选修c01号课程的学生姓名和所在系。SELECT Sname,Sdept FROM Student WHERE NOT EXISTS (SELECT*FROM SC WHERE Sn

39、o=Student.Sno AND Cno=c01)第88页/共117页4.5 数据更改功能 插入数据 更新数据 删除数据第89页/共117页插入数据 插入单行记录的INSERT语句的格式为:INSERT INTO ()VALUES(值表)功能:新增一个符合表结构的数据行,将值表数据按表中列定义顺序或列名表顺序赋给对应列名。第90页/共117页注意值列表中的值与列名表中的列按位置顺序对应,它们的数据类型必须一致。如果后边没有指明列名,则新插入记录的值的顺序必须与表中列的定义顺序一致,且每一个列均有值(可以为空)。第91页/共117页示例例51将新生记录(95020,陈冬,男,信息系,18岁)插

40、入到Student表中。INSERT INTO Student VALUES(9521105,陈冬,男,18,信息系)例52在SC表中插入一新记录,成绩暂缺。INSERT INTO SC(Sno,Cno,XKLB)VALUES(9521105,c01,必修)实际插入的值为:(9521105,c01,NULL,必修)第92页/共117页更新数据 用UPDATE语句实现。格式:UPDATE SET ,n WHERE 第93页/共117页无条件更新例53.将所有学生的年龄加1。UPDATE Student SET Sage=Sage+1第94页/共117页有条件更新1.基于本表条件的更新例54.将9

41、512101学生的年龄改为21岁UPDATE Student SET Sage=21WHERE Sno=9512101 第95页/共117页2.基于其他表条件的更新例55:将计算机系全体学生的成绩加5分。(1)用子查询实现)用子查询实现UPDATE SC SET Grade=Grade+5 WHERE Sno IN(SELECT Sno FROM Student WHERE Sdept=计算机系计算机系)(2)用多表连接实现)用多表连接实现UPDATE SC SET Grade=Grade+5 FROM SC JOIN Student ON SC.Sno=Student.Sno WHERE S

42、dept=计算机系第96页/共117页删除数据 用DELETE语句实现格式:DELETE FROM WHERE 第97页/共117页无条件删除无条件删除例56.删除所有学生的选课记录。DELETE FROM SC 第98页/共117页有条件删除有条件删除(1)基于本表条件的删除。例57删除所有不及格学生的修课记录。DELETE FROM SC WHERE Grade 60 第99页/共117页基于其他表条件的删除例58删除计算机系不及格学生的修课记录。(1)用子查询实现DELETE FROM SC WHERE Grade 60 AND Sno IN(SELECT Sno FROM Studen

43、t WHERE Sdept=计算机系)(2)用多表连接实现DELETE FROM SC FROM SC JOIN Student ON SC.Sno=Student.SnoWHERE Sdept=计算机系AND Grade、=、和=返回一个范围值的查询。被连续访问的列。返回大型结果集的查询。经常被用作联接的列,一般来说,这些是外码列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引。第107页/共117页聚簇索引不适用于聚簇索引不适用于频繁更改的列。因为这将导致整行移动。字节长的列。因为聚簇索引的键值将被所有非聚簇索引作为查找键使用,并被存储在每个非聚簇索引的B树的叶级索引项

44、中。第108页/共117页非聚簇索引非聚簇索引 数据存储在一个地方,索引存储在另一个地方。索引带有指向数据的存储位置的指针。索引中的索引项按索引键值顺序存储,而表中的信息按另一种顺序存储。与图书的目录类似。第109页/共117页非聚簇索引特点非聚簇索引特点数据行不按非聚簇索引键的顺序排序和存储。非聚簇索引的叶层不包含数据页。非聚簇索引B树的叶节点包含索引行。每个索引行包含非聚簇索引键值以及一个或多个行定位器,这些行定位器指向该键值对应的数据行。可以在有聚簇索引的表和无聚簇索引的表上定义。第110页/共117页SQL Server非聚簇索引中的行定位器非聚簇索引中的行定位器有两种形式:如果表没有

45、聚簇索引,则行定位器就是指向行的指针。该指针用文件标识符(ID)、页码和页上的行数生成。整个指针称为行ID。如果表有聚簇索引,则行定位器就是行的聚簇索引键值。通过使用聚簇索引键搜索聚簇索引来检索数据行,而聚簇索引键存储在非聚簇索引的叶节点行内。第111页/共117页非聚簇索的考虑非聚簇索的考虑可考虑将非聚簇索引用于:包含大量非重复值的列。不返回大型结果集的查询。经常作为查询条件使用的列。经常作为连接和分组条件的列。第112页/共117页唯一索引唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,该索引可以确保索引列中每个值的组合都是唯一的。聚簇索引和非聚簇索引都可以是唯一的。只要列中

46、的数据是唯一的,就可以在同一个表上创建一个唯一的聚簇索引和多个唯一的非聚簇索引。第113页/共117页创建和删除索引创建索引:CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX ON (,n )UNIQUE:创建唯一索引。CLUSTERED:创建聚簇索引。NONCLUSTERED:创建聚簇索引。如果没有指定索引类型,则默认是创建非聚簇索引。第114页/共117页示例例1为Student表的Sname列创建非聚簇索引。CREATE INDEX Sname_ind ON Stuent(Sname)例2为Student表的Sid列创建惟一的聚簇索引。CREATE UNIQUE CLUSTERED INDEX Sid_ind ON Stuent(Sid)第115页/共117页删除索引 删除索引语句格式:DROP INDEX 例3删除Student表中的Sname_ind索引。DROP INDEX Sname_ind 第116页/共117页感谢您的观看。第117页/共117页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁