数据库系统与应用技术何广赢课后答案_第1页
数据库系统与应用技术何广赢课后答案_第2页
数据库系统与应用技术何广赢课后答案_第3页
数据库系统与应用技术何广赢课后答案_第4页
数据库系统与应用技术何广赢课后答案_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1.9本章习题一、单选题1.第一代电子计算机问世的时间是()。A.1937年 B.1946年C.1958年 D.1995年答案:B.1946年2.数据库中,数据的物理独立性是指()。A.数据库与数据库管理系统的相互独立B.用户程序与DBMS的相互独立C.用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的D.应用程序与数据库中数据的逻辑结构相互独立答案:C.用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的3.数据库系统通常采用三级模式结构:外模式、模式和内模式,这三级模式分别对应数据库的()。A.基本表、存储文件和视图B.视图、基本表和存储文件C.基本表、视图和存储文件D.视图、存储文件和基本表答案:B.视图、基本表和存储文件4.在数据库系统中,一般由DBA使用DBMS提供的授权功能为不同用户授权,目的是保证数据库的()。A.正确性 B.安全性C.一致性 D.完整性答案:B.安全性5.在数据库系统中,视图是一个()。A.真实存在的表,并保存了待查询的数据 B.真实存在的表,只有部分数据来源于基本表 C.虚拟表,查询时只能从一个基本表中导出 D.虚拟表,查询时可以从一个或者多个基本表或视图中导出答案:D.虚拟表,查询时可以从一个或者多个基本表或视图中导出6.采用三级结构/两级映像的数据库体系结构,如果对数据库的一张表创建聚簇索引,改变的是数据库的()。A.用户模式 B.外模式C.模式 D.内模式答案:D.内模式7.在数据库系统中,()用于对数据库中全部数据的逻辑结构和特征进行描述。A.外模式 B.模式C.内模式 D.存储模式答案:B.模式8.在数据库系统中,外模式、模式和内模式分别描述()层次上的数据特性。A.概念视图、用户视图和内部视图 B.用户视图、内部视图和概念视图 C.概念视图、内部视图和用户视图 D.用户视图、概念视图和内部视图答案:D.用户视图、概念视图和内部视图9.E-R模型向关系模型转换时,三个实体之间多对多的联系m:n:p应当转换为一个独立的关系模式,且该关系模式的主键由()组成。A.多对多联系的属性B.三个实体的主键C.随意一个实体的主键D.随意两个实体的主键答案:B.三个实体的主键10.在关系数据库设计中用()来表示实体及实体之间的联系。A.树结构 B.封装结构C.二维表结构 D.图结构答案:C.二维表结构11.关系代数中的连接操作是由()操作组合而成的。A.选择和投影 B.选择和笛卡儿积C.投影、选择、笛卡儿积 D.投影和笛卡儿积答案:B.选择和笛卡儿积12.数据库管理系统的简称是()。A.DBMS B.DBC.DBS D.DBA答案:A.DBMS13.下列哪个不是关系数据库的基本特征()。A.数据以表格形式存储 B.数据之间存在关联关系C.支持集合操作 D.支持面向对象编程答案:D.支持面向对象编程14.在关系数据库中实现表与表之间的联系是通过()实现的。A.实体完整性规则 B.参照完整性规则 C.用户自定义的完整性规则 D.值域答案:B.参照完整性规则15.下列哪个选项不是数据库管理系统(DBMS)的功能()。A.数据定义 B.数据操作C.数据控制 D.数据转换 答案:B.数据操作16.关系型数据库是()的集合。A.表 B.记录C.码 D.属性答案:A.表17.表是()的集合。A.约束 B.记录 C.码 D.索引答案:B.记录18.属性指的是表中的一个()。A.记录 B.列 C.元组 D.码答案:B.列19.对于两个关系E和F,()的运算结果的任一元组,同时属于E和F。A.E×FB.E∪FC.E∩FD.E-F答案:C.E∩F20.在一个关系表中,表的行代表()。A.关系 B.外码C.元组 D.属性答案:C.元组21.关系的完整性约束不包含()。A.实体完整性B.参照完整性C.属性完整性D.用户定义完整性答案:D.用户定义完整性22.在一个关系型数据库中,参照完整性约束可以通过()来实现。A.主码B.候选码C.外码D.属性答案:C.外码23.关系型数据库中常用的查询语言不包括()。A.域关系演算B.元组关系演算C.导航式语言D.关系代数答案:C.导航式语言24.E-R图向关系模式转换时,实体标识符转换为关系的()。A.码B.元组C.记录D.约束答案:A.码25.一个取值域是原子的,是指该域的元素是()单元。A.不同的B.不可分的C.常量D.不可见的答案:B.不可分的二、填空题1.数据库的三级模式一般是指、、,两级映像是指、。答案:外模式、模式、内模式,模式/内模式的映像、外模式/模式的映像2.数据库系统设计员可通过外模式、概念模式和来描述视图层、逻辑层、物理层上的数据特性。答案:内模式3.数据库的视图、基本表和存储文件的结构分别对应、概念模式和内模式。答案:外模式4.数据的物理独立性和数据的逻辑独立性可以通过修改和外模式/概念模式的映像来保证的。答案:概念模式/内模式5.E-R图由实体、属性和三个要素构成。答案:联系6.数据模型的三要素是、、。答案:数据结构、数据操作、数据完成性约束7.E-R图中,实体之间的联系一般有一对一、一对多和。答案:多对多8.关系的完整性共分为3类,分别是实体完整性、参照完整性和。答案:用户自定义完整性9.关系运算的运算对象是。答案:关系三、简答题1.请简述数据库的三级模式及两级映像?答案:三级模式是外模式、模式、内模式,两级映像是模式/内模式的映像、外模式/模式的映像关系的完整性约束有哪些?答案:关系的完整性约束有:实体完整性,参考完整性、用户自定义完整性数据模型的三要素有哪些?答案:数据模型的三要素有:数据结构,数据操作,数据完整性约束E-R图中实体之间的联系有哪些?答案:有一对一,一对多和多对多

