MySQL数据库技术与项目应用教程电子教案 项目五 优化检索网上商城系统数据_第1页
MySQL数据库技术与项目应用教程电子教案 项目五 优化检索网上商城系统数据_第2页
MySQL数据库技术与项目应用教程电子教案 项目五 优化检索网上商城系统数据_第3页
MySQL数据库技术与项目应用教程电子教案 项目五 优化检索网上商城系统数据_第4页
MySQL数据库技术与项目应用教程电子教案 项目五 优化检索网上商城系统数据_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

备课纸适用班级:_______P.课题项目五优化检索网上商城系统数据课时2+4课时教学目的了解什么是索引、视图会创建和管理索引会创建和管理视图了解各种写出高效查询语句的方法重点理解数据的存储结构会创建和管理视图会创建和管理索引查询性能分析难点索引的存储架构规划索引分析查询执行效率优化查询教具多媒体+机房课型新授作业课后习题课后项目实战教学过程课时分配教学方法教学内容课程引入先回顾数据查询,并提出如下问题优化数据查询的意1.数据并发时查询效率的问题义。2.如何提高数据的查询效率任务1使用视图优化查询操作任务描述使用SQL语句查询数据时,查询结果直接输出到客户端而不被保存。若需要多次查询相同数据时,就可以将查询的定义封装成视图,以简化查询操作。备课纸适用班级:_P.视图是虚表,存储的内容是SQL语句,其关联的数据在视图被使用时动态生成,数据随着基本表的变化而变化。视图就像一个窗口,用户只需要关心视图窗口提供的数据即可。教学提示:视图是预定义的查询作为对象存储在数据库中,提高了性能也使得整体架构更加清晰。数据库程序员可以利用视图作为高性能接口向应用程序和用户提课程引入:供数据。带着问题开本任务讨论如下知识结构:展本章学习(1)视图在数据库程序设计中的角色?激发学生兴(2)视图的基本形式有哪些?趣(3)怎样通过视图改善查询的性能?(4)怎样创建修改视图?视图简介视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是SELECT语句。SELECT语句的结果集构成视图所返回的虚拟表。适用场景将用户限定在表中的特定行上----只允许雇员看见工作跟踪表内记录其工作的行将用户限定在特定列上-----对于不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。-----将多个表中的列联接起来,使它们看起来象一个表聚合信息而非提供详细信息课堂提问:可以从视图内查询数据,那么创建视图是否会大量占用磁盘空间?----不会。一般视图并不存储实际数据,存储的只是产生数据的SELECT语句,所以并不会大量占用磁盘空间;备课纸适用班级:_P.视图的优点略讲用户只显示特定数据屏蔽数据库复杂性简化用户权限管理改进性能学习提示视图实际上是相当于对底层表的信息的逻辑重构。课堂讨论:根据视图的各项优点,讨论它的应用场合创建和查看视图1.使用Navicat图形工具创建视图结合实例讲解【例5.1】使用Navicat图形工具,创建名为view_users_orders的视图,用于查询会员的订单及订单详情。列出用户id,用户名,订单编号,下单日期,订单金额,商品id,商品名称,购买数量和单价。步骤略学习提示视图的命名必须遵循命名规则,且不能与表同名,视图命名建议使用view_开头。2.使用SQL语句创建视图语法格式CREATE[ORREPLACE]VIEW[数据库名.]视图名[(列名列表)]ASselect语句[WITH[CASCADED|LOCAL]CHECKOPTION]

ORREPLACE:当指定ORREPLACE子句时,若视图存在则修改定义,否则创建新视图。

列名列表:视图自定义的列名,该列表中名称必须与视图体中SELECT语句查询的结果列一一对应,若使用与源表或视图中相同的列名,则可以省略列名列表。

select语句:视图定义的SELECT语句。备课纸适用班级:_P.

WITH[CASCADED|LOCAL]CHECKOPTION:可选参数,表示更新视图时要保证在该视图的权限范围之内。其中CASCADED是默认值,表示更新视图时要满足所有相关视图和表的条件,LOCAL表示更新视图时满足该视图本身定义的条件。实例演示【例5.2】创建名为view_cart的视图,用来显示购物车信息,列出用户id、用户名、商品id、商品名称、购买数量以及商品价格。CREATEVIEWview_cart(uid,uname,gid,gname,price,num)ASSELECTu.uid,u.uname,g.gid,g.gname,g.gprice,umFROMusersuJOINcartcJOINgoodsgONu.uid=c.uidANDc.gid=g.gid;3.查看视图在查看视图之前确定用户是否有查询视图的权限(可以查询系统数据库mysql中user表的show_view_priv列的值),默认值为“Y”,表示允许。(1)查看数据库中的所有视图在MySQL中,information_schema

数据库中views

表存储了所有视图的定义。【例5.3】查看onlinedb数据库中所有的视图信息。实例演示SELECT*FROMinformation_schema.viewsWHEREtable_schema='onlinedb';学习提示schema在数据库中表示数据库对象的集合,它可以包含了各种对像,比如:表,视图,存储过程,索引等。(2)使用SHOWTABLESTATUS语句查看视图。SHOWTABLESTATUSLIKE'视图名';实例演示【例5.4】使用SHOWTABLESTATUS语句查看名为view_cart的视图。SHOWTABLESTATUSLIKE'view_cart'\G;(2)使用DESCRIBE语句查看视图。备课纸适用班级:_P.DESCRIBE视图名实例演示【例5.5】使用DESCRIBE语句查看名为view_cart的视图。DESCRIBEview_cart;通过视图查询数据视图定义好后,可以像使用基本表查询数据一样通过视图查询数据。实例演示【例5.6】查询用户段湘林购物车中的商品id,商品名称,价格和购买数量。SELECTgid,gname,price,numFROMview_cartWHEREuname='段湘林';学习提示通过视图能查询到的数据列一定是在视图定义时,SELECT语句所包含的列或计算列。【例5.7】查询用户蔡静在2021年全年的总销费金额,列名为total_2021。SELECTSUM(gprice*inum)AStotal_2021FROMview_users_ordersWHEREuname='蔡静'ANDyear(ordertime)=2021;维护视图1.修改视图提问:对象修改的命令用什么?----ALTER当视图依赖的数据表发生改变,或需要通过视图查询更多的信息时,可以对定义好的视图进行修改。(1)CREATEORREPLACEVIEW语句修改视图。实例演示【例5.8】修改名为view_cart的视图,在原有查询的基础上增加用户的邮箱。备课纸适用班级:_P.CREATEORREPLACEVIEWview_cart(uid,uname,uemail,gid,gname,price,num)ASSELECTu.uid,u.uname,u.uemail,g.gid,g.gname,g.gprice,umFROMusersuJOINcartcJOINgoodsgONu.uid=c.uidANDc.gid=g.gid;(2)ALTERVIEW语句修改视图ALTERVIEW语句用于修改已存在的视图语法介绍ALTERVIEW[数据库名.]视图名[(列名列表)]ASselect语句[WITH[CASCADED|LOCAL]CHECKOPTION]实例演示【例5.10】使用ALTERVIEW语句实现【例5.8】。ALTERVIEWview_cart(uid,uname,uemail,gid,gname,price,num)ASSELECTu.uid,u.uname,u.uemail,g.gid,g.gname,g.gprice,umFROMusersuJOINcartcJOINgoodsgONu.uid=c.uidANDc.gid=g.gid;2.删除视图当不再需要视图时,可使用图形工具和SQL语句都可以删除视图。DROPVIEW[IFEXISTS]视图名【例5.11】删除视图view_users_orders。DROPVIEWview_users_orders;课堂讨论:删除并重新创建视图,和更改视图,从效果上来说是否一样的?----不一样。更改视图语句不影响分配的权限,而删除再重新创建视图的话则需要重新分配权限。可更新视图视图不仅可以查询数据,还可以更新数据。备课纸适用班级:_P.视图维护的并不是数据的副本,它显示的是一条查询在一个或多个基表上的结果集。所以,对视图数据的修改实际上是对基表的修改。学习提示:一般来说,为了能通过视图修改数据,视图必须定义在单个表上,在SELECT语句中不能包括聚合函数或GROUPBY子句1.通过视图修改数据语法格式UPDATE视图名SET列名1=值1,列名2=值2,…,列名n=值nWHERE条件表达式【例5.12】通过视图view_cart修改会员李小莉的邮箱为'lixiaoli@'。实例演示UPDATEview_cartSETuemail='lixiaoli@'WHEREuname='李小莉';若视图的定义包含下情况中的任何一种,则该视图就不可更新。

包含聚合函数。

包含DISTINCT、UNION、ORDERBY、GROUPBY和HAVING等关键字或子句。

包含子查询。

由不可更新的视图导出的视图。

视图对应的数据表上存在没有默认值且不为空的列,而该列没有包含在视图里。学习提示虽然可以通过更新视图操作相关表的数据,但是限制较多。实际情况下,最好将视图仅作为查询数据的虚表,而不要通过视图更新数据。2.通过视图向数据表插入数据。INSERT[INTO]视图名[(列名列表)]VALUES(值列表1)[,(值列表2),…,(值列表n)]实例演示【例5.13】通过视图view_users,向数据表users中插入一条记录。备课纸适用班级:_P.INSERTINTOview_users(ulogin,uname,upwd,ugender)VALUES(,'周鹏','123','男');3.通过视图删除数据表中的数据DELETEFROM视图名实例演示【例5.14】通过视图view_users,删除数据表users用户名为“周鹏”的记录。DELETEFROMview_usersWHEREuName='周鹏'060708任务2使用索引优化查询性能知识场景:数据库中的索引与书籍中的索引类似。利用索引可以快速查找所需信息,无须阅读整本书。书中的索引是一个词语列表,其中注明了包含各个词的页码。带着问题开本任务讨论如下内容:展本章学习(1)为什么要使用索引?激发学生兴(2)索引的架构怎样?趣(3)如何维护索引?索引如何实在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所现查询需数据。而数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。索引简介1.索引的定义索引的定义索引是对数据库表中一列或多列的值进行排序的一种结构,对于拥有复杂结构与大量数据的表而言,索引就是表中数据的目录。索引也称不键(KEY)【例5.15】查询类别编号为3的商品编号和名称。备课纸适用班级:_P.使用实例阐述索引的执行过程SELECTgcode,gnameFROMgoodsWHEREcid=3;学生讨论既然索引可以提高访问速度,那么是否应该在数据表中的每一列上创建索引?----不是。索引本身需要占用空间,而且会增加维护的开销:当创建索引的列有更新时,索引也要相应地更新。而且,如果列中的重复值很多那么创建索引的效果很小。所以,只对需要的列创建索引。----采用B树方式存储索引归纳索引的优点:可以提高查询数据的速度;通过创建唯一索引,可以保证数据库表中每一行数据的唯一性;在实现数据的参照完整性方面,可以加速表和表之间的连接;在使用分组和排序子句进行数据查询时,可以减少分组和排序的时间;索引的缺点:创建和维护索引需要耗费时间,并且随着数据量的增加所耗费的时间也会增加;索引需要占用磁盘空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸;当对表中的数据进行增加、删除和修改操作时,索引也需要动态的维护,这会降低了数据的维护速度;备课纸适用班级:_P.2.索引的分类知识点介绍索引作为一种特殊的数据结构,由MySQL的存储引擎实现,不同存储引擎支持的索引类型不同。存储引擎InnoDB的索引实现采用BTREE(1)主键索引由PRIMARYKEY定义的一种特殊的唯一性索引,用于根据主键自身的唯一性标识每条记录,防止添加主键索引的字段值重复或为NULL。InnoDB存储引擎中数据的保存顺序与主键索引的顺序一致,这类索引也被称为“聚簇索引”,一张表只能有一个聚簇索引。(2)辅助索引索引名称说明普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值唯一索引唯一索引,索引列的值必须唯一,但允许有空值。全文索引全文索引是一种特殊类型的索引,它查找的是文本中的关键词,而不是直接比较索引中的值。全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建空间索引定义在空间数据类型上的索引类型,且索引字段不能为空创建和查看索引实例演示MySQL支持在表中的单列或多个列上创建索引。创建索引的方式可以使用图形工具和SQL语句实现。1.使用Navicat图形工具创建索引【例5.16】在Navicat中,为orders表的ocode列创建名为ix_ocode的普通索引。步骤略学习提示索引设计中的“索引类型”可以选择NORMAL、UNIQUE、FULLTEXT、SPATIAL四种选项,“索引方法”可以选择BTREE或HASH选项,由于InnoDB存储引擎只支持BTREE索引,因此本书选择的索引类型为BTREE类型。备课纸适用班级:_P.2.使用CREATETABLE语句创建索引语法格式CREATETABLE表名(字段定义1,字段定义2,……字段定义n,[UNIQUE|FULLTEXT|SPATIAL]INDEX|KEY索引名(字段名[(长度)][ASC|DESC])[VISIBLE|INVISIBLE]);

索引名:索引的名称,在表中索引名称必须唯一。

字段名:表示索引创建的列名,可以是多列;长度表示在字段左边多少个字符上创建索引。

UNIQUE表示唯一索引;FULLTEXT表示全文索引;SPATIAL:表示空间索引;

INDEX和KEY:表示索引关键字,只选其一即可;

ASC|DESC:分别表示升序排列和降序排列。

VISIBLE|INVISIBLE:MySQL8.0新增功能,标识索引的可见性。VISIBLE为可见,缺省该项时的默认值。当创建索引时设置为INVISIBLE时,则表示该索引为隐形索引,在数据查询时,优化器会忽略隐形索引。实例讲解【例5.17】创建goods_bak表,并在gcode列上创建名为ix_gcode的唯一索引。CREATETABLEgoods_bak(gidintNOTNULLPRIMARYKEYAUTO_INCREMENT,cidint,gcodevarchar(50)NOTNULL,gnamevarchar(100)NOTNULL,gpricedecimal(10,2),gsale_qtyint,ginfovarchar(20000),#商品详情UNIQUEINDEXix_gcode(gcode));多种方式创3.使用ALTERTABLE语句创建索引建索引备课纸适用班级:_P.语法格式ALTERTABLE表名ADD[UNIQUE|FULLTEXT|SPATIAL][INDEX|KEY]索引名(字段名[(长度)][ASC|DESC]))【例5.18】在users表的ulogin、uname和uemail三列上创建名为ix_users的复合索引。ALTERTABLEusersADDINDEXix_users(ulogin,uname,uemail);学习提示复合索引时,索引列的按照从左至右的顺序进行排序,只有在查询条件中使用了这些列的左边列时,索引才会被使用,也就是索引的使用要遵从最左前缀原则。多种方式创4.使用CREATEINDEX语句来创建索引建索引CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名ON表名(字段名[(长度)][ASC|DESC])其中,关键字ON后面的表名表示需建立索引的数据表。【例5.19】在goods_bak表的gname列上创建名为ix_gname的前缀索引,取gname列的前10个字符。CREATEINDEXix_gnameONgoods_bak(gname(10));【例5.20】在goods_bak表的ginfo列上创建名为ix_ft_ginfo的全文索引。CREATEFULLTEXTINDEXix_ft_ginfoONgoods_bak(ginfo);学习提示使用CREATEINDEX语句不能创建主键索引。5、查看索引信息掌握查看索可以通过SHOWINDEXFROM/SHOWKEYSFROM语句,查看指定表的索引信息。引的方法,以SHOW{INDEX|KEYS}FROM表名;掌握表的结【例5.21】使用SHOWINDEXFROM语句,查看goods_bak表的索引信息。构信息SHOWINDEXFROMgoods_bak;备课纸适用班级:_P.维护索引1.删除索引(1)使用ALTERTABLE语句删除索引。ALTERTABLE表名DROPINDEX索引名;【例5.22】删除goods_bak表上名为ix_ft_ginfo的索引。ALTERTABLEgoods_bakDROPINDEXix_ft_ginfo;(2)使用DROPINDEX语句删除索引DROPINDEX删除索引的语法格式如下。DROPINDEX索引名ON表名【例5.23】删除goods_bak表中名为ix_gname的索引。DROPINDEXix_gnameONgoods_bak;学习提示删除表中的列时,会删除与该列相关的索引信息。若待删除的列为索引的组成部分,则该列也会从索引中删除。若组成索引的所有列都被删除,若组成索引的所有列都被删除,则整个索引将被删除。2.修改索引一般情况下,随着数据的增册改会造成索引碎片的产生,当需要验证索引的有效性时,可修改索引为隐形索引。语法格式ALTERTABLE表名ALTERINDEX索引名[VISIBLE|INVISIBLE];实例演示【例5.24】设置goods_bak表中ix_gcode索引为隐形索引。ALTERTABLEgoods_bakALTERINDEXix_gcodeINVISIBLE;学习提示当使用索引不能有效提高查询效率时,一般建议删除原索引,再重建一个相同索引,从而提高查询性能。备课纸适用班级:_P.索引的设计原则(1)不要建立过多的索引。(2)为用于搜索、排序或分组的列创建索引,而用于显示输出的列则不宜创建索引。(3)使用唯一索引,并考虑数据列的基数。(4)(5)当创建索引的字符串过长时要考虑使用前缀索引,在保证高效查询的同时避免浪费空间。(6)利用最左前缀。任务3编写高效的数据查询任务场景:数据查询是应用系统中最频繁的操作,当要访问的数据量很大时,查询不可避免地需要筛选大量的数据,造成查询性能低下。要提高数据查询的性能,需要对查询语句进行必要的优化。优化数据访问学生讨论影响查询性能的因素有哪些?(1)查询不需要的记录(2)多表关联时返回全部列(3)总是取出全部列衡量查询开销的指标?(1)响应时间(2)扫描的行数和返回的行数1.向数据库请求不需要的数据知识点介绍(1)查询不需要的记录(2)多表关联时返回全部列(3)总是取出全部列备课纸适用班级:_P.2.查询的开销知识点(1)响应时间介绍(2)扫描的行数和返回的行数SQL的执行计划要编写高效的查询语句,需要了解查询语句执行情况,找出查询语句执行的瓶颈,从而优化查询。在MySQL中,EXPLAIN语句是查看查询优化器如何决定执行查询的主要方法,它提供的信息,有助于数据库程序员MySQL优化器如何工作,并生成查询计划。引出查询计划分析工具EXPLAIN语句的语法格式如下。EXPLAIN|DESCRIBE|DESC[ANALYZE]SELECT语句;

EXPLAIN|DESCRIBE|DESC:任选其一可以分析SELECT语句的执行情况,并且能够分析出所查询表的相关特征。DESCRIBE多用于查看表结构,这里建议使用EXPLAIN。

ANALYZE:该关键字为MySQL8.0新增。向用户详细显示查询语句执行过程中,查询的具体时间花费及原因。精讲【例5.25】使用EXPLAIN语句分析查询users_bg表的执行计划。EXPLAINSELECT*FROMusers_bgWHEREcard='HS395964JA39';通过实例展示说明查询计划参数的具体意义EXPLAIN语句用于对查询的类型、可能的键值、扫描的行数等进行了分析。该语句的输出总是具有相同的列,可变的是行数和每列中的内容。

id:用于标识执行计划中查询的序号,从1开始编号。

select_type:显示查询的类型,类型说明如下表备课纸适用班级:_P.

table:显示查询访问的表,可以是表的名称或是表的别名。若查询含有派生表时,值为derivedN;若含有子查询,值为subqueryN;若查询含有UNION时,值为unionN,N为生成的序号。

type:显示查询的关联类型,有无使用索引,也可以说是MySQL决定如何查找表中的行。类型说明如下表所示。关联类型从最优到最差的连接类型为system、const、eq_ref、ref、range、index和ALL。一般来说查询至少要达到range级别,否则就可能出现性能问题。

possible_keys:指搜索记录时可能使用哪个索引。若值为NULL,则没有相关的索引。

key:查询优化器从possible_keys中选择使用的索引

key_len:表示MySQL选择的索引字段按字节计算的长度

ref:表示使用哪个列或常数与key记录的索引一起来查询记录。

rows:查询优化器通过统计信息估算出的需要读取的行数。备课纸适用班级:_P.

filtered:估算表中符合某个条件的记录数的百分比。

Extra:表示MySQL在处理查询时的额外信息。【例5.26】使用EXPLAIN语句中ANALYZE关键字分析执行时间。EXPLAINANALYZESELECT*FROMusers_bgWHEREcard='HS395964JA39';查询执行的精确时间MySQL提供的profile功能会记录下每次查询需要的系统资源(如CPU、内存、磁盘IO等)和精确执行时间。【例5.27】查看【例5.26】查询执行的精确时间。解释+演示#开启profile功能SETprofiling=1;#执行查询语句SELECT*FROMusers_bgWHEREcard='HS395964JA39';#查看语句执行的精确时间SHOWprofiles\G;添加索引优化查询从【例5.26】的执行结果看,查询开销主要集中在表的扫描上。这时可以考虑在users_bg表的card列上建立索引,以优化查询性能。【例5.28】为表users_bg中card列建立索引,并再次查看执行计划和执行时间。通过实例精讲#建立索引CREATEINDEXix_cardONusers_bg(card);#查看执行计划EXPLAINSELECT*FROMusers_bgWHEREcard='HS395964JA39';#查看执行时间EXPLAINANALYZESELECT*FROMusers_bgWHEREcard='HS395964JA39';结果分析,对比通过查看执行计划和查看执行时间可以看出添加索引后,执行计划明显有优化,执行时间也明显缩短。Limit分页查询优化备课纸适用班级:_P.结合实际讲解LIMIT查询存在的问题当要进行分页操作时,通常会使用LIMIT子句实现。但是当分页操作要求偏移量非常大的时候(即翻页到非常靠后的页面),例如可能是Limit500000,10这样的查询,这时MySQL需要查询500010条记录然后只返回最后10条,前面的500000条记录都将被抛弃,代价就非常高。如果所有的页面被访问的频率相同,那么查询平均需要访问半个表的数据,查询效率则更低。引出解决方这时可先查询目标数据中的第一条,然后再获取大于等于这条数据的案id的数据范围。这种方法下要求查询的目标数据必须连续,即不带where条件的查询,因为where条件会筛选数据,导致数据失去连续性。【例5.29】查询users_bg表中第500001-500010行共10行数据。优化前分析从执行计划可以看到,查询优化器对该查询的估计采用全表扫描。优化策略该查询可以优化为,先按id>500000进行条件筛选,再取出大于500000的前10行记录。优化后从执行计划可以看到,查询进行了range索引范围扫描,扫描行数为474374。覆盖索引优化查询定义覆盖索引法是指尽SELECT的数据列用从索引中就能够取得,不必读取数据行,换句话说就是查询列要被所建立的索引覆盖,索引的字段不仅仅包含查询的列,还包含查询条件、排序等。备课纸适用班级:_P.实例+精讲【例5.30】查询users_bg表中的id和card列,并按card列升序排列,返回500001-500010之间的行。优化前结论分析从执行计划可以看到,查询优化器对该查询的估计采用range扫描,并使用外部文件排序。再查看执行的精确时间:mysql>SHOWprofiles\G;***************************10.row***************************Query_ID:10Duration:0.25617600Query:SELECTid,cardFROMusers_bgWHEREid>500000ORDERBYcardLIMIT1010rowsinset,1warning(0.00sec)查询执行的精确时间为0.256秒。优化策略该查询需要对card排序,因此在card列上建立索引可以有效地提高查询性能。为card列建立索引优化方案结论分析从执行计划可以看到,查询优化器估算使用index扫描,并选择了ix_card索引进行查询,同时消除了外部文件排序,这时只需查询索引树即可获取所有数据。再查看执行的精确时间:mysql>SHOWprofiles\G;***************************12.row***************************Query_ID:12Duration:0.00108500Query:SELECTid,cardFROMusers_bgWHEREid>500000ORDERBYcardLIMIT1012rowsinset,1warning(0.00sec)备课纸适用班级:_P.从结果可以看出,优化后的精确执行时间为0.001秒,而优化前为0.256秒,很明显,使用索引覆盖后,执行效率得到了显著提升。项目实战视图(1)使用Navicat图形工具创建用来描述商品基本信息的视图,包括商品ID、商品名称、商品价格和库存数量,视图名为view_goods。(2)使用SQL语句创建用来描述订单信息的视图,包括订单ID、会员姓名、商品名称和总金额等信息,视图名为view_orders。(3)分别使用SHOWTABLESTATUS语句和DESCRIBE/DESC语句查看(1)中创建的视图信息。(4)使用SHOWCREATEVIEW语句查看(2)中创建的视图的定义文本。(5)分别使用CREATEORREPLACEVIEW语句和ALTER语句修改(2)中创建的视图,修改后的视图信息包括订单ID、商品名称和购买数量。(6)删除(1)中创建的视图。(7)使用UPDAT

温馨提示

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

评论

0/150

提交评论