数据更新与查询14_第1页
数据更新与查询14_第2页
数据更新与查询14_第3页
数据更新与查询14_第4页
数据更新与查询14_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

数据更新与查询课前预习将手机调到静音认真做笔记及时完成作业上课要求本节内容插入数据(重点)修改数据(重点)删除数据查询语句简单查询(重点)多表查询(难点)嵌套查询使用T-SQL语句插入记录使用INSERTINTO语句也可以向表中插入数据。INSERTINTO语句的语法格式如下:INSERT[INTO]表名

[(列名[,...n])]VALUES(表达式[,...n])向Students表中插入一行数据。sno:2009207104sname:李吉sex:男birthday:1981-5-31professional:信息管理telephonemail:liji@126.cominsert

intostudents(sno,sname,sex,birthday,professional,telephone,email)values('2009207104','李吉','男','1981-5-31','信息管理',,'liji@126.com')在insertinto插入数据时,可以省略列名列表,在这种情况下,values后数值的顺序一定要与表中定义列的顺序相同。否则,要么插入数据不成功,要么插入数据成功但不正确。

使用insertinto语句一次只能插入一行数据。使用T-SQL语句修改记录

使用UPDATE语句修改表中已经存在的数据,该语句既可以一次更新一行数据,也可以一次更新表中的全部数据行。

使用UPDATE要求修改前后的数据类型和数据个数相同。UPDATE语句语法格式如下:UPDATE表名SET{列名=表达式}[,...n][WHERE逻辑表达式]当省略where子句时,表示对所有行的指定列进行修改,否则只对满足逻辑表达式的数据行的指定列进行修改。修改的列值由表达式给定。将Students表中学号为“2009207104”的电话update

studentssettelephone=wheresno='2009207104'使用T-SQL语句删除记录对表中数据的删除可以使用DELETE语句实现。该语句可以从一个表中删除一行或多行数据。DELETE语句基本语法格式如下:DELETE[FROM]表名[WHERE逻辑表达式]在delete语句中,如果使用了where子句,表示从指定的表中删除满足where子句条件的数据行。如果没有where子句,表示删除指定表中的全部数据,使用时应小心谨慎。删除students表中学号为“2009207104”的数据记录。deletefromstudentswheresno='2009207104'练习12023/2/11、192例6-18----6-22数据查询

查询是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索。

把所有的被选择的行组织在一起,形成另外一个类似于表的结构,这便是查询的结果,通常叫做记录集。记录集的结构与表的结构是相同的,都是由多行组成的,在记录集上依然可以进行再次查询。SELECT语句

T-SQL语言中用于数据查询的语句是SELECT语句。SELECT语句是功能最强也是最复杂的SQL语句,既可以实现对单表的数据查询,也可以完成复杂的多表、视图连接查询和嵌套查询等。SELECT语句的基本语法格式如下:SELECT[ALL|DISTINCT][TOPn]表达式列表[AS别名]FROM表名或视图名[WHERE条件表达式][GROUPBY列名][HAVING搜索表达式][ORDERBY列名[ASC|DESC]]其中:SELECT子句用于指定输出的内容。FROM子句用于指定要检索的数据的来源表或来源视图。WHERE子句用于指定对记录的过滤条件。GROUPBY子句用于指定对检索到的记录进行分组的条件。HAVING子句用于在分组的基础上指定选取某些组的条件,必须与GROUPBY一起使用。ORDERBY子句用于对检索到的记录进行排序。注意:在SELECT语句中可以省略可选语句(“[]”括起来的子句),但这些子句的顺序非常重要。各子句在使用时必须按照语法格式中的顺序出现,否则会出错。查询Readersys表中的所有读者的姓名,专业和借书数量。selectrname,professional,borrownumberfromReadersys查询Borrowsys表中的读者编号,图书编号。selectrno,bnofromBorrowsys查询Booksys表的所有记录。select*fromBooksys条件查询大部分查询都是从整个表中选出符合条件的部分信息,这时就需要对结果集中的记录进行过滤。

在SELECT语句中,可以使用WHERE子句来指定查询条件,将不符合条件的记录排除在结果集之外。查询Readersys表中借书数量2本及以上的读者信息。select*fromReadersyswhereborrownumber>=2消除重复数据行

指定ALL关键字(默认)将保留查询结果集中的全部数据行,因此,在查询结果集中可能会出现重复的数据行。使用DISTINCT关键字可消除查询结果集中重复的数据行。selectdistinctprofessionalfromReadersyswhereborrownumber>=2selectprofessionalfromReadersyswhereborrownumber>=2自定义列标题默认情况下,在结果集中显示的列名为表中的列名,可以使用AS关键字指定一个更加容易理解的别名取代原来的列名。

例如:sno:学号sname:姓名professional:专业

查询Readersys表中读者的编号和姓名。selectrnoas'读者编号',rnameas'读者姓名'fromReadersys注意:指定的列标题是一个字符串,可以用单引号括起来,也可以不用,关键字as也可以省略。

使用聚集函数聚集函数的主要功能是对表在指定列名表达式的值上进行纵向统计和计算,也称为聚合函数。

在SELECT查询语句中,常用的聚集函数如下:COUNT:统计列中选取的项目个数或查询输出的行数。SUM:计算指定的数值型列名表达式的总和。AVG:计算指定的数值型列名表达式的平均值。MAX:求出指定的数值、字符或日期型列名表达式的最大值。MIN:求出指定的数值、字符或日期型列名表达式的最小值。统计Readersy数据表中读者的数量。selectcount(*)as读者数fromReadersys查询Booksys表中price最高的和最低的图书。selectmax(price)as价格最高,min(price)as价格最低fromBooksys范围查询