2.7本章习题一、单选题1.数据库管理系统中用于定义和描述数据库逻辑结构的语言称为()。A.数据定义语言 B.数据查询语言C.数据操纵语言 D.数据结构语言答案:A.数据定义语言2.下列选项中,不是SQL组成部分的是()。A.DCL B.DDLC.DML D.SSL答案:D.SSL3.SQL集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。A.数据查询 B.数据操纵C.数据定义 D.数据控制答案:B.数据操纵4.SQL中INT类型占用几个字节()。A.1 B.2C.4 D.8答案:C.45.VARCHAR的最大长度是()。A.32 B.128C.255 D.65535答案:D.655356.采用三级结构/两级映像的数据库体系结构,如果对数据库的一张表创建索引,改变的是数据库的(D)。A.用户模式 B.外模式C.模式 D.内模式答案:D.内模式7.SQL语言支持关系数据库的三级模式结构,其中视图对应()。A.外模式 B.模式C.内模式 D.存储模式答案:A.外模式8.SQL语言支持关系数据库的三级模式结构,其中基本表对应()。A.外模式 B.模式C.内模式 D.存储模式答案:B.模式9.SQL语言支持关系数据库的三级模式结构,其中存储文件对应()。A.外模式 B.模式C.内模式 D.存储模式答案:A.外模式10.SELECT1+'10'的结果是()。A.1 B.11C.101 D.110答案:B.1111.SELECT10+'10a'的结果是()。A.10 B.20C.1010a D.20a答案:B.2012.SELECT10+'a'的结果是()。A.10 B.20C.10a D.a答案:A.1013.SELECTCONCAT(10+'a')的结果是()。A.10 B.20C.10a D.a答案:A.1014.SELECT'a'+'b'的结果是()。A.0 B.aC.ab D.b答案:A.015.SELECTCONCAT('a'+'b')的结果是()。A.0 B.aC.ab D.b 答案:C.ab二、填空题1.SQL语言支持关系数据库的三级模式结构,其中视图(view)对应,基本表(basetable)对应,存储文件(storedfile)对应。答案:外模式、模式、内模式SQL的全称是。答案:StucturedQueryLanguage3.数据定义子语言用来定义数据库模式,简记为。答案:DDL数据操纵子语言用来表示用户对数据库的操作请求,简记为。答案:DML三、简答题1.SQL的主要功能有哪些?答案:数据查询,数据定义,数据操纵,数据控制。数据操纵的主要作用是什么?答案:用于对数据库中数据的查询、添加、删除、修改等操作。3.数据定义的主要作用是什么?答案:用来定义数据库模式、表、视图、索引等。

3.6本章习题一、单项选择题1.MySQL数据库中,通常使用()可以将已存在的数据库指定为当前数据库。A.USES B.USEDC.USE D.USING答案:C.USE2.创建数据库时,()确保数据库不存在时才执行创建的语句。A.IFEXISTSB.IFNOTEXISTSC.IFEXISTD.IFNOTEXIST答案:B.IFNOTEXISTS3.可以用于修改数据库的语句是()。A.ALTERDATABASEB.CHANGEDATABASEC.CREATEDATABASED.MODIFYDATABASE答案:A.ALTERDATABASE4.创建数据表时,不允许一个列为空使用的关键字是()。A.NONULLB.NOBLANKC.NOTNULLD.NOTBLANK答案:C.NOTNULL5.只修改列的数据类型所使用的语句正确的是()。A.ALTERTABLE...UPDATECOLUMN B.ALTERTABLE...ALTERCOLUMN C.ALTERTABLE...CHANGECOLUMN D.ALTERTABLE...MODIFYCOLUMN答案:D.ALTERTABLE...MODIFYCOLUMN6.唯一性约束与主键约束的区别是()。A.唯一性约束的字段值可以不唯一 B.唯一性约束的字段不可以为空值 C.唯一性约束的字段可以为空值 D.唯一性约束的字段的值不可以有重复值答案:C.唯一性约束的字段可以为空值 7.使字段的输入值小于50的约束是()。A.UNIQUE B.CHECKC.PRIMARYKEY D.FOREIGNKEY答案:B.CHECK8.建立索引的主要目的是()。A.节省存储空间 B.提高安全性 C.提高数据更新速度 D.提高查询速度答案:D.提高查询速度9.以下不能创建索引的语句是()。A.ALTERINDEXB.CREATEINDEXC.ALTERTABLED.CREATETABLE答案:A.ALTERINDEX10.以下不属于MySQL索引类型的是()。A.唯一索引 B.非空值索引C.全文索引 D.主键答案:B.非空值索引11.有关索引的说法不正确的是()。A.创建索引能提高数据插入的性能 B.索引建立得太多,会降低数据插入、修改、删除的进度C.建立索引可以使检索操作更迅速 D.数据量小的表不建议使用索引答案:A.创建索引能提高数据插入的性能 12.以下关于视图的叙述不正确的是()。A.视图有表结构文件B.视图中不保存数据C.视图仅能查询数据 D.创建视图时,WITHCHECKOPTION语句不是必需的答案:C.视图仅能查询数据13.以下关于视图和表的叙述正确的是()。A.每一个视图都对应一个表 B.视图是表的一个镜像备份C.视图在创建时会派生出数据 D.删除视图不会影响对应的基本表答案:D.删除视图不会影响对应的基本表14.以下语句可以用于创建视图的表的操作是()。A.UPDATE B.DELETE C.INSERT D.SELECT答案:D.SELECT15.以下不可以查看视图定义的语句是()。A.SHOWCREATEVIEW B.SHOWVIEWC.SHOWTABLESSTATUS D.SHOWTABLES答案:B.SHOWVIEW二、填空题1.在MySQL中,默认值即关键字。答案:DEFAULT2.数据的完整性一般包括实体完整性、和用户定义的完整性。答案:参照完整性3.在MySQL中可通过约束保证实体完整性,通过约束保证参照完整性,通过和约束保证用户定义完整性。答案:PRIMARYKEY、FOREIGNKEY、CHECK、NIQUE4.使用ALTERTABLE语句中修改列的子句包括、、。答案:ALTER[COLUMN]、CHANGE[COLUMN]、MODIFY[COLUMN]5.索引的关键字是。答案:INDEX|KEY6.在ALTERTABLE语句中添加一个列使用的关键字是。答案:ADD7.在已有的表上创建索引使用语句和语句。答案:CREATEINDEX、ALTERTABLE8.除了ALTERTABLE可以删除索引之外,删除索引的语句有语句。答案:DROPINDEX9.索引按照用途分类可以分为、、、、。答案:普通索引、唯一索引、主键索引、全文索引、空间索引10.修改视图定义使用的语句是。答案:ALTERVIEW三、简答题1.在定义数据库中,包括了那些语句?答案:数据库定义语句(DDL,DataDefinitionLanguage)是用于定义和管理数据库对象结构的SQL语句集合。SQL最常见的DDL主要包括CREATE、ALTER、DROP等语句。2.什么是表?简述表的构成。答案:在数据库中,表是用来存储数据的基本单位。

