MySQL数据库基础与实例教程第8章
- 格式:ppt
- 大小:1.69 MB
- 文档页数:1
Section 1Exercise 8.1.1a)CREATE VIEW RichExec ASSELECT * FROM MovieExec WHERE netWorth >= 10000000;b)CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec, Studio WHERE MovieExec.cert# = Studio.presC#;c)CREATE VIEW ExecutiveStar (name, address, gender, birthdate, cert#, netWorth) AS SELECT , star.address, star.gender, star.birthdate, exec.cert#, WorthFROM MovieStar star, MovieExec exec WHERE = ANDstar.address = exec.address;Exercise 8.1.2a)SELECT name from ExecutiveStar WHERE gender = ‘f’;b)SELECT from RichExec, StudioPres where = ;c)SELECT from ExecutiveStar, StudioPresWHERE Worth >= 50000000 ANDStudioPres.cert# = RichExec.cert#;Section 2Exercise 8.2.1The views RichExec and StudioPres are updatable; however, the StudioPres view needs to be created with a subquery.CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExecWHERE MovieExec.cert# IN (SELECT presCt# from Studio);Exercise 8.2.2a) Yes, the view is updatable.b)CREATE TRIGGER DisneyComedyInsertINSTEAD OF INSERT ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWINSERT INTO Movies(title, year, length, studioName, genre)VALUES(NewRow.title, NewRow.year, NewYear.length, ‘Disney’, ‘comedy’);c)CREATE TRIGGER DisneyComedyUpdateINSTEAD OF UPDATE ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE Movies SET length NewRow.lengthWHERE title = NewRow.title AND year = NEWROW.year ANDstudionName = ‘Disney’ AND genre = ‘comedy’;Exercise 8.2.3a) No, the view is not updatable since it is constructed from two different relations.b)CREATE TRIGGER NewPCInsertINSTEAD OF INSERT ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROW(INSERT INTO Product VALUES(NewRow.maker, NewRow.model, ‘pc’))(INSERT INTO PC VALUES(NewRow.model, NewRow.speed, NewRow.ram, NewRow.hd, NewRow.price));c)CREATE TRIGGER NewPCUpdateINSTEAD OF UPDATE ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE PC SET price = NewPC.price where model = NewPC.model;d)CREATE TRIGGER NewPCDeleteINSTEAD OF DELETE ON NeePCREFERENCING OLD ROW AS OldRowFOR EACH ROW(DELETE FROM Product WHERE model = OldRow.model)(DELETE FROM PC where model = OldRow.model);Section 3Exercise 8.3.1a)CREATE INDEX NameIndex on Studio(name);b)CREATE INDEX AddressIndex on MovieExec(address);c)CREATE INDEX GenreIndex on Movies(genre, length);Section 4Exercise 8.4.1Exercise 8.4.2Q1 = SELECT * FROM Ships WHERE name = n;Q2 = SELECT * FROM Ships WHERE class = c;Q3 = SELECT * FROM Ships WHERE launched = y;I = InsertsIndexesNone Name Class Launched Name & Name & Class & ThreeSection 5Exercise 8.5.1Updates to movies that involves title or yearUPDATE MovieProd SET title = ‘newTitle’ where title=’oldTitle’ AND year = oldYear; UPDATE MovieProd SET year = newYear where title=’oldYitle’ AND year = oldYear;Update to MovieExec involving cert#DELETE FROM MovieProdWHERE (title, year) IN (SELECT title, yearFROM Movies, MovieExecWHERE cert# = oldCert# AND cert# = producerC#);INSERT INTO MovieProdSELECT title, year, nameFROM Movies, MovieExecWHERE cert# = newCert# AND cert# = producerC#;Exercise 8.5.2Insertions, deletions, and updates to the base tables Product and PC would require a modification of the materialized view.Insertions into Product with type equal to ‘pc’:INSERT INTO NewPCSELECT maker, model, speed, ram, hd, price FROM Product, PC WHEREProduct.model = newModel and Product.model = PC.model;Insertions into PC:INSERT INTO NewPCSELECT maker, ‘newModel’, ‘newSpeed’, ‘newRam’, ‘newHd’, ‘newPrice’FROM Product WHERE model = ‘newModel’;Deletions from Product with type equal to ‘pc’:DELETE FROM NewPC WHERE maker = ‘deletedMaker’ AND model=’deletedModel’; Deletions from PC:DELETE FROM NewPC WHERE model = ‘deletedModel’;Updates to PC:Update NewPC SET speed=PC.speed, ram=PC.ram, hd=PC.hd, price=PC.price FROM PC where model=pc.model;Update to the attribute ‘model’ needs to be treated as a delete and an insert. Updates to Product:Any changes to a Product tuple whose type is ‘pc’ need to be treated as a delete or an insert, or both.Exercise 8.5.3Modifications to the base tables that would require a modification to the materialized view: inserts and deletes from Ships, deletes from class, updates to a Class’ displacement. Deletions from Ship:UPDATE ShipStats SETdisplacement=((displacement * count) –(SELECT displacementFROM ClasssesWHERE class = ‘DeletedShipClass’)) / (count – 1),count = count – 1WHEREcountry = (SELECT country FROM C lasses WHERE class=’DeletedShipClass’); Insertions into Ship:Update ShipStat SETdisplacement=((displacement*count) +(SELECT displacement FROM ClassesWHERE class=’InsertedShipClass’)) / (count + 1),count = count + 1WHEREcountry = (SELECT country FROM Classes WHERE classes=’InsertedShipClass); Deletes from Classes:NumRowsDeleted = SELECT count(*) FROM ships WHERE class = ‘DeletedClass’; UPDATE ShipStats SETdisplacement = (displacement * count) - (DeletedClassDisplacement *NumRowsDeleted)) / (count – NumRowsDeleted),count = count – NumRowsDeletedWHERE country = ‘DeletedClassCountry’;Update to a Class’ displacement:N = SELECT count(*) FROM Ships where class = ‘UpdatedClass’;UPDATE ShipsStat SETdisplacement = ((displacement * count) + ((oldDisplacement – newDisplacement) * N))/countWHEREc ountry = ‘UpdatedClassCountry’;Exercise 8.5.4Queries that can be rewritten with the materialized view:Names of stars of movies produced by a certain producerSELECT starNameFROM StarsIn, Movies, MovieExecWHERE movieTitle = title AND movieYear = year AND producerC# = cert# AND name = ‘Max Bialystock’;Movies produced by a certain producerSELECT title, yearFROM Movies, MovieExecWhere produce rC# = cert# AND name = ‘George Lucas’;Names of producers that a certain star has worked withSELECT nameFROM Movies, MovieExec, StarsInWhere producerC#=cert# AND title=movieTitle AND year=movieYear AND starName=’Carrie Fisher’;The number of movies produced by given producerSELECT count(*)FROM Movies, MovieExecWHER E producerC#=cert# AND name = ‘George Lucas‘;Names of producers who also starred in their own moviesSELECT nameFROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND = starName;The number of stars that have starred in movies produced by a certain producer SELECT count(DISTINCT starName)FROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND n ame ‘George Lucas’;The number of movies produced by each producerSELECT name, count(*)FROM Movies, MovieExecWHERE producerC#=cert# GROUP BY name。
计算机与信息工程学院教案2015―2016学年度第1学期课程名称 MySQL数据库主讲教师孔祥盛授课对象 2017计算机科学与技术1、2班授课时间周一1、2、3、4授课地点 A12-0304 A14-0321教案(首页)教案编写时间:2.预留版面不够可另附页。
第1章数据库设计概述一、教学目的:【了解】:本章抛开MySQL讲解关系数据库设计的相关知识,以“选课系统”为例,讲解“选课系统”数据库的设计流程。
【掌握】:通过本章的学习,学生将具备一定的数据库设计能力二、教学重点:教学重点是E-R图的设计。
教学难点是关系数据库的设计。
三、教学难点:教学难点是关系数据库的设计。
四、教学进程(含教学内容、教学方法、辅助手段、师生互动、时间分配、板书设计、作业布置等):教学内容:本章首先介绍数据库概述,然后介绍数据库设计的相关知识,并以选课系统E-R图为例介绍关系数据库的设计过程。
通过本章的学习,读者可以了解关系数据库的设计流程。
教学过程设计:新课导入、案例教学、课堂讨论、作业讲评。
教学方法:以多媒体讲授为主,适当结合提问、设问、讨论等方法。
内容提要:1.1 数据库概述1.1.1 关系数据库管理系统1.1.2 关系数据库1.1.3 结构化查询语言SQL1.2 数据库设计的相关知识1.2.1 商业知识和沟通技能1.2.2 数据库设计辅助工具1.2.3 “选课系统”概述1.2.4 定义问题域1.2.5 编码规范1.3 E-R图1.3.1 实体和属性1.3.2 关系1.3.3 E-R图的设计原则1.4 关系数据库设计1.4.1 为每个实体建立一张数据库表1.4.2 为每张表定义一个主键1.4.3 增加外键表示一对多关系1.4.4 建立新表表示多对多关系1.4.5 为字段选择合适的数据类型1.4.6 定义约束(constraint)条件1.4.7 评价数据库表设计的质量1.4.8 使用规范化减少数据冗余1.4.9 避免数据经常发生变化4、课后小结和布置作业(5分钟)讨论与思考:1.数据库管理系统中常用的数学模型有哪些?2.您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象?3.通过本章知识的讲解,SQL与程序设计语言有什么关系?4.通过本章的学习,您了解的MySQL有哪些特点?5.通过本章的学习,您觉得数据库表与电子表格(例如Excel)有哪些区别?6.您所熟知的数据库设计辅助工具有哪些?您所熟知的模型、工具、技术有哪些?7.请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统”中的哪些商业问题?8.您所熟知的编码规范有哪些?9.您是如何理解“E-R图中实体间的关系是双向的”?能不能举个例子?10.E-R图中,什么是基数?什么是元?什么是关联?作业:1.根据本章的场景描述——“很多团购网站在网上对房源进行出租”的E-R图,请设计该场景描述的数据库表。
超详细的MySQL数据库入门教程一、什么是MySQL数据库MySQL数据库是一种开源的关系型数据库,是目前最受欢迎和广泛使用的数据库之一,因为它具备很高的可靠性、充分的功能性、完整的文档和良好的性能。
相对于其他数据库管理系统,MySQL最大的特点就是速度非常快,而且支持多种操作系统,如Unix、Windows和Linux等。
二、MySQL基本知识1. 数据库对象在MySQL中,可以使用固定的术语来描述所涉及的不同组件和对象。
其中最为常见的三个对象是:表、列和行。
表:用于存储数据的矩形结构,包括许多有序列和行的特定类型的数据。
列:表中具有独立类型、唯一名称且包含数据的一部分。
例如,一个表可以包含名为“id”、“name”和“age”的三列。
行:表中的一条记录,包含列的特定值。
2. SQL语句SQL(结构化查询语言)是与MySQL之间交流的常用语言,它是一种标准的语言,用于管理和操作数据库。
MySQL支持以下几类SQL语句:- 数据定义语言(DDL):创建、改变和删除数据库对象,如表、列、视图等。
- 数据操作语言(DML):增加、删除和修改表中的数据。
- 数据查询语言(DQL):基于查询语句从数据库中检索信息。
- 数据控制语言(DCL):用于控制访问和安全等方面的语句,如授权、撤销权限等。
3. MySQL命令行工具MySQL命令行工具是MySQL数据库最常用的命令行工具之一,它可以通过命令行窗口连接和操作MySQL数据库。
常用的MySQL命令行工具有两种:- MySQL命令行客户端:用于连接和操作MySQL数据库。
- MySQL命令行导入和导出工具:用于将数据从文件或其他数据格式导入到MySQL数据库中,并在不同的数据存储之间导出数据。
三、开启和关闭MySQL1. 开启MySQL首先,需要安装MySQL数据库,安装方式与其他应用程序的安装方式相同。
在安装成功后,用户可以通过两种方式来开启MySQL:- 通过命令行工具启动MySQL。
教案名称:MySQL数据库应用与管理项目化教程(微课版)教案章节:第一章MySQL数据库基础【教学目标】1. 理解数据库的基本概念,掌握数据库的基本操作。
2. 掌握MySQL数据库的安装与配置。
3. 掌握MySQL数据库的基本语法,包括数据类型、运算符、函数等。
【教学内容】1. 数据库的基本概念:数据库、数据库管理系统、数据库系统。
2. MySQL数据库的安装与配置:与安装、配置MySQL。
3. MySQL数据库的基本语法:数据类型、运算符、函数等。
【教学过程】1. 引入:讲解数据库的基本概念,引导学生理解数据库的重要性。
2. 讲解:讲解MySQL数据库的安装与配置步骤,演示安装与配置过程。
3. 实践:让学生动手实践,安装与配置MySQL数据库。
4. 讲解:讲解MySQL数据库的基本语法,包括数据类型、运算符、函数等。
5. 练习:让学生练习使用MySQL数据库的基本语法。
【教学评价】1. 课后作业:让学生完成课后练习,巩固所学知识。
2. 课堂练习:在课堂上让学生动手实践,及时发现问题并解决问题。
章节:第二章MySQL数据库设计与建模【教学目标】1. 掌握数据库设计的基本步骤,能够独立完成数据库设计。
2. 掌握实体-关系模型,能够将现实世界中的问题转化为实体-关系模型。
3. 掌握SQL语言,能够使用SQL语言创建、修改和查询数据库。
【教学内容】1. 数据库设计的基本步骤:需求分析、概念设计、逻辑设计、物理设计。
2. 实体-关系模型:实体、属性、关系、键。
3. SQL语言:创建、修改和查询数据库。
【教学过程】1. 引入:讲解数据库设计的重要性,引导学生理解数据库设计的作用。
2. 讲解:讲解数据库设计的基本步骤,演示数据库设计过程。
3. 实践:让学生动手实践,完成一个简单的数据库设计。
4. 讲解:讲解实体-关系模型,演示实体-关系模型的转化过程。
5. 练习:让学生练习使用SQL语言创建、修改和查询数据库。
《MySQL数据库应用》课程教学大纲一、课程名称及代码课程名称:MySQL数据库应用课程代码:XXXXXX二、适用教育层次及专业教育层次:高职专科适用专业:XXXX专业三、学分、学时学分数:4 学时数:64四、课程类型课程性质:专业基础课课程类别:理论+ 实践课五、先修课程名称及代码一门编程类课程(任何语言,如C++、Java或Python等)六、教学目标本课程的任务是使学生掌握关系数据库的基本原理和基础知识,能够正确使用MySQL开发环境创建和使用数据库,掌握数据结构设计、创建数据库和表、操纵数据和查询数据的技术,学会使用SQL语言编写视图、存储过程、存储函数、触发器等数据库对象,学会数据库安全管理和备份与恢复的方法,为提高学生专业素质和为继续学习,从事专业实践工作打下良好基础。
1.知识目标(1) 掌握关系数据库理论、数据库建模、数据结构设计技术。
(2) 掌握结构化查询语言SQL、查询优化、视图、索引、SQL编程等。
(3) 了解事务和并发控制原理。
(4) 掌握数据库备份和恢复技术。
(5) 掌握数据库安全和运维技术。
2.能力目标(1) 具有进行小型数据库项目的需求分析能力。
(2) 具有进行小型数据库项目的设计开发能力。
(3) 具有使用SQL语言进行数据定义、操纵、查询和编程的能力。
(4) 具有基本的数据库运维管理能力。
3.素质目标(1) 具有自学能力和探索精神、拥有求知欲望和学习兴趣(2) 具有分析问题、解决问题的能力。
(3) 具有建立实验假设、探索查阅知识的能力。
(4) 能够运用系统性思维分析和解决问题。
(5) 具有良好的变通能力、一定的创造性思维和批判性思维。
(6) 能负责地完成任务,具有严格的时间观念以及时间管理意识。
(7) 能了解本专业职业成长过程,并能做好个人的职业规划。
(8) 遵纪守法,爱岗敬业,具有良好的职业道德和职业形象。
七、教学内容及要求单元一了解数据库1.教学基本要求1)了解MySQL数据库管理系统,及其与其他数据库管理系统的区别。
第8章数据库优化本章要点:如何使用索引优化表如何选用合适的列类型如何优化SQL查询如何设定服务器参数关系数据库的世界是一个表与集合、表与集合上的运算占统治地位的世界。
数据库是一个表的集合,而表又是行和列的集合。
在发布一条SELECT 查询从表中进行检索行时,得到另一个行和列的集合。
这些都是一些抽象的概念,对于数据库系统用来操纵表中数据的基本表示没有多少参考价值。
另一个抽象概念是,表上的运算都同时进行;查询是一种概念性的集合运算,并且集合论中没有时间概念。
当然,现实世界是相当不同的。
数据库管理系统实现了抽象的概念,但是在实际的硬件范围内要受到实际的物理约束。
结果是,查询要花时间,有时要花很长的时间。
而人类很容易不耐烦,不喜欢等待,因此我们丢下了集合上的那些瞬间的数学运算的抽象世界去寻求加速查询的方法。
幸运的是,有几种加速运算的技术,可对表进行索引使数据库服务器查找行更快。
可考虑怎样充分利用这些索引来编写查询。
可编写影响服务器调度机制的查询,使来自多个客户机的查询协作得更好。
我们思考基本硬件怎样运行,以便想出怎样克服其物理约束对性能进行改善的方法。
在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|这些正是本章所要讨论的问题,其目标是优化数据库系统的性能,使其尽可能快地处理各种查询。
MySQL 已经相当快了,但即使是最快的数据库,在人的设计下还能运行得更快。
优化是一项复杂的任务,因为它最终需要对整个系统的理解。
当用你的系统/应用的小知识做一些局部优化是可能的时候,你越想让你的系统更优化,你必须知道它也越多。
因此,本章将试图解释并给出优化MySQL的不同方法的一些例子。
但是记住总是有某些(逐渐变难)是系统更快的方法留着去做。
8.1 索引的使用我们首先讨论索引,因为它是加快查询的最重要的工具。
还有其他加快查询的技术,但是最有效的莫过于恰当地使用索引了。
在MySQL 的邮件清单上,人们通常询问关于使查询更快的问题。