数据库原理及应用(第3版)课件:数据库、表及数据操作_第1页
数据库原理及应用(第3版)课件:数据库、表及数据操作_第2页
数据库原理及应用(第3版)课件:数据库、表及数据操作_第3页
数据库原理及应用(第3版)课件:数据库、表及数据操作_第4页
数据库原理及应用(第3版)课件:数据库、表及数据操作_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

数据库、表和数据操作数据库原理及应用基于SQLServer2022(第3版)目录

目录

4.1数据库的常用操作

4.2常用的数据表操作

4.3数据查询常用操作

4.4数据更新常用方法

4.5实验4数据库、表及数据操作4.6本章小结

教学目标●掌握常用数据库的创建(定义)、修改和删除操作●熟练掌握常用数据表的建立、修改和删除方法●熟悉常用数据查询的各种方式方法及实际应用●熟练掌握数据输入、修改、插入、删除等操作●掌握数据库、表及数据的常用操作实验和应用教学目标同步实验(上机)友情提示重点重点重点4.1.1数据库的建立(定义)方法4.1数据库的常用操作1.数据库建立的策划设计

建立(定义)数据库应先策划设计,主要考虑:(1)数据库拥有/创建者、存取路径及位置和数据库文件名。(2)相关的数据文件和事务日志文件的逻辑名、物理名、初始大小、增长方式及幅度和最大容量(存储空间大小)等。(3)准备建立的数据库实际使用的用户数及其使用权限。(4)数据库存储空间与存储设备配置的匹配和文件组的存放。(5)偶然突发意外故障时,可以进行数据库备份和恢复。常见的网上购书,实际上网站需要建立一个售书数据库,并在其内建立客户、图书、销售、库存等数据表并输入相应的数据,便于客户查询、订书及增删改等操作。可见数据库是存储和处理数据的重要基础和条件,数据库的建立实际上是在指定位置构建一个存储空间,用于在数据库内建立数据表(结构)并按输入、存储、处理和传输相关的图书数据。案例4-1

说明:为了避免建立数据库时,出现疏忽需要先策划。主要是为了后续存放同类相关的多个业务数据表(及数据)准备一个存储空间。数据库主要由数据库名、拥有者的用户名或账号、存储路径和位置等确定。

2.数据库建立的常用方法(1)建立数据库的SSMS菜单操作

登录SQLServer2022,打开SSMS(SQLServerManagementStudio)界面和菜单,用鼠标点击操作建立(定义)数据库,可以通过实例说明。4.1数据库的常用操作

建立一个存放高等院校二级学院基本信息的数据库School。在SSMS的可视化界面下,利用鼠标点击菜单操作的步骤为:先启动SQLServer并连接,在“对象资源管理器”选中“数据库”项并右击出现“快捷菜单”,如图4-1所示。在快捷菜单中单击“新建数据库”之后,出现“新建数据库”的界面,如图4-2所示,然后按照要求进行填写。案例4-2图4-1创建数据库的快捷菜单

图4-2新建数据库的界面

在“新建数据库”的对话框中,将数据库名称输入为School,保留其他参数为默认。最后单击“确定”,返回“资源管理器”刷新后即可看到新建的数据库School。4.1数据库的常用操作(2)建立数据库的SQL语句方法

数据库建立(定义)命令语句的语法格式为:CREATEDATABASE<数据库名>[AUTHORIZATION<用户名>][ON[PRIMARY](路径/文件大小)]

说明:(1)“数据库名”是用户建立数据库文件名。(2)AUTHORIZATION选项用于设定数据库拥有者(默认登录者),可授权给指定用户。(3)ON[PRIMARY](路径/文件大小)选项,主要用于设定新建立数据库存放的位置及文件初始容量。

注意:新建数据库的拥有者系统默认(首次新建无指定)为登录的注册人,存储路径(位置)默认为当前盘及当前路径。<>必选项[]可选项4.1数据库的常用操作4.1数据库的常用操作

建立一个“图书销售”数据库,主要数据文件为图书销售。数据库拥有者为李杰,存储位置为F:\数据库\图书销售.mdf。CREATEDATABASE图书销售AUTHORIZATION李杰ON(NAME=图书销售,FILENAME=''F:\数据库\图书销售.mdf');案例4-34.1.2数据库的打开、切换和关闭1.数据库的打开使用

在实际应用中,当登录SQLServer服务器并连接后,都需要先打开数据库,然后才能操作(使用)数据库及其中的数据表、数据、视图等操作对象。打开数据库的语法格式为:USE[<数据库名>]

说明:(1)必须先打开指定数据库之后,才能操作此数据库的对象(数据表、视图、索引等)及其有关数据等。(2)“数据库名”为在指定位置打开的数据库(文件)名。4.1数据库的常用操作4.1.2数据库的打开、切换和关闭2.数据库的切换/关闭

数据库的切换/关闭SQL的语法格式为:USE[<数据库名>]

说明:(1)“数据库名”为所切换(另打开数据库)或关闭的数据库名。(2)切换是指在已经打开某个数据库的情况下,再打开另一其他数据库时(当前打开的数据库),同时关闭原数据库的过程。一个工作区只能打开一个数据库。4.1数据库的常用操作4.1.3数据库修改的操作在应用中,数据库修改的操作主要涉及两个方面:修改数据库的名称、修改大小(修改其数据文件的大小)。修改操作方法有两种:利用SSMS修改或使用SQL语句修改。1.数据库修改的SSMS菜单操作图4-3利用SSMS修改数据库界面4.1数据库的常用操作2.数据库修改的SQL语句方法利用SQL语句修改数据库的基本语法格式为:

ALTERDATABASE<数据库名>

MODIFYNAME|FILE=<新数据库名/文件名>

注意:数据库修改方法及注意问题,参照知识拓展“修改数据库时需要注意的问题”。(1)修改数据库名称的操作方法修改数据库的名称的操作的基本语法格式为:

ALTERDATABASE<原数据库名>

MODIFYNAME=<新数据库名>4.1数据库的常用操作*(2)修改数据库容量。实际上是修改数据库中具体数据文件的大小,其常用操作的基本语法格式为:

ALTERDATABASE<数据库名>

MODIFYFILE ( name=‘逻辑名’,size=修改后的大小,maxsize=修改后的最大容量(大小), filegrowth=新的增长方式)

注意:用于修改mdf,ndf,ldf文件大小,修改后大小应大于原初始大小,否则无法保存数据.若超过原最大容量(maxsize)则maxsize更新为修改后的大小.4.1数据库的常用操作

将数据库“图书销售”文件名更改为“商品销售”。

ALTERDATABASE

图书销售

(存储位置略)

MODIFYNAME=商品销售案例4-4

注意:修改数据库容量的操作需要注意:1)具有建立数据库权限者,才能执行修改命令。此命令可更改数据库名称、增加或删除数据库中的文件(组),也可改文件(组)属性。2)为了防止文件中信息被损坏,文件容量只能增加。3)主要用于修改mdf、ndf、ldf文件容量,修改后的容量应当大于原初始容量,否则无法保存数据。若超过最大容量将会更新为修改后容量。4.1数据库的常用操作4.1.4数据库删除的操作