每个表由一系列行(记录)和列(字段)组成。表结构由表的列(字段)定义,每个列都有一个名称和数据类型。数据按照行(记录)存储,每一行表示一个数据项。表构成要素主要有表名、列/字段、行/记录、主键、数据类型、约束、索引、表关系等,其中列/字段代表数据的某个属性;行/记录代表一条完整的数据记录;主键是唯一标识表中的每一行的列(或列组合);外键用于建立表与表之间的关联,确保数据的完整性;数据类型定义列可以存储的数据格式,包括整数、字符串、日期/时间、布尔值等;约束保用于限制列的数据规则;索引用于提高查询速度的数据结构。3.简述创建表、查看表、修改、删除表使用的语句。答案:创建表、查看表、修改、删除表使用的语句分别如下:(1)创建表:CREATETABLE(2)查看表:SHOWTABLES表示查看所有表;DESCRIBE查看表的结构;SHOWCREATETABLE查看建表语句;(3)修改表:ALTERTABLE(4)删除表:DROPTABLE4.什么是主键约束?什么是外键约束?答案:(1)主键约束用于唯一标识表中的每一行记录的一个或一组列,具有唯一性、非空性、唯一标识等;(2)外键约束用于外键约束用于建立和强制两个表之间的关联关系,它指向另一个表的主键,具有参考完整性。5.如何理解索引?索引关键词的选取原则有哪些?答案:(1)索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,可以大大加快查询的速度,使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。索引的作用类似于书的目录,可以根据目录中的页码快速找到所需的内容。(2)索引关键词的选取原则主要包括限制表中索引的数量,对经常查询的字段应该建立索引,但要避免对不必要的字段建立索引;避免对经常更新的表建立过多的索引;数据量小的表不建议使用索引;在取值重复率较大的字段上不要建立索引;为经常需要进行排序、分组和连接查询的字段建立索引等。6.索引与约束有什么关系?答案:索引和约束是数据库设计中两个紧密相关但又有区别的重要概念,它们共同维护着数据的完整性和查询效率。约束的实现依赖于索引,索引是约束的技术基础。索引是为了快速定位特定数据,提高查询效率,通过创建数据结构加速查找实现,可以独立存在,主要有唯一索引、主键索引、普通索引、组合索引、全文索引、空间索引等;而约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具(约束),通过定义数据规则限制实现,通常需要索引支持;主要包括非空约束、唯一约束、主键约束、外键约束、自增约束、默认约束、检查约束等。总之,在数据库设计时,应先明确业务规则,再考虑查询模式。约束保证数据正确性,索引保证操作高效性,二者协同工作才能构建健壮的数据库系统。7.视图与基表有什么区别与联系?视图与SELECT语句有何关系?答案:(1)视图是从一个或者多个基本表中导出的表,是已经编译好的SQL语句,而表不是;视图没有实际的物理记录,不占用物理空间,而表相反;视图是查看表内容的窗口,是查看数据表的一种方法,视图可以不给用户接触表,使得用户不知道表结构,具有更大的安全性;视图只是逻辑概念的存在,只能由创建的语句来修改。而表可以随时对它进行修改;视图的建立和删除只影响视图本身,不影响对应的基本表;联系:视图(View)是在基本表之上建立的表,它的结构(即所对应的列)和内容(即所有数据行)都来自基本表。一个视图可以对应一个或多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。(2)视图与SELECT语句的关系主要体现在视图中保存的就是一条SELECT语句。‌视图是一个虚拟表,它不包含实际的数据,而是保存了创建该视图的SELECT语句。当通过视图查询数据时,数据库会执行保存的SELECT语句,就像执行一个普通的SELECT语句一样。‌四、操作题职工社团管理数据库employee,包含三张数据表职工表、社会团体表、参加表,表的结构如表1所示。表1employee数据库表的结构表名列名数据类型约束条件职工(emp)职工号char(3)主键姓名varchar(10)非空年龄tinyint默认值25性别CHAR(1)无约束籍贯VARCHAR(10)无约束社会团体(org)编号char(3)主键名称varchar(20)无约束负责人char(3)外键活动地点varchar(20)无约束参加(attend)职工号char(3)主键、外键编号char(3)主键、外键参团日期Date无约束使用SQL语句完成以下题目。1.使用MySQLWorkbench创建职工社团管理数据库employee,并作为当前数据库,按照表1的结构要求使用SQL语句创建表,并查看表“参加”的基本结构。答案:--创建数据库employeeCREATEDATABASEIFNOTEXSISTSemployeeDEFAULTCHARACTERSETgb2312DEFAULTCOLLATEgb2312_chinese_ci;--使用employee作为当前数据库useemployee;CREATETABLEemp(职工号char(3)primarykey,姓名varchar(10)notnull,年龄tinyintdefault25,性别char(1),籍贯varchar(10));CREATETABLEorg(编号char(3)primarykey,名称varchar(20),负责人char(3),活动地点varchar(20),FOREIGNKEY(负责人)REFERENCES职工(职工号));CREATETABLEattend(职工号char(3),编号char(3),参团日期date,PRIMARYKEY(职工号,编号),CONSTRAINT`参加_fk1`FOREIGNKEY(`职工号`)REFERENCES`职工`(`职工号`),CONSTRAINT`参加_fk2`FOREIGNKEY(`编号`)REFERENCES`社会团体`(`编号`))ENGINE=InnoDBDEFAULTCHARSET=gb2312;--查看参加表结构alterDESCemp1;2.复制表“emp”表的结构为“emp1”表,修改emp1表,增加一列“comment”,数据类型为Varchar(30),可以为空值,查看emp1的基本结构后删除该列。答案:CREATETABLEempASSELECT*FROMemp1;ALTERtableemp1ADDCOLUMNcommentVARCHAR(30)NULL;DESCemp1;3.使用SQL语句修改emp表中年龄字段的默认值为20。答案:ALTERTABLEempALTERCOLUMN年龄SETDEFAULT20;4.使用CREATEINDEX语句对表emp的姓名、性别列创建复合唯一索引idx_namesex,并查看表emp上的索引信息。答案:CREATEINDEXidx_namesexONemp(姓名,性别);SHOWINDEXFROMemp;5.删除索引idx_namesex,再次查看emp上的索引信息。答案:DROPINDEXidx_namesexONemp;SHOWINDEXFROMemp;6.在employee数据库中创建一个基于emp表的视图emp_info_view,要求视图中只有职工的姓名、性别、籍贯。答案:USEemployee;CREATEVIEWemp_info_viewASSELECT姓名,性别,籍贯FROMemp;7.使用CREATEORREPLACE修改(6)中创建的emp_info_view视图,使得emp_info_view视图增加一个职工号列,并利用SELECT语句查看视图信息。答案:CREATEORREPLACEVIEWemp_info_vie(职工号,姓名,性别,籍贯)ASSELECT职工号,姓名,性别,籍贯FROMemp;8.修改emp_info_view视图为表新增一位名职工号为e20,姓名为“陈珊”的女职工,其中,籍贯为“广东清远”,并利用SELECT语句查看视图数据信息。答案:INSERTINTOemp_info_viewVALUES("e20","陈珊","女","广东清远");SELECT*FROMemp_info_view;9.删除emp_info_view视图,利用SHOWTABLES查看视图。答案:DROPVIEWemp_info_view;SHOWTABLES;10.删除attend表,删除数据库employee。答案:DROPTABLEattend;DROPDATABASEemployee;

4.6本章习题一.单项选择题1.查询语句SELECT中可以使用()关键字将查询结果中的重复行屏蔽。A.ALL B.DISTINCTC.DISTINCTROW D.以上答案都不正确答案:B.DISTINCT2.SELECT语句选项中对查询数据进行排序的关键词是()。A.WHEREB.LIMITC.GROUPBYD.ORDERBY答案:A.WHERE3.以下选项中不是比较运算符的是()。A.ANDB.ALLC.SOMED.ANY答案:A.AND4.以下选项不是聚合函数是()。A.COUNT B.AVERAGE C.SUMD.AVG答案:B.AVERAGE5.MYSQL中,指定一个已有数据库作为当前数据库的关键字是()。A.USING B.USED C.USE D.USES答案:C.USE 6.SQL语句中,与表达式“编号NOTIN(‘id1’,’id2’)”功能相同的表达式是()。A.编号=‘id1’AND编号=’id2’ B.编号!=‘id1’OR编号!=’id2’ C.编号=‘id1’OR编号=’id2’ D.编号!=‘id1’AND编号!=’id2’ 答案:C.编号=‘id1’OR编号=’id2’ 7.要查询职工信息表中职工姓“张”的职工情况,可用()命令。A.SELECT*FROM职工信息表WHERE姓名LIKE'张_'; B.SELECT*FROM职工信息表WHERE姓名LIKE'张%';C.SELECT*FROM职工信息表WHERE姓名LIKE'%张%';D.SELECT*FROM职工信息表WHERE姓名LIKE'_张%';答案:B.SELECT*FROM职工信息表WHERE姓名LIKE'张%';8.MySQL中,可以将多个表进行连接查询的是()。A.JOINB.LIKE C.UNION D.MERGE答案:A.JOIN9.以下说法中错误的是()。A.GROUPBY子句用例分组WHERE子句的输出B.WHERE子句用来筛选FROM子句中自定的操作所产生的行C.聚合函数需要和GROUPBY一起使用D.HAVING子句用来从FROM的结果中筛选行答案:D.HAVING子句用来从FROM的结果中筛选行10.以下插入记录正确的选项是()。A.INSERTINTOemp(ename,sal)values(v1,v2,v3); B.INSERTINTOemp(ename)values(v1,v2,v3);C.INSERTINTOemp(ename,hiredate,sal)values(v1,v2,v3);D.INSERTINTOemp(ename,hiredate,sal)values(v1,v2); 答案:C.INSERTINTOemp(ename,hiredate,sal)values(v1,v2,v3);11.有三张表,它们的记录行数分别为5行,2行和6行,三个表进行交叉连接后,结果集中共有()行数据。A.不确定 B.40C.32 D.60答案:D.6012.下面可以通过聚合函数的结果来过滤查询结果集的SQL子句是()。A.WHERE子句B.HAVING子句C.ORDERBY子句D.GROUPBY子句答案:B.HAVING子句13.SQL语句中,“AGEIN(20,22)”d的语义是()。A.AGE<22ANDAGE>20 B.AGE<=22ANDAGE>=20 C.AGE=20ANDAGE=22 D.AGE=20ORAGE=22 答案:D.AGE=20ORAGE=22 14.SQL语言的数据操作语句包括SELECT.INSERT.UPDATE和DELETE,其中最重要也是使用最频繁的语句是()。A.UPDATE B.DELETE C.INSERT D.SELECT答案:B.DELETE 15.语句select*fromcitylimit3,7;,以下描述正确的是()。A.获取第3条到第9条记录B.获取第3条到第10条记录C.获取第4条到第10条记录D.获取第4条到第9条记录答案:D.获取第4条到第9条记录16.在MySQL中,有关UPDATE语句和REPLACE语句,说法错误的是()。A.UPDATE在没有匹配记录时什么都不做。B.REPLACE可以选择性地更新记录的一部分字段。C.REPLACE在有重复记录时更新,在没有重复记录时插入。D.UPDATE可以选择性地更新记录的一部分字段。答案:B.REPLACE可以选择性地更新记录的一部分字段。二.填空题1.在MySQL中,默认值即关键字。答案:DEFAULT2.操作“元组<ALL(集合)”的语义是,“元组<ANY(集合)”的语义是。答案:元组值小于集合中的每一元组值、元组值小于集合中的任一元组值3.使用SELECT语句结合ORDERBY子句可对查询结果排序表示升序,表示降序。答案:ASC、DESC4.表达式中的通配符“%”表示、“_”(下划线)表示。答案:任意多个、任意一个5.检索姓名字段中含有“明”的表达式为:。答案:姓名LIKE“%明%”6.HAVING子句与WHERE子句很相似,区别在于:WHERE子句作用的对象是,HAVING子句作用的对象是。答案:分组7.表示年龄在10-20岁之间的SQL语句条件是。答案:Between10and208.在成绩表中,查询语文课成绩最好的三名学生的学生姓名,正确的语句。答案:SELECT姓名FROM成绩表ORDERBY语文DESCLIMIT0,3;9.查找有购买“网页设计”这本书的订单信息,SELECT语句如下,请补充完整。select*fromsellwhere图书编号(select图书编号frombookwhere书名='网页设计');答案:IN简答题1.SQL语言有什么特点,包括哪几个子句?简述各个子句的功能。答案:SQL语言特点包括综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(SQL是自含式语言又是嵌入式语言)等,主要包括SELECT子句、FROM子句、WHERE子句、GROUPBY子句、HAVING子句、ORDERBY子句、LIMIT子句等,其功能分别如下:(1)SELECT子句指定要查询的列或计算表达式(2)FROM子句指定数据来源的表或视图;(3)WHERE子句:过滤行数据;(4)GROUPBY子句是分组聚合计算;(5)HAVING子句:过滤分组后的结果;(6)ORDERBY子句是用来排序结果集;(7)LIMIT子句用来限制查询结果返回的记录数量。2.什么是子查询?IN子查询、EXISTS子查询、比较子查询各有何功能?答案:子查询也称为嵌套查询,指在一个查询内部包含另一个查询,子查询是一个SELECT查询,嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询的WHERE子句或HAVING子句中。IN子查询检查主查询的值是否存在于子查询结果集中;EXISTS子查询检查子查询是否返回任何行(布尔测试),不需要返回任何实际数据,只需返回一个真或假值,其中,EXISTS表示存在,NOTEXISTS表示不存在;比较子查询将主查询的值与子查询的单个结果进行比较,子查询必须返回单行(除非使用ALL/ANY)。3.使用JOIN连接查询中,如何指定连接的多个表的表名?如何指定连接条件?答案:使用JOIN连接查询中,基本语法格式如下:SELECT*FROM表名AJOIN表名BON表名A.列名=表名B.列名JOIN表名CON表名B.列名=表名C.列名其中利用FROM子句中指定主表,使用JOIN子句指定要连接的表,利用ON指定连接条件。4.简述聚合函数,并介绍几个常用的聚合函数。答案:聚合函数聚合函数是对一组值执行计算并返回单个值的函数,通常与GROUPBY子句一起使用来对结果集进行分组汇总。常用的聚合函数有COUNT()、SUM()、AVG()、MAX()、MIN()等。5.内连接与外连接有何区别?左外连接与右外连接有何区别?答案:(1)内连接与外连接的区别:内连接(INNERJOIN)是最常用的连接类型之一,它根据两个或多个表之间的共同列值来联接这些表。在内连接中,只有在连接的表之间有匹配的值时,才会返回结果;外连接(OUTERJOIN)它可以返回两个或多个表之间所有的匹配和不匹配的数据。(2)外连接又可以分为左外连接、右外连接、全外连接等,其中左外连接返回左表中的所有行,加上右表中匹配的行,若右表中无匹配,则右表字段显示为NULL;右外连接返回右表中的所有行,加上左表中匹配的行,若左表无匹配,则左表字段显示为NULL。6.什么是联合查询?简述其功能。答案:联合查询是一种将多个SELECT语句的结果集合并为一个结果集的SQL操作。其功能主要是结果集合并、垂直组合、数据整合等,其中结果集合并是将多个查询返回的数据合并为单个结果集;垂直组合可以将多个查询结果按列对齐后垂直堆叠;数据整合可以合并来自不同表或相同表但条件不同的数据。四.操作题将职工社团管理数据库employee进行恢复到第三章已创建的数据库,三张数据表包括职工表、社会团体表、参加表。按照要求完成以下题目。表1职工表(emp)职工号姓名年龄性别籍贯e01张国华46男湖南e02赵子琪30女湖南e03刘小霞20女河北e04张涛25男湖北e05高琪雅23女河北e06王方29男河南e07刘长辉38男河北e08周密18女湖南表2社会团体表(org)编号名称负责人活动地点g01爱电影e012楼201g02篮球先锋e03室内篮球场g03摄影家协会e013楼306g04美食家e054楼407g05游戏天地e035楼电竞室g06爱运动e074楼404g07宠物世界e022楼209表1参加表(join)职工号编号参团日期e01g012018-08-08e01g032019-02-05e01g072016-05-05e02g012020-06-10e02g072016-10-18e03g042017-08-20e03g052020-08-14e05g042018-08-13e06g012018-06-08e06g042018-06-09e06g062017-10-16e06g072017-03-20e07g012017-04-14e07g03nulle07g062015-12-151.利用SQL语句向三张表中插入数据记录,三张表的数据分别如表1-表3所示。答案:#向第3章已创建的数据库和表插入数据INSERTINTOempVALUES('e01','张国华','46','男','湖南');INSERTINTOempVALUES('e02','赵子琪','30','女','湖南');INSERTINTOempVALUES('e03','刘小霞','20','女','河北');INSERTINTOempVALUES('e04','张涛','25','男','湖北');INSERTINTOempVALUES('e05','高琪雅','23','女','河北');INSERTINTOempVALUES('e06','王方','29','男','河南');INSERTINTOempVALUES('e07','刘长辉','38','男','河北');INSERTINTOempVALUES('e08','周密','18','女','湖南');#`社会团体`INSERTINTOorgVALUES('g01','爱电影','e01','2楼201');INSERTINTOorgVALUES('g02','篮球先锋','e03','室内篮球场');INSERTINTOorgVALUES('g03','摄影家协会','e01','3楼306');INSERTINTOorgVALUES('g04','美食家','e05','4楼307');INSERTINTOorgVALUES('g05','游戏天地','e03','5楼电竞室');INSERTINTOorgVALUES('g06','我爱乒乓','e07','4楼404');INSERTINTOorgVALUES('g07','宠物世界','e01','2楼209');##参加alterINSERTINTOattendVALUES('e01','g01','2018-08-08');INSERTINTOattendVALUES('e01','g03','2019-02-05');INSERTINTOattendVALUES('e01','g06','2016-05-05');INSERTINTOattendVALUES('e02','g01','2020-06-10');INSERTINTOattendVALUES('e02','g07','2016-10-18');INSERTINTOattendVALUES('e03','g04','2017-08-20');INSERTINTOattendVALUES('e03','g05','2020-08-14');INSERTINTOattendVALUES('e05','g04','2018-08-13');INSERTINTOattendVALUES('e06','g01','2018-06-08');INSERTINTOattendVALUES('e06','g04','2018-06-09');INSERTINTOattendVALUES('e06','g06','2017-10-16');INSERTINTOattendVALUES('e06','g07','2017-03-20');INSERTINTOattendVALUES('e07','g01','2017-04-14');INSERTINTOattendVALUES('e07','g03',null);INSERTINTOattendVALUES('e07','g06','2015-12-15');2.在employee数据库中使用SELECT进行基本查询。(1)在职工表(emp)中,查询每个职工的职工号、姓名、性别。(2)查询职工表(emp)编号为e02的职工姓名和籍贯。(3)查询职工表(emp)所有籍贯为“湖南”的女职工的姓名和年龄。答案:(1)SELECT职工号,姓名,性别FROMemp;(2)SELECT姓名,籍贯FROMempWHERE职工号='e02';(3)SELECT姓名,年龄FROMempWHERE籍贯='湖南'AND性别='女';3.使用SELECT语句进行条件查询。(1)在参加表(attend)中查询参团日期在2016-2017内的职工号、社团编号和参团日期。(2)查询参加表(attend)中参团编号为g04的职工人数。(3)查询职工表(emp)中参团编号为g07的职工号和参团日期。(4)查询职工表(emp)中职工的姓名和年龄,查询结果按年龄从大到小排序。(5)查询职工表(emp)中所有姓“刘”的职工号和姓名。答案:(1)SELECT职工号,社团编号,参团日期FROMattendWHEREYEAR(参团日期)BETWEEN2016AND2017;(2)SELECT编号,COUNT(*)AS参加人数FROMattendWHERE编号='g04';(3)SELECT职工号,参团日期FROMempWHERE编号='g07';(4)SELECT姓名,年龄FROMempORDERBY年龄DESC;(5)SELECT职工号,姓名FROMempWHERE姓名LIKE'刘%';4.对职工表(emp),查询职工的职工号、姓名、性别、年龄及籍贯,查询结果先按照性别的由小到大排序,性别相同的再按职工号由大到小排序。答案:SELECT职工号,姓名,性别,年龄,籍贯FROMempORDERBY性别,职工号DESC;5.使用GROUPBY子句查询参加表(attend)中,各个职工号的参团编号。答案:SELECT职工号,GROUP_CONCAT(编号)AS参团列表FROMattendGROUPBY职工号;6.使用UNION运算符对职工表(emp)中姓“刘”的职工号,籍贯为‘湖南’的职工号、姓名返回在一个表中。答案:SELECT职工号,姓名FROMempWHERE姓名LIKE'刘%'UNIONSELECT职工号,姓名FROMempWHERE籍贯='湖南';7.嵌套查询(1)在职工表(emp)中查找与“刘小霞”性别相同的所有职工姓名、编号。(2)使用IN子查询查找所参团编号为g01、g07的职工号、姓名、性别。(3)使用ANY子查询查找职工号为e01的参团日期比e02号参团日期最早还要晚的参团编号和参团日期。(4)使用ALL子查询女性职工比男性职工出生年份晚的职工姓名、年龄。答案:(1)USEEMPLOYEE;SELECT职工号,姓名FROMempWHERE性别=(SELECT性别FROMempWHERE姓名='刘小霞');(2)SELECT职工号,姓名,性别FROMempWHERE编号IN(SELECT编号FROMempWHERE编号='g01'AND编号='g07');(3)SELECT编号,参团日期FROMattendWHERE职工号='e01'ANDYEAR(参团日期)>ANY(SELECTYear(参团日期)FROMattendWHERE职工号='e02');(4)SELECT姓名,年龄FROM职工WHERE性别='女'AND年龄<ALL(SELECT年龄FROM职工WHERE性别='男');8.连接查询(1)查询参团日期在2016年-2017年范围内的职工号、姓名、参团编号、日期。(2)使用INNERJOIN连接方式查询参与“宠物世界”社团的职工号、姓名、参团日期。(3)查询每个职工所参加社团的数量,要求列出职工号、姓名、参团数量。(4)使用左外连接查询每个职工参与的社团编号,要求列出职工号、姓名、参团数,没有参团的职工的数为空。答案:(1)SELECTe.职工号,e.姓名,a.编号,a.参团日期FROM职工ase,参加asa,社会团体asoWHEREe.职工号=a.职工号ANDa.编号=o.编号andYEAR(a.参团日期)BETWEEN2016AND2017;(2)SELECTemp.职工号,emp.姓名,参加.参团日期FROMempINNERJOIN参加ONemp.职工号=attend.职工号INNERJOINorgONorg.编号=attendence.编号WHEREorg.名称="宠物世界";(3)SELECTemp.职工号,emp.姓名,COUNT(attend.编号)AS参团数量FROM职工,attendWHEREemp.职工号=attend.职工号GROUPBY职工.职工号;(4)SELECTemp.职工号,emp.姓名,COUNT(attend.编号)AS参团数量FROMempLEFTOUTERJOINattendONemp.职工号=attend.职工号GROUPBYemp.职工号;

5.6本章习题一、单选题1.存储过程与函数的区别之一是存储过程不能包含‌()A.SET语句B.局部变量‌C.RETURN语句‌D.游标‌答案‌:‌C.RETURN语句‌存储过程可以接受参数,这些参数不包括‌()。A.IN参数B.OUT参数C.INOUT参数‌D.STATIC参数‌‌答案‌:‌D.STATIC参数‌以下哪个不是存储过程的特点‌()。A.可以封装复杂的SQL语句B.可以提高代码的重用性C.可以提高数据库的安全性‌D.可以直接查询数据库中的数据‌‌答案‌:‌D.可以直接查询数据库中的数据存储过程可以返回‌()。A.只能返回一个值‌B.可以返回多个值(通过OUT参数)‌C.不能返回值D.只能返回状态码‌答案‌:‌B.可以返回多个值(通过OUT参数)以下哪个不是存储过程的优势‌()。A.减少网络流量B.提高执行效率C.增强代码的可读性‌D.增加数据库的存储负担‌答案‌:‌D.增加数据库的存储负担存储过程可以嵌套调用其他存储过程吗‌?()A.不可以‌B.可以‌C.取决于MySQL的版本D.取决于存储过程的定义‌答案‌:‌B.可以在自定义函数中,可以使用哪些控制结构?()A.仅能使用IF语句B.可以使用IF、CASE、LOOP等控制结构C.仅能使用LOOP语句D.不能使用任何控制结构‌答案:B.可以使用IF、CASE、LOOP等控制结构在MySQL中,自定义函数的定义必须包含哪两个部分?()A.函数名和函数体B.函数名和返回类型C.参数列表和函数体D.返回类型和参数列表‌答案:A.函数名和函数体‌自定义函数的执行是在哪个上下文中进行的?()A.服务器级B.数据库级C.会话级D.用户级‌答案:B.数据库级在自定义函数中,如何处理异常或错误?()A.使用TRY-CATCH块B.使用DECLAREHANDLER语句C.不支持异常处理D.使用ERROR语句‌答案:B.使用DECLAREHANDLER语句填空题与自定义函数相比,存储过程不能包含语句。答案:return存储过程的参数按照输入输出的区别可分为、、。答案:in,out,inout局部变量用______语句声明,且只能在语句块BEGIN...END中使用。答案:declare常用的循环语句有、、。答案:while,loop,repeat存储过程中若需返回结果集,可用______语句输出结果集。答案:select函数执行完后,需通过语句返回结果。答案:return退出循环的关键字是______,而跳过当前循环的关键字是______‌。答案:LEAVE、ITERATE‌函数中如需使用临时表,在创建临时表时使用______关键字‌。答案:CREATETEMPORARY需授予用户执行自定义函数的权限使用命令______。答案:GRANTEXECUTE定义异常处理程序时,使用______语句声明处理方式‌。答案:DECLAREHANDLER操作题创建存储过程p_info(),输出“HelloMySQL”。

答案:delimiter//createProcedurep_info()readssqldatabeginselect‘HelloMySQL’as输出信息;end//创建存储过程p_printInfo(),输入社团编号,输出社团编号、社团名称和活动地点。答案:delimiter//createProcedurep_printInfo(inCIDchar(3))readssqldatabeginselect编号,名称,活动地点from社会团体where编号=CID;end//创建存储过程p_join(),输入职工号、社团编号,输出职工号、社团编号、活动地点和参团日期。答案:delimiter//createProcedurep_join(inWIDchar(3),inCIDchar(3))readssqldatabeginselect职工号,编号as社团编号,活动地点,参团日期from职工,社会团体where职工.职工号=社会团体.职工号and职工.职工号=WIDand社团编号=CID;end//创建函数f_sum(intn),输入n,返回1+2+...+n的值。答案:delimitercreatefunctionf_sum(intn)returnsintnosqldatabegindeclareiintdefault1;declaresintdefault0;whilei<=ndosets=s+i;seti=i+1;endwhile;returnn;end//5.创建函数f_mul(intk,inti),当i为1时,计算以k为半径的圆的面积;当i为2时,计算以k为正方形边长的面积;当i为3时,计算以k为正方体边长的体积。delimiter//createfunctionf_mul(intk,inti)returnsdouble(6,2)nosqlbegincasewheni=1thenreturn3.14*k*k;wheni=2thenreturnk*k;elsereturnk*k*k;endcase;end//

6.4本章习题一、单选题1.‌下列说法中错误的是‌()。A.常用触发器有INSERT、UPDATE、DELETE三种B.对于同一张数据表,可以同时有两个BEFOREUPDATE触发器C.NEW临时表在INSERT触发器中用来访问被插入的行D.OLD临时表中的值只读,不能被更新‌答案‌:B.对于同一张数据表,可以同时有两个BEFOREUPDATE触发器‌‌触发器不能触发的事件是‌()。A.INSERTB.UPDATEC.DELETED.SELECT‌答案‌:D.SELECT‌以下哪个不是触发器的特点‌()。A.触发器是自动执行的B.触发器可以通过CALL语句显式调用C.触发器是响应特定事件而自动执行的D.触发器可以包含复杂的SQL语句‌答案‌:B.触发器可以通过CALL语句显式调用‌对于同一个表,可以定义多少个触发器‌?()A.只能定义一个B.可以定义多个C.最多定义三个(INSERT、UPDATE、DELETE)D.取决于数据库的大小‌答案‌:B.可以定义多个‌‌在触发器中,OLD和NEW关键字分别代表什么‌?()A.OLD代表更新前的数据,NEW代表更新后的数据B.OLD代表更新后的数据,NEW代表更新前的数据C.OLD和NEW都代表更新后的数据D.OLD和NEW都代表更新前的数据‌答案‌:A.OLD代表更新前的数据,NEW代表更新后的数据在MySQL中,触发器是否可以访问外部表的数据‌?()A.可以B.不可以C.取决于触发器的定义D.取决于MySQL的版本‌答案‌:A.可以‌在MySQL中,用于查看已定义事件的语句是‌()A.SHOWEVENTSB.SELECTEVENT_SCHEMA,EVENT_NAMEFROMINFORMATION_SCHEMA.EVENTSC.SHOWCREATEEVENTevent_nameD.DESCRIBEEVENTS‌答案‌:A.SHOWEVENTS‌MySQL事件调度器默认是‌()A.开启的B.关闭的C.由系统决定D.取决于MySQL版本‌答案‌:B.关闭的要开启MySQL事件调度器,应修改的系统变量是‌()A.event_schedulerB.scheduler_eventC.event_enableD.enable_event‌答案‌:A.event_scheduler以下哪个不是MySQL事件调度器可以设置的频率‌?()A.YEARLYB.MONTHLYC.WEEKLYD.DAILY_HOURLY‌答案‌:D.DAILY_HOURLY填空题根据触发时间的差异性,触发器可分为包括______和______两种‌。答案:BEFORE、AFTER根据触发事件的不同,触发器可分为_____、______和______三种。答案:INSERT、UPDATE、DELETE定义触发器时使用语句FOREACHROW,表示触发时机为______‌。答案:每一行数据创建触发器需要用户具有______权限‌。‌答案‌:CREATETRIGGERMySQL事件是基于______的预定义任务,需启用事件调度器才能生效‌。‌答案‌:时间调度查看事件调度器状态的系统变量是______‌。‌答案‌:event_scheduler若需禁用某个事件,使用命令______‌。‌答案‌:ALTEREVENT事件名DISABLE事件执行最后一次若需保留该事件,定义事件时应添加进行说明‌。答案:ONCOMPLETIONPRESERVE操作题基于职工表创建一insert触发器,每新增一条职工记录,把员工姓名显示出来。答案:delimiter//createtriggertri_insertafterinserton职工foreachrowbeginselect姓名into@wnamefrom职工where职工号=NEW..职工号;end//select@wname;基于社团表创建一delete触发器,每删除一条社团记录,对应删掉参加表对应记录。答案:delimiter//createtriggertri_deleteafterdeleteon社会团体foreachrowbegindeletefrom参加where编号=OLD.编号;end//基于参团表创建一Update触发器,每修改一条参团记录,将该记录旧状态存到oldData表中。答案:delimiter//createtriggertri_deleteafterdeleteon社会团体foreachrowbegindeletefrom参加where编号=OLD.编号;end//创建一事件,要求从下周开始,到“2025-12-3012:00:00”,每隔一周统计一次不同社团参团人数。答案:createeventevt_countOnScheduleEvery1weekStartsnow()+interval1weekEnds‘2025-12-3012:00:00’Doselect编号,count(*)as社团参加人数from参加groupby编号;创建一事件,要求每年年底30号(12月30日),清空一下参团表数据。答案:createeventevt_truncateOnScheduleEvery1yearStartsat‘2025-12-3012:00:00’Dotruncatetable参加;创建一事件,要求从当下开始立即执行,每一季度备份一次参团表。答案:CreateEventevt_backupDataOnScheduleEvery1quarterStarsatnow()DoSelect*Srom参加 intooutfile'C:/ProgramData/MySQL/MySQLServer8.0/Uploads/参加.txt'fieldsterminatedby','optionallyenclosedby'"'linesterminatedby'#';

7.4本章习题一、单选题1.事务是由哪个MySQL组件来实现的?()‌A.存储引擎B.查询缓存C.连接池D.索引‌答案:A.存储引擎‌‌以下哪个MySQL存储引擎不支持事务?()‌InnoDBMyISAMNDBFalcon‌答案:MyISAM‌‌事务的原子性是指什么?()‌事务中的操作要么全部完成,要么全部不完成事务中的操作可以部分完成事务中的操作可以并发执行事务中的操作必须按顺序执行‌答案:A.事务中的操作要么全部完成,要么全部不完成‌‌事务的隔离性是通过什么机制来实现的?()‌A.锁机制B.重做日志C.回滚日志D.多版本并发控制‌答案:D.多版本并发控制‌‌以下哪个不是事务的特性?()‌原子性一致性隔离性并发性‌答案:D.并发性‌‌在MySQL中,哪个隔离级别可能发生脏读?()‌读未提交读提交可重复读串行化‌答案:A.读未提交‌‌在MySQL中,默认的事务隔离级别是什么?()‌读未提交读提交可重复读串行化‌答案:C.可重复读锁在数据库系统中的主要作用是什么?()‌A.提高查询速度B.管理对共享资源的并发访问,保持数据完整性和一致性C.减少数据存储空间D.增加数据库连接数‌答案:B.管理对共享资源的并发访问,保持数据完整性和一致性‌‌MySQL中的全局锁主要用于什么场景?()‌A.高并发读写操作B.数据库备份C.数据迁移D.性能优化‌答案:B.数据库备份‌‌‌MySQL中的意向锁(IntentionLock)是什么级别的锁?()‌A.行级锁B.表级锁C.页级锁D.全局锁‌答案:B.表级锁‌‌二、填空题显式开启事务的SQL语句是、。‌答案‌:BEGIN、STARTTRANSACTION事务回滚使用命令,提交事务使用命令‌。‌答案‌:ROLLBACK、COMMITMySQL默认事务隔离级别是。‌答案‌:REPEATABLEREAD最高隔离级别是,其代价是______并发性能‌。‌答案‌:SERIALIZABLE、降低设置事务自动提交模式的系统变量是(默认值为on表示开启)‌。‌答案‌:AUTOCOMMIT创建保存点的语句是,回滚到保存点的语句是‌。‌答案‌:SAVEPOINT、ROLLBACKTO死锁发生时,MySQL会通过______机制自动终止其中一个事务‌。‌答案‌:死锁检测MyISAM存储引擎默认使用______锁,InnoDB支持______锁和______锁两种粒度的锁‌。 ‌答案‌:表级,行级、表级共享锁(S锁)允许事务______数据,排他锁(X锁)允许事务______数据‌。‌答案‌:读取、修改(或删除/更新)在高并发写入场景中,应优先选择______锁以减少锁冲突‌。‌答案‌:行级三、问答题什么是事务?事务的基本特性是什么?答案:事务是数据库操作的最小逻辑单元,由一组不可分割的操作组成。这些操作要么‌全部成功执行‌,要么‌全部失败回滚‌,确保数据的一致性。事务的基本特性是原子性、一致性、隔离性、持久性。服务器关于事务是否自动提交的系统参数是什么?如何设置?答案:MySQL中控制事务自动提交的系统参数为@@‌AUTOCOMMIT‌,默认值为ON。查看其状态的语句:SHOWVARIABLESLIKE'autocommit';设置其状态的语句:SETAUTOCOMMIT=1;或SETAUTOCOMMIT=0;什么是并发调度?并发调度可能会有造成什么异常?答案:MySQL中,并发调度‌指数据库系统允许多个事务在时间段上重叠执行,以提升资源利用率和系统吞吐量‌。通过并发调度,事务可以并行操作,但需通过锁机制或MVCC(多版本并发控制)保证数据一致性‌。并发调度可能会有造成以下异常:丢失更新、脏读、不可重复读、幻读。简述锁机制原理。答案:锁是数据库协调并发访问的核心机制,通过控制共享资源的访问规则,确保数据一致性和事务隔离性。MySQL的锁机制由存储引擎实现(如InnoDB),主要分为‌共享锁(S锁)‌和‌排他锁(X锁)‌两类。锁的粒度可分为行级锁、页级锁和表级锁。InnoDB锁机制的核心特性:(1)MVCC(多版本并发控制)。通过版本链实现非锁定读(如普通SELECT),提升读并发性能,避免与写操作冲突。(2)死锁处理。InnoDB自动检测死锁(如等待图算法),并强制回滚代价较小的事务。(3)‌锁升级机制。InnoDB无需锁升级(单个锁与多个锁开销相同),直接支持行级锁

温馨提示

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

评论

0/150

提交评论