WHERE子句中可用关键字BETWEEN和AND判定某个表达式值是否在某个区间范围之内。要实现这种查询,必须知道查找的初值(最小值)和终值(最大值),初值和终值之间用AND分开。查询借书日期在2010-5-1日至2010-8-1日之间的读者编号、图书编号和借书日期。selectrno,bno,borrowdatefromBorrowsyswhereborrowdatebetween'2010-5-1'and'2010-8-1'模糊查询通常在查询字符类型的数据时,提供的查询条件并不是十分精确,如查询条件仅仅是包含或类似某种样式的字符,这种查询称为模糊查询。在WHERE子句中,可以使用LIKE关键字实现模糊查询。LIKE关键字的语法形式如下:<字符串表达式>[NOT]LIKE<模式表达式>模式表达式可以是一个完整的字符串,也可以包含有通配符%、_、[]或[^],这4种通配符的含义如表所示。通配符含义%代表0个或多个字符_代表1个字符[]代表指定范围或集合中的1个字符[^]代表不在指定范围或集合中的1个字符查询Booksys表中与“数据库”相关的图书的图书编号、图书名称及出版社。selectbno,bname,pressfromBooksyswherebnamelike'数据库%'查询Booksys表中出版社名包含“教育”的图书名称、图书类别和出版社。selectbname,category,pressfromBooksyswherepresslike'%教育%'查询Booksys表中作者名为_志明的图书名称和出版日期。selectbname,publicationdatefromBooksyswhereauthorlike'_志明'查询Booksys表中出版社名包含人民的图书名称、图书类别和出版社。selectbname,category,pressfromBooksyswherepresslike'[人、民]%'查询Booksys表中出版社名不包含人民的图书名称、图书类别和出版社。selectbname,category,pressfromBooksyswherepresslike'[^人、民]%'排序查询使用ORDERBY子句可以按一个或多个属性列对数据进行排序,排序方式有升序(ASC)和降序(DESC)2种,默认的排序方式为升序。查询Booksys表中的图书编号、图书名称和图书价格,图书价格按照升序排列。selectbno,bname,pricefromBooksysorderbyprice练习22023/2/11、189例6-7—6-12

连接(多表)查询

在设计表时,经常把相关的数据分散在不同的表中。但在实际使用时,往往需要同时从两个或两个以上的表中检索数据,并且每一个表中的数据仍以单独的列出现在结果集中。

连接查询:实现从两个或两个以上表中检索数据且结果集中出现的列来自于多个表的检索操作。内连接内连接是指多个数据源通过相关列的值满足连接条件进行的匹配连接,并从这些表中提取数据组合成新的行输出。

内连接用INNERJOIN关键字来指定,其语法格式如下:FROM表1{[INNER]JOIN表2ON条件表达式}[…n]外连接内连接返回的结果集是符合连接条件和查询条件的数据行,外连接是其中一个表的全集和另一个表与其匹配的数据。外连接与内连接最大的不同是外连接返回from子句中指定的至少一个表的所有行。全外连接全外连接将左表所有数据分别于右表每一条数据进行连接,返回的结果集中除了满足连接条件的数据行外,还有左、右表中不满足连接条件的数据行,分别在左、右表的相应列上填上NULL值。全外连接的语法如下:From左表fullouterjoin右表on连接条件交叉连接交叉连接也叫非限制连接,它将两个表不加任何限制的组合起来。

没有WHERE子句的交叉连接返回的结果集的行数等于两个表的数据行数的乘积,因此可能产生庞大的结果集。

交叉连接的语法如下:FROM表名1CROSSJOIN表名2自连接表可以通过自连接实现自身的连接运算。自连接可以看作是一张表的两个副本之间进行的连接。

在自连接中,必须为表指定两个不同的别名,使之逻辑上成为两张表。练习32023/2/11、190例6-13—6-15子查询

SELECT语句可以嵌套在其他语句中,这些语句包括SELECT、INSERT、UPDATE、DELETE等,这些嵌套的SELECT语句被称为子查询。

外层的SELECT语句被称为外部查询,内层的SELECT语句被称为内部查询(或子查询)。当一个查询依赖于另外一个查询结果时,则可以使用子查询。子查询分为IN子查询、EXISTS子查询和比较子查询。IN子查询

IN子查询通过使用IN关键字可以把原表中目标列的值和子查询的返回结果进行比较。

如果列值与子查询的结果一致或存在与之匹配的数据行,则查询结果集中就包含该数据行。查询“C语言程序设计”或“面向对象程序设计”课程的课程号。selectcnofromCourseWherecnamein('C语言程序设计','面向对象程序设计')查询选修了“C语言程序设计”或“面向对象程序

设计”课程的学生学号。selectsnofromElectivewherecnoin(selectcnofromCoursewherecnamein('C语言程序设计','面向对象程序设计')

)EXISTS子查询

EXISTS关键字的作用是在WHERE子句中测试子查询的结果是否为空,若子查询的结果不为空,则EXISTS返回TRUE,否则返回FALSE。使用EXISTS关键字的子查询实际上不返回任何数据。查询至少选修了一门课程的学生学号和姓名。selectStudents.sno,snamefromStudentswhere

温馨提示

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

评论

0/150

提交评论