数据库删除的方法有两种:利用SSMS删除或使用SQL语句删除。

1.数据库删除的SSMS菜单方法

用界面菜单删除数据库的步骤:“对象资源管理器”中展开“数据库”,选择数据库,右键选择“删除”,在打开“删除对象”窗口,确定要删除的数据库,选择“关闭现有连接”复选框确定删除备份及关闭已存在数据库连接.

图4-4利用SSMS删除数据库界面4.1数据库的常用操作

2.数据库删除的SQL语句方法

利用SQL语句删除数据库的语法格式为:

DROPDATABASE<数据库名>

说明:

(1)只有处于关闭状态下的数据库,才能使用DROP语句删除,当数据库打开正在使用,或数据库正在恢复等状态时不可被删除。(2)执行删除数据库的SQL命令后,数据库及其数据表、视图等对象将全部被删除。

讨论思考(1)数据库的建立和修改SQL命令有哪些?(2)数据库的打开、切换和关闭命令及用法?(3)数据库删除命令及方式,具体有哪几种?4.1数据库的常用操作

删除“图书销售”数据库。DROPDATABASE

图书销售

(此后存储位置略)案例4-5

注意:删除数据库一定慎重.删除前请做好备份,以免误删除。4.2.1数据表建立的操作方法数据库中的数据表主要用于存储数据,通常可以根据需要建立几个相关的数据表(结构),已利于用输入、存储和处理相关数据。在建立表(结构)前需要先:表(结构)的列(属性)及名称、存放数据的类型、宽度策划(设计)、小数位数、主键和外键等。

数据表的建立(定义)操作方法有两种:

1.数据表建立的菜单操作方法

数据基本表的创立,也称为数据库基本表定义.用SSMS界面菜单创建表:下面结合具体应用实例,概述操作方法。4.2常用的数据表操作产品ID名称品牌型号价格…………18.65…产地,企业ID..图4-5利用SSMS创建表的界面4.2常用的数据表操作增删改:对于已建的表,可以输入、修改、删除其中数据。

在School数据库中,建立可以保存学生信息的表(结构)Student。在可视化界面SSMS下,右击表出现“快捷菜单”,在快捷菜单中选择“新建表”,如图4-5所示.案例4-6

点击“新建表”后,出现如图4-6所示的“设计表结构”界面,可依据实际业务数据需求考虑(设计),输入列名(属性名,即字段名)、拟存放数据的类型、宽度、小数位数等设计完成表(结构)。图4-6设计表结构的界面输入列名4.2数据表的常用操作

建表完成后右击“Id”项,可将其设置为主键,用于唯一确定指定记录且可快速查询,对以后数据操作很重要.如图4-7.图4-7设置主键的界面

注意:设置主键后,Id前面会将出现小钥匙图标。在“标识规范”中的“标识”选择“是”,可以设置主键自增长方法。4.2数据表的常用操作

2.数据表建立的命令语句方法

数据表建立(定义)操作,主要是构建数据表的结构(属性列),使用SQL语言建立数据表结构的语句格式:

CREATETABLE<基本表名>(<列名1><列数据类型>[列完整性约束],<列名2><列数据类型>[列完整性约束],

……[表级完整性约束])

说明:(1)“数据表名”是指新建的数据表名,注意在同一个数据库中不允许有两个表名同。(2)“列名”是指该列(属性)的名称。一个表中不能有两列同名。(3)“列数据类型”是指该列将存储数据的类型。如单价为数值型。4.2数据表的常用操作(4)“列完整性约束”是指对数据表的列(属性)设定的约束条件。

常用的列(级)完整性约束条件有5种:

PRIMARYKEY:主键约束用于唯一地标识表中的各行,主键约束列值不能为NULL,同时也不能与其他行的列值有重复,以免造成无法唯一标识行。实际上是非空约束与唯一性约束的合并。②UNIQUE约束:设置该列只存放唯一(不重复)的属性值。。③NOTNULL与NULL约束:分别确定该列值不为空或为空。④DEFAULT约束:默认约束指该列在未定义时的默认取值。⑤CHECK约束:检查约束可以通过约束条件表达式设置其列值应当满足的具体条件(要求)。如,只能输入正数等。(5)“表级完整性约束”:主要用于规定数据表的主键、外键和用户自定义完整性约束(具体要求及条件)。链接网站动画视频4.2数据表的常用操作CREATETABLE图书(图书编号CHAR(4)NOTNULLUNIQUE,图书名VARCHAR(50)NOTNULL,出版社VARCHAR(50)NULL,价格DECIMAL(6,2)NOTNULL,出版时间CHAR(20)NULL,);CREATETABLE售书网站(网站编号CHAR(6),名称VARCHAR(50)NOTNULL,所在城市CHAR(8)NOTNULL,成立时间DATETIME,PRIMARYKEY(网站编号));CREATETABLE售书(图书编号CHAR(4),售书网站编号CHAR(6),数量INT,PRIMARYKEY(图书编号,网站编号),FOREIGNKEY(图书编号)REFERENCES图书(图书编号),FOREIGNKEY(网站编号)REFERENCES售书网站(网站编号),);4.2数据表的常用操作在“图书销售”数据库中,用SQL语言建立(定义)三个表,三个数据表的关系模式如下所示:图书(图书编号,图书名,出版社,作者,价格,出版时间);售书网站(网站编号,名称,所在城市,成立时间);售书(图书编号,网站编号,数量)。案例4-74.2.2数据表的修改和删除1.数据表修改的操作在数据库建立数据表之后,可能出现业务及数据需要变更情况,应对数据表(结构)及时修改,操作方法有三种:增加新的列、删除原某列、修改原某列的数据类型。

修改表结构的语法格式为:

ALTERTABLE<基本表名>[ADD<新列名><列数据类型>[列完整性约束]][DROPCOLUMN<列名>[ALTERCOLUMN<列名><列数据类型>]4.2数据表的常用操作

说明:(1)ADD选项可在指定的数据表中增加新的列(属性),要求满足指定的“列数据类型”和“列完整性约束”的具体条件。(2)DROPCOLUMN选项用于删除指定原数据表的列。(3)ALTER选项用于修改原有列,应满足“列数据类型”等要求。4.2数据表的常用操作4.2数据表的常用操作在售书网站的数据表中对图书增加一评价列。ALTERTABLE售书网站ADD评价VARCHAR(50);【案例4-在图书数据表中删除出版时间列。ALTERTABLE图书DROPCOLUMN出版时间;

在图书数据表中,修改数据表的“出版社地址”列的数据类型为VARCHAR(22)。ALTERTALBE图书ALTERCOLUMN

所在出版社地址VARCHAR(22)

注意:新增加的列(属性)不可定义为“NOTNULL”。不管原来数据表中是否已有数据,新增加的列一定为空值(NULL)。

注意:一定要慎重修改,修改原有列(含数据类型)之后,可能改变原有约束条件或破坏原有数据类型等。案例4-8案例4-9案例4-10

2.数据表删除的操作方法在企事业的业务拓展变化或数据表过时淘汰,不再保留某个数据表时,可以根据实际需要备份后将其删除。

常用的数据表删除的语法格式为:DROPTABLE<数据表名>

说明:

删除数据表的操作应慎重,以防误删最好留有备份。

删除指定数据表的同时,表中的所有数据连及建立的索引都将一起被删除,而系统将保留该表上的视图定义,但不可使用。4.2数据表的常用操作

说明:上述各种操作都以SQL的命令语句方式为重点。若采用SSMS界面菜单方式打开、修改或删除表的操作与前述基本类似。(1)数据表的定义(建立)操作是哪两种方法?(2)数据表结构修改四种方法的语句分别是什么?(3)举例说明怎样具体删除一个指定的数据表?

讨论思考4.2数据表的常用操作

删除图书数据库中计算机表,并同时删除相关的视图和索引等相关对象。DROPTABLE计算机

案例4-114.3数据查询常用操作

数据查询是计算机管理数据库的重要应用之一,是数据库应用的核心功能。数据查询或查询数据是指从指定数据表中通过筛选得到满足条件数据(记录)的过程。在此介绍语句查询方法。4.3.1数据查询语句及用法

数据查询常用的SQL语句的语法格式为:

SELECT[ALL|DISTINCT]表列名或列表达式[,表列名或列表达式]…

FROM<表名或视图名>[,表名或视图名]…

[WHERE<条件表达式>][GROUPBY列名[HAVING组条件表达式]][ORDERBY列名[ASC|DESC],...]退出

说明:在数据查询过程中,需要准确运用有关操作语句。

1)ALL选项(为默认选项)可以显示满足查询条件的全部记录,DISTINCT选项使查询的结果只含不同记录,取消后面其他相同的记录。2)用“*”选项将显示数据表中全部字段的满足查询条件的所有查询记录

3)从FROM子句指定的表或视图中,筛选出满足“条件表达式”的记录,再按SELECT子句中的表的列名或列表达式,选取出记录中的列(属性)值形成最后的结果。4)WHERE子句中用“条件表达式”确定查询的条件,常用的查询条件和谓词如表4-1所示表4-1WHERE子句常用的查询条件查询条件谓词比较(比较运算符)=,>,<,>=,<=,!=,<>,!>,!<;NOT+比较运算符确定范围BETWEENaANDb,NOTBETWEENaANDb确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑谓词)AND,OR表4-12WHERE子句常用的查询条件4.3数据查询常用操作

WHERE子句中的条件表达式作用于数据表中的记录,不同于HAVING子句中的条件表达式。HAVING子句中的条件表达式作用于分组后的查询结果。

5)GROUPBY子句,将查询结果按指定选取列(名)值分组,该属性列值相同的记录为一个组,各组产生结果表中的一条记录。6)HAVING子句出现在GROUPBY子句之后,其作用是将分组后的查询结果中不满足“组条件表达式”的记录去掉。常在每组中用聚合函数完成计算个数、求和或求平均等统计任务。7)ORDERBY子句,使查询结果对指定的列值按升降次序排列,其中,ASC(或默认无选项)选项为升序,DESC为降序。*说明:数据查询结果等价于关系代数中按照条件选择运算后投影4.3数据查询常用操作查询出版“数据库原理及应用”图书的出版社。SELECTDISTINCT出版社FROM图书WHERE书名=’数据库原理及应用’案例4-124.3.2条件查询和模糊查询在使用SELECT语句进行查询操作时,应注意一些条件限定。1.输出查询结果的数据输出查询(筛选)结果的表结构和数据的方法:①当指定表的列名或列表达式前加DISTINCT选项时,在输出满足“条件”的查询结果表中只出现(相同)重复记录的首记录。②“列表达式”可指定单列求聚合值的表达式,或用加减乘除及列名、常数等算术表达式。在2.5.4中介绍过聚合函数,常用的如表4-2所示,利用GROUPBY子句可对查询结果数据分组。聚合函数功能说明COUNT(*)统计记录的个数,如人数、客户数等COUNT(列名)对一列中的值计算个数,如货物件数等SUM(列名)求某一列值的总和(以下列必须是数值型)AVG(列名)求某一列值的平均值(同上)MAX(列名)求某一列值的最大值MIN(列名)求某一列值的最小值表4-13聚合函数4.3数据查询常用操作表4-2常用的聚合函数③“*”号用于输出FROM子句中表或视图的所有列的查询数据。④当在结果表中输出的列名与表或视图的列名不一致时,可用“旧名[AS]新名”的形式改名。使用时AS也可省略。4.3数据查询操作

在图书销售数据库中,查询各售书网站销售图书的数量。在查询结果表中,图书数量显示的列名为“数量”。USE图书销售(后续案例此语句暂略)SELECT售书网站编号,COUNT(*)AS数量FROM售书GROUPBY售书网站编号案例4-14

查询所有售书网站的编号、名称和成立年限。SELECT售书网站编号,名称,2023-成立时间AS成立年限FROM售书网站注意:如果在FROM子句中多次引用同一个数据表时,可用AS增加别名进行区分,具体使用格式为:AS别名。案例4-13

2.条件查询方法

条件查询是指在SELECT语句中使用WHERE<条件表达式>子句的查询方式。常见的条件查询方法有:比较条件查询、谓词条件查询和其他条件查询方法。(1)比较条件查询比较条件查询方法主要在WHERE<条件表达式>子句中的“条件表达式”采用比较运算符:=、<、>、>=、<=、!=、<>、!>、!<等。例如:where专业=‘网络工程’;where年龄>20and年龄<=25。4.3数据查询操作

查询图书的书价小于86元的《数据库原理及应用》图书的基本信息。SELECT*FROM图书WHERE书名=‘数据库原理及应用’and价格<86;案例4-154.3数据查询操作

查询价格在68元到86元之间的“网络安全技术及应用”图书的有关基本信息。SELECT*FROM图书WHERE价格BETWEEN68AND86AND书名=‘网络安全技术及应用’;案例4-16(2)谓词条件查询常用的谓词条件查询方法,主要有两种:①指定范围查询。“条件表达式”使用谓词BETWEEN...AND...,在指定范围内筛选出使“表达式值”为真的数据(记录)。常用语法格式:<表达式>[not]betweenAandB。其中,A是范围的下限(即低值),B是范围的上限(即高值)。例如:where年龄between20and25;where任职时间notbetween10and15;4.3数据查询操作

查询售书网站所在地为上海或广东的信息。SELECT*FROM售书网站WHERE所在城市IN(’上海’,‘广东’)案例4-17②属于(包含)查询。指“条件表达式”中用特殊运算符IN表示判断属性值是否属于(包含)某个集合(为其中的元素)。也可用NOTIN表示判断属性值不属于某个集合(不是其中的元素)。如:where专业in(‘财务会计’,’电子商务’,‘金融工程’)注意:谓词BETWEEN...AND...常用于数值型数据和日期型数据的范围表示。【案例4-18

对图书数据表,查询没有填写作者信息的具体数据(记录)便于填写。SELECT*FROM图书

WHERE作者ISNULL4.3数据查询操作③空值数据查询。指定条件为ISNULL和ISNOTNULL查询。空值表示没有(暂时没定或没填写)其值,以符号NULL表示,既不是零,也不是长度为零的字符串。如,在图书表中某些图书的出版社不详,暂时没填写就是空值NULL常用空值数据查询语句格式:<表达式>IS[NOT]NULL

注意:上述中的NULL前面“IS”不可用等号“=”进行代替,如出版社=NULL会出现错误,将无法得到结果。案例4-18【案例4-19】

查询已经填写出版社信息的图书信息。

SELECT*

FROM图书

WHERE出版社ISNOTNULL案例4-19【案例4-20】查询售书数据表,统计图书销售总量大于等于200的售书网站编号及其销售图书的总数量。SELECT售书网站编号,SUM(数量)AS销售总量FROM售书GROUPBY售书网站编号HAVINGSUM(数量)>=200;4.3数据查询操作案例4-20

(3)统计查询

在对数据库进行查询时,人们经常会碰到需要对数据表中的数据进行分组统计的任务。解决分组统计问题需要在查询语句中加入GROUPBY子句,并辅以聚合函数和HAVING子句。

注意:在带GROUPBY子句的SQL查询中,SELECT语句中列表达式必须包含出现在聚合函数、以及GROUPBY子句中的属性列,即SELECT语句中的目标列表达式必须包含分组标签。3.模糊查询方法模糊查询是指对满足局部匹配条件的查询方式。实际是一种特殊的条件查询,主要是利用字符串匹配比较筛选数据结果。

在“条件表达式”中,字符串匹配采用LIKE操作符语法格式:

<列名>[NOT]LIKE<字符串常数>[ESCAPE<转义字符>]

说明:格式中的<字符串常数>主要使用以下两个通配符:①%(百分号)。表示任意长度(含0)的字符串。如a%b表示以a开头且以b结尾的任意长度的字符串。如ab、akb、akdcgb等都满足该匹配字符串。②_(下划线)。表示任意一个单字符。如a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串。

注意:ESCAPE’\’短语中的“\”表示换码字符,此时匹配串中紧跟在“\”后面的字符“_”不再具有通配符的含义,转义为原“_”字符。4.3数据查询操作4.3数据查询操作

查询所有销售“大学英语”图书的售书网站的售书网站编号和图书名的信息。SELECT售书网站编号,书名FROM售书,图书WHERE售书.图书编号=图书.图书编号AND图书.书名LIKE‘%大学英语%’案例4-214.3.3排序查询、连接查询和嵌套查询在具体应用中,SELECT语句可以形成灵活查询语句。下面通过案例说明SELECT语句的功能.下面结合案例说明排序查询、多表连接查询和嵌套查询的方法。1.数据排序查询数据排序查询主要是指在查询语句中,利用ORDERBY排序子句对查询结果的数据(记录)进行排序后输出。4.3数据查询操作

查询销售了图书编号为“T006”图书的售书网站的编号和销售数量,并按数量降序排列。SELECT售书网站编号,数量FROM售书WHERE图书编号='T006'ORDERBY数量DESC案例4-224.3数据查询操作

2.连接查询和其他用法

连接查询是指同时涉及两个以上的表的查询。连接查询是数据库高级查询中常见的操作。此查询有两类:自身连接查询和多表连接查询。语句格式:①SELECT子句中要指明各表查询的结果表中出现的列名。②FROM子句要指明进行连接的各表名且多表之间用“,”隔开.

③WHERE子句要指定连接的“表名.列名”及连接条件:多表连接查询中常用子句的语法格式为:

[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名3>.]<列名3>

说明:使用多表连接列(字段)时需要注意:①连接字段指连接谓词中的“列名”(即属性名)。②连接条件中只有各连接列(值)的数据类型相同才可连接。③“比较运算符”只对相同数据类型的列值才可比较。④注意BETWEEN…AND…、AND等运算符及谓词等用法。4.3数据查询操作

注意:在此案例中,由于多表连接中“图书”和“售书”两个表内均有图书编号属性,为了明确表示属性的来源,在属性前面加上属性所属的基本表名,如图书.图书编号。查询上海售书网站卖出图书的数量。SELECT售书.数量FROM售书网站,售书WHERE售书网站.售书网站编号=售书.售书网站编号AND售书网站.所在城市=‘上海’在售书网站上,查询中国图书网站所销售过的图书的编号和图书名。SELECT图书.书名,售书.数量FROM图书,售书网站,售书WHERE图书.图书编号=售书.图书编号AND售书网站.售书网站编号=售书.售书网站编号AND售书网站.名称=’中国图书’案例4-23案例4-244.3数据查询操作图书数据表中,查询机械工业出版社出版的图书“数据库系统”的作者的其他图书名称和出版社信息。SELECTTWO.书名,TWO.出版社,ONE.作者FROM图书ONE,图书TWOWHEREONE.作者=TWO.作者ANDONE.书名=‘数据库系统’ANDONE.出版社=‘机械工业出版社’案例4-25

注意:

进行表的自身连接查询时,需要将where子句中的两个表起别名进行区分。

查询曾经销售过编号为T001或T002图书的售书网站的编号。SELECT售书网站编号FROM售书WHERE图书编号=’T001’UNIONSELECT售书网站编号FROM售书WHERE图书编号=’T002’案例4-26

注意:查询结果的结构完全一致时的两个查询,可以进行并(UNION)、交(INTERSECT)、差(EXCPT)操作.实际上,在两个查询的WHERE子句,也可合并为IN(‘E001’,’E002’)。4.3数据查询操作3.嵌套查询及应用

嵌套查询是指在一个SELECT查询语句的WHERE子句中,嵌入另一SELECT语句的查询方式.其中外层查询称为父查询,内层查询称为子查询.运行时从里到外,先运行最里面的子查询4.3数据查询操作

查询销售《网络安全技术及应用》的售书网站的编号和相应的销售数量。

SELECT售书网站编号,数量

FROM售书WHERE图书编号=(SELETE图书编号FROM图书WHERE书名=‘网络安全技术及应用’)

说明:对此应用案例,也可用多表连接查询语句:SELECT售书网站.售书网站编号,售书.数量FROM图书,售书WHERE图书.图书编号=售书.图书编号AND图书.书名=‘网络安全技术及应用’案例4-274.3数据查询操作

说明:在上述两个应用案例中,通常使用SOME运算符表示“某一(个)”,使用ALL运算符表示“所有”或“每个”。查询至少比某一个售书网站销售G009图书的销售数量多的售书网站的编号。SELECT售书网站编号FROM售书WHERE数量>SOME(SELECT数量FROM售书WHERE图书编号=’G009’)查询销售数量多于所有G008图书的售书网站的编号。SELECT售书网站编号FROM售书WHERE数量>ALL(SELECT数量FROM售书WHERE图书编号=’G008’)案例4-29案例4-28

注意:系统对子查询中含有EXISTS谓词作为存在量词运行后,只得到“真”或“假”。利用EXISTS后,若内层查询结果非空,则外层WHERE子句返回真,否则返回假;用存在量词NOTEXISTS后,若内层查询结果为空,则外层的WHERE子句返回真,否则返回假。4.3数据查询操作

查询销售过“航天”的售书网站的编号。SELECT售书网站编号FROM售书WHEREEXISTS(SELECT*FROM图书WHERE图书.图书编号=售书.图书编号AND书名=‘航天’)

查询没有销售“航天”的售书网站的编号。SELECT售书网站编号FROM售书WHERENOTEXISTS(SELECT*

FROM图书

WHERE图书.图书编号=售书.图书编号AND书名=‘航天’)(1)SELECT语句的语法格式和含义是什么?(2)SQL提供了哪些聚合函数?怎样进行应用?(3)举出一个多表查询的实例?

讨论思考案例4-30案例4-314.4数据更新常用方法

数据更新的常用操作主要包括插入数据、修改数据和删除数据。具体有两种操作方式:利用SSMS界面菜单和SQL语句。鉴于教学重点及篇幅,主要概述利用SQL语句方式的常用操作方法。4.4.1数据插入的操作

当数据表(结构)建立之后,可以根据实际业务需要向指定的数据表中插入数据。利用SQL语句插入数据的操作有两种形式:插入单个数据(记录)和插入查询结果(成批数据)。

1.单个数据的操作方法对指定表,插入单个记录的语法格式为:

INSERTINTO<基本表名>[(<列名1>,<列名2>,…,<列名n>)]VALUES(<列值1>,<列值2>,…,<列值n>)[,(<列值1>,<列值2>,…,<列值n>),…];4.4数据更新常用方法

说明:在指定表中,插入几条新记录应注意:①“数据表名”为指定插入的表名.若某些列(属性)在INTO子句中没出现,则新记录在未出现的对应列上取空值.若没指明(缺省)任何列名,则插入新记录须在指定表各一一对应列上都有值。②在VALUES后面列值,要求新插入列值及前后顺序同原数据表对应的列名一一对应,否则插入的值不一致(列相同)或无法操作。③在列名序列中应包括所有不可取空值的列,以免操作受限。向图书数据表中插入一个记录(’J006’,’网络安全’,’高等教育’,’2017/05/18’)INSERTINTO图书(图书编号,书名,出版社,出版时间)VALUES(’J006’,’网络安全’,’高等教育’,’2017/05/18’);案例4-32

说明:在数据表中插入单个新数据后,可以通过查看当前数据表中新插入的数据(记录)进行查看检验。4.4数据更新常用方法

向售书网站数据表中插入三个记录(’N05’,’1号店’,’上海’,’2008/07/11’),(’N06’,’亚马逊’,’西雅图’,’1995/07/28’),(’N07’,’淘宝’,’杭州’,’2003/05/10/’)INSERTINTO售书网站VALUES(’N05’,’1号店',’上海','

2008/07/11’);INSERTINTO售书网站VALUES(’N06’,’亚马逊’,’西雅图’,’

1995/07/28’);INSERTINTO售书网站VALUES(’N07’,’淘宝’,’杭州’,’

2003/05/10/’);案例4-33*

拓展阅读:另外,可以通过如图4-27所示的“SQLServer导入和导出向导”进行“导入/导出”数据库中的数据。图4-27数据库导入导出向导4.4数据更新常用方法2.成批插入查询结果的方法

通过利用SELECT语句得到的查询结果(筛选数据),可以成批地插入到指定表中,常用的操作语法格式为:

INSERETINTO<表名>[(<列名1>,<列名2>,…,<列名n>)]<子查询>;

说明:将查询结果(筛选数据)成批插入表应注意:(1)格式中的<表名>,为指定当前准备插入的“数据表名”。(2)其后的<列名>分别为拟插入的数据表的“列名”及顺序。若指定“列名”序列,则要求<子查询>结果与这些列名序列(列名及顺序)一一对应。若省略“列名”序列,则子查询所得到的数据列应同指定数据表的数据列完全对应且一致,以免无法操作(列数不同)或混乱。(3)“子查询”为指定的SELECT语句确定的查询(筛选)。4.4数据更新常用方法

若已建有“销售_统计(售书网站编号,销售总量)”的销售统计表,其中“销售总量”表示每个售书网站销售图书的总数量,向销售_统计表中插入各售书网站的销售总量。INSERTINTO销售_统计(售书网站编号,销售总量)SELECT售书网站编号,SUM(数量)FROM售书GROUPBY售书网站编号4.4数据更新常用方法案例4-344.4.2数据修改的方法

当企事业机构的业务数据发生变更时,需要及时对有关数据(记录)进行修改,常用命令语句操作的语法格式为:

UPDATE<基本表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件表达式>]

说明:修改(替换)指定数据应注意:①“数据表名”为指定拟修改数据(记录)所在的数据表名。②SET子句主要用于指定“替换”修改具体值,即用“表达式”的结果值替换对应的列(指定“列名”)的值。③WHERE语句用于修改指定表中满足条件(“条件表达式”)的记录。如果省略WHERE子句,则表示要修改表中的所有记录。④常用的三种修改方法:修改某个或多个(满足条件)记录的值、批量修改带子查询(筛选)的满足条件的记录的值。

注意:在利用UPDATE进行批量更新(替换)时,需要特别注意后面的WHERE语句(筛选条件)的具体应用。4.4数据更新常用方法

4-34】将图书编号为T002的图书价格提高2%。UPDATE图书SET价格=价格*1.02WHERE商品编号=’T002’;

案例4-35】将数据表Student中,将学生姓名(SName)为李四的记录的家庭地址Address的值改为BBBBB,结果如图4-8图所示。UPDATEStudentSETAddress='BBBBB'WHERESName='李四';图

修改数据的界面4.4数据更新常用方法案例4-35案例4-364.4.3数据删除的操作

在业务数据处理中,当数据表中的数据不再需要时,可以从指定的数据表中删除。常用删除数据操作的语法格式为:

DELETEFROM<基本表名>[WHERE<条件表达式>]

说明:删除数据的操作一定要慎重。①<数据表名>为指定拟删除的数据(记录)所在的数据表名。②WHERE子句用于指定删除满足“条件”的数据(记录)。如果省略WHERE子句,则删除表中的全部记录(只留表结构)。③每次只能对一个表中的数据进行删除,而不能一次从多个表中删除记录。若删除多表记录,需要多次使用DELETE语句操作。

注意:在删除记录时,应当注意WHERE条件,以免误删。4.4数据更新常用方法

删除数据库原数据表Student中的第5条记录,即Id为5的记录,如图4-8所示。

DELETEFROMStudentWHEREId=5图4-8

删除数据的界面(1)怎样将查询结果插入到指定的数据表中?(2)SQL中数据修改包括哪些操作语句?(3)举例说明如何使用DELETE语句删除一个记录?

讨论思考4.4数据更新常用方法案例4-384.5实验4数据库、表及

数据操作4.5.1实验目的(1)熟悉常用数据库的创建(定义)、修改和删除操作(2)熟练掌握数据表的创建(定义)、修改和删除方法(3)熟悉业务数据查询的各种方式方法及实际应用(4)熟练掌握数据的输入、修改、插入、删除等操作4.5.2实验内容主要的实验内容包括:(1)数据库的创建(定义)、修改和删除操作(2)数据表的创建(定义)、修改和删除操作(3)输入、编辑、插入和修改数据库记录操作(4)多种数据的各种查询的具体方式方法注:由于实验内容多,可分多次课内外结合完成。4.5实验4数据库、表及

数据操作4.5.3实验步骤1.创建、修改和删除数据库1)建立数据库。建立一个“教学”数据库teachingDB,该数据库的主数据文件逻辑名称为teachingDB,物理文件名为teachingDB.mdf,初始大小为10MB,最大容量无限制,增长速度为10%;数据库的日志文件逻辑名称为teachingDB_log,物理文件名为teachingDB_log.ldf,初始大小为1MB,最大容量为5MB,增长速度为1MB。建数据库两种方法:通过SSMS界面菜单操作/用T-SQL语句.下面主要介绍第二种操作方法。单击SSMS工具栏的“新建查询”,打开查询窗口,输入下列SQL语句,并在工具栏上单击“执行”按钮,即可建立指定的数据库。CREATEDATABASEteachingDB

--注意数据库所在盘及目录ONPRIMARY

--建立主数据文件(NAME='teachingDB',

--逻辑文件名FILENAME='E:\teachingDB.mdf',

--物理文件路径和名字SIZE=10240KB,

--初始大小MAXSIZE=UNLIMITED,

--最大尺寸为无限大FILEGROWTH=10%)

--增长速度LOGON(NAME='teachingDB_log',

--建立日志文件FILENAME='E:\teachingDB_log.ldf',--物理文件路径和名字SIZE=1024KB,MAXSIZE=5120KB,FILEGROWTH=1024KB}4.5实验4数据库、表及

数据操作2)用SSMS查看或修改数据库设置启动SSMS,在“对象资源管理器”中,选中所要修改的“数据库”右击,从弹出的快捷菜单中选择“属性”,出现“数据库属性设置”对话框。可以看到修改或查看数据库属性时,“属性”对话框中比建立数据库时多了选项,如文件、更改数据跟踪、权限等。可以分别在常规、文件、文件组、选项和权限对话框里,根据要求查看或修改数据库的相应设置。3)添加数据库。将两个数据文件添加到teachingDB数据库中。4.5实验4数据库、表及

数据操作ALTERDATABASEteachingDB

--注意建立数据库所在盘及目录ADDFILE--添加两个次数据文件(NAME=teachingDB1,FILENAME

=

'E:\

teachingDB1.ndf

',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB),(NAME=teachingDB2,FILENAME

=

'E:\

teachingDB2.ndf

',SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=1MB)GO4.5实验4数据库、表及

数据操作4)删除数据库操作●用T-SQL语句删除数据库为:DROPDATABASEteachingDB(注意所在的盘及目录)●在“对象资源管理器”窗口,选定“数据库”单击鼠标右键,弹出快捷菜单,选择“删除”命令。出现“删除对象”对话框,确认是否为目标数据库,并通过选择复选框决定是否要删除备份以及关闭已存在的数据库连接,单击“确定”按钮,完成数据库删除操作。4.5实验4数据库、表及

数据操作4.5实验4数据库、表及

数据操作2.创建和修改数据表在“教学”teaching数据库中,建立:系部表(department),课程表(course),学生表(student)和教师表(teacher),教师开课表(teacher_course),学生选课表(student_c)。教务管理系统的数据模型:系部表(系部编号,系部名称,系部领导,系部电话,系部地址),主键:系部编号课程表(课程编号,系部编号,课程名称),主键:课程编号;外键:系部编号。学生表(学生编号,系部编号,姓名,性别,出生日期,地址,总分,民族,年级,学院,专业),主键:学生编号,外键:系部编号。教师表(教师编号,系部编号,教师姓名,职称),主键:教师编号,外键:系部编号.教师开课表(教师编号,课程编号,学期),主键:教师编号,外键是:课程编号。学生选课表(学生编号,课程编号,教师编号,学期,成绩),主键:学生编号,外键:课程编号和教师编号。1)建立数据表操作(1)使用SSMS图形界面方法;1)使用SSMS图形界面方法:在“对象资源管理器”窗口中,右击指定数据库teachingDB的“表”文件夹,从弹出的快捷菜单中选择“新建表”选项,依次输入字段名称和该字段的数据类型,以及允许空或非空的设置,即可建立数据库表。2)使用命令语句方法:选择teachingDB数据库,在“新建查询”窗口中输入下列SQL语句(列名即“属性名”采用英文),每输入一条SQL命令,单击一下“执行”即可:4.5实验4数据库、表及

数据操作createtabledepartment(dept_idchar(6)notnull,dept_namechar(20)null,dept_headchar(6)null,dept_phonechar(12)null,dept_addrchar(40)null,constraintPK_DEPARTMENTprimarykeynonclustered(dept_id))gocreatetablecourse(course_idchar(6)notnull,dept_idchar(6)notnull,course_namechar(20)null,constraintPK_COURSEprimarykeynonclustered(course_id))Go4.5实验4数据库、表及

数据操作createtable

student(stu_idchar(6)notnull,dept_idchar(6)notnull,name

char(8)null,

sex

char(2)null,birthdaydatetimenull,addresschar(40)null,totalscore

intnull,nationalitychar(8)null,gradechar(2)null,schoolchar(20)null,class

char(16)null,major

char(30)null,constraintPK_STUDENTprimarykeynonclustered(stu_id))go4.5实验4数据库、表及

数据操作createtableteacher(teacher_idchar(6)notnull,dept_idchar(6)notnull,teacher_namechar(8)null,rankchar(6)null,constraintPK_TEACHERprimarykeynonclustered(teacher_id))……

--此处省略,同上类似;4.5实验4数据库、表及

数据操作(2)修改表操作将表student_c

中term列删除,并将score的数据类型改为float。实验操作步骤;在“新建查询”窗口中输入SQL语句:USEteachingDBGOALTERTABLEstudent_cDROPCOLUMNtermGOALTERTABLEstudent_cALTERCOLUMNscorefloatGO/*修改表结构,添加一个外键*/altertablecourseaddconstraintFK_COURSE_DEPARTMENTforeignkey(dept_id)referencesdepartment(dept_id)go4.5实验4数据库、表及

数据操作altertablecourseaddconstraintFK_COURSE_DEPARTMEN_DEPARTMEforeignkey(dept_id)referencesdepartment(dept_id)goaltertablestudentaddconstraintFK_STUDENT_DEPARTMEN_DEPARTMEforeignkey(dept_id)referencesdepartment(dept_id)goaltertablestudent_caddconstraintFK_STUDENT__STUDENT_T_COURSEforeignkey(course_id)referencescourse(course_id)……

--此处省略,同上类似;4.5实验4数据库、表及

数据操作(3)删除表操作1)使用SSMS删除表。在“对象资源管理器”窗口中,展开“数据库”结点,再展开所选择的具体“表”,右键点击要删除的表,选择“删除”或按下DELETE键。2)使用T-SQL语句删除表。在数据库teachingDB中建一个表Test1,然后删除。USEteachingDBGODROPTABLETest1说明:在删除表的时可能会出现“删除对象”的对话框,如删除department表。这是因为所删除的表中拥有被其他表设置了外键约束的字段,如果删除了该表,必然对其他表的外键约束造成影响,数据库系统禁止删除被设置了外键的表。4.5实验4数据库、表及

数据操作4.5实验4数据库、表及

数据操作3.插入或修改数据库记录(1)使用SSMS和T-SQL添加记录。在系部表(department),课程表(course),学生表(student)和教师表(teacher),教师开课表(teacher_c),学生选课表(student_c)添加适当的记录。添加记录中应注意先后次序。先给无外键约束的表添加记录,然后再给有外键的表添加记录,否则无法添加。①使用SSMS添加记录在“对象资源管理器”窗口中,展开“数据库”结点,再展开所选择的具体数据库结点,展开“表”结点,右键要插入纪录的表,选择“编辑前200行”命令,即可输入纪录值和修改记录。②使用T-SQL添加记录如给教务管理系统数据库的表添加指定的记录:USEteachingDBGO/*添加课程表记录*/INSERTcourse(course_id,dept_id,course_name)VALUES('100001','1001','网络安全')INSERTcourse(course_id,dept_id,course_name)VALUES(N'100002',N'1001',N'数据结构')/*添加系部表记录*/INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1001','信息学院','张老师','1391001011','图书馆7楼')INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1002','机械学院','李老师','1891020202','文理楼2楼')INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1003','电气学院','王老师','1893774737','东华路16号')4.5实验4数据库、表及

数据操作/*添加学生表记录*/INSERTstudent(stu_id,dept_id,name,sex,birthday,address,totalscore,nationality,grade,school,class,major)VALUES('1201',N'1001','周敏','女',CAST(0x0000806800000000ASDateTime),'上海',NULL,'汉族','1','信息','1001','计算机')INSERTstudent(stu_id,dept_id,name,sex,birthday,address,totalscore,nationality,grade,school,class,major)VALUES('1202','1001','赵凯','男',CAST(0x000081F400000000ASDateTime),'北京',NULL,'汉族','1','信息','1001','计算机')/*添加老师表记录*/

(同上,从略)/*添加老师开课表记录*/(同上,从略)/*添加学生选课表记录*/(同上,从略)GO4.5实验4数据库、表及

数据操作说明:INSERTcourse(course_id,dept_id,course_name)VALUES(N'100002',N'1001',N'数据结构')中“N”表示采用UNICODE编码方式。有N,插入数据库时用unicode编码格式(无论是汉字,还是字母,统一用两个字节表示)存放数据,这一规则只对字段类型是nvarchar/ntext/nchar的字段有效。若无N,则按非unicode编码来存储,即汉字是双字节存储,字母单字节存储。N'string'表示string在数据库中是以Unicode编码格式存放。(2)数据库及表的常用操作

在“新建查询”窗口中输入下列SQL语句,并另存为test.sql文件,单击“执

温馨提示

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

评论

0/150

提交评论