MySQL数据库基础与实例教程所有PPT_第1页
MySQL数据库基础与实例教程所有PPT_第2页
MySQL数据库基础与实例教程所有PPT_第3页
MySQL数据库基础与实例教程所有PPT_第4页
MySQL数据库基础与实例教程所有PPT_第5页
已阅读5页,还剩711页未读 继续免费阅读

下载本文档

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

文档简介

1、孔祥盛孔祥盛MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之资源说明资源说明1 12 23 34 4本书的特点本书的特点说在前面的话说在前面的话本书的提供的资源本书的提供的资源浅谈学习方法浅谈学习方法5 5解决问题方法解决问题方法6 6小结小结内容一览内容一览 教师教学好比导演拍摄一部电影,不仅需教师教学好比导演拍摄一部电影,不仅需要演员(学生)的配合,还需要要演员(学生)的配合,还需要挑选挑选好的剧好的剧本(书籍)。本(书籍)。 好的剧本可以让导演(教师)、所有演员好的剧本可以让导演(教师)、所有演员(学生)更顺利地融入剧情,不仅可以节省(学生)更顺利地融入剧情,不仅可以节

2、省导演(教师)的精力,缩短拍摄周期,节省导演(教师)的精力,缩短拍摄周期,节省拍摄成本,还可以让所有演员(学生)真正拍摄成本,还可以让所有演员(学生)真正地成为地成为“剧情剧情”中的主角。中的主角。1. 1. 说在前面的话说在前面的话 本书使用量身定制的案例全面讲解本书使用量身定制的案例全面讲解MySQL基础知识以及基础知识以及MySQL5.6新特性,新特性,InnoDB全全文检索、触发器、存储过程、函数、事务、文检索、触发器、存储过程、函数、事务、锁等概念,全部融入该案例。锁等概念,全部融入该案例。 本书尽量将抽象问题形象化、图形化,复本书尽量将抽象问题形象化、图形化,复杂问题简单化。即便读

3、者没有任何数据库基杂问题简单化。即便读者没有任何数据库基础,也丝毫不会影响数据库知识的学习。础,也丝毫不会影响数据库知识的学习。2. 2. 本书的特点本书的特点 曾经看到有一种极端的说法:中国不缺好曾经看到有一种极端的说法:中国不缺好的导演、好的演员,而是缺少好的剧本,对的导演、好的演员,而是缺少好的剧本,对于学习亦是如此。于学习亦是如此。 笔者一直认为:中国不缺乏好的导演(教笔者一直认为:中国不缺乏好的导演(教师),也不缺乏好的演员(学生),缺乏的师),也不缺乏好的演员(学生),缺乏的是能够让导演(教师)和演员(学生)快速是能够让导演(教师)和演员(学生)快速地融入剧情的剧本(教材)。地融入

4、剧情的剧本(教材)。1. 1. 说在前面的话说在前面的话 对于学习,亦是如此。学习数据库,尤其对于学习,亦是如此。学习数据库,尤其是学习是学习MySQL ,笔者试图编写这样一部,笔者试图编写这样一部“剧剧本本”:让教师、学生快速地融入:让教师、学生快速地融入“剧情剧情”,并且变并且变“学生被动学习学生被动学习”为为“学生主动学学生主动学习习”。 笔者相信:笔者相信:MySQL数据库基础与实例教数据库基础与实例教程程就是一本能够满足导演(教师)、演员就是一本能够满足导演(教师)、演员(学生)拍摄要求(教学要求)的剧本(教(学生)拍摄要求(教学要求)的剧本(教材)。材)。1. 1. 说在前面的话说

5、在前面的话 本书选择的案例易于理解、开发,非常适本书选择的案例易于理解、开发,非常适合教学。合教学。 本书使用该案例,通过本书使用该案例,通过10个章节的内容,个章节的内容,贯穿贯穿MySQL所有知识点,内容编排一气呵成,所有知识点,内容编排一气呵成,章节之间循序渐进,内容不冲突、不重复、章节之间循序渐进,内容不冲突、不重复、不矛盾。不矛盾。2. 2. 本书的特点本书的特点 为了能让读者将所有的时间、精力放在为了能让读者将所有的时间、精力放在MySQL知识点的学习上,本书使用尽可能少的知识点的学习上,本书使用尽可能少的数据库表讲解数据库表讲解MySQL的所有知识点。的所有知识点。 本书所使用的

6、表不超过本书所使用的表不超过10张,经常使用的表张,经常使用的表不超过不超过5张,使用张,使用5张表讲解张表讲解MySQL几乎所有的几乎所有的知识点,很大程度上可以减轻教师、学生的负知识点,很大程度上可以减轻教师、学生的负担。但同时也为笔者构思本书的知识框架带来担。但同时也为笔者构思本书的知识框架带来不少挑战,也希望读者理解笔者一片苦心。不少挑战,也希望读者理解笔者一片苦心。 2. 2. 本书的特点本书的特点 本书注重软件工程在数据库开发过程中的本书注重软件工程在数据库开发过程中的应用。数据库初学者通常存在致命的缺陷:应用。数据库初学者通常存在致命的缺陷:重开发,轻设计。开发出来的数据库往往成

7、重开发,轻设计。开发出来的数据库往往成了倒立的金字塔,头重脚轻。了倒立的金字塔,头重脚轻。 真正的数据库开发,首先强调的是设计,真正的数据库开发,首先强调的是设计,其次是开发。正因为如此,本书将数据库设其次是开发。正因为如此,本书将数据库设计的内容进行详细地讲解,并且在本书第一计的内容进行详细地讲解,并且在本书第一章进行了详细讲解。章进行了详细讲解。2. 2. 本书的特点本书的特点 撰写本书时,为了向读者还原笔者真实的撰写本书时,为了向读者还原笔者真实的开发过程,本书在内容组织上使用、保留了开发过程,本书在内容组织上使用、保留了一定数量的截图显示执行结果,有些截图至一定数量的截图显示执行结果,

8、有些截图至关重要,读者甚至必须从截图中得到一些结关重要,读者甚至必须从截图中得到一些结论。当然这些截图无疑增加了本书的版面,论。当然这些截图无疑增加了本书的版面,希望读者谅解。希望读者谅解。2. 2. 本书的特点本书的特点 截至目前,本书提供的资源都是截至目前,本书提供的资源都是免费免费资源资源其中包括:所有其中包括:所有安装程序安装程序、PPT课件课件、教教学大纲学大纲、MySQL源代码源代码、PHP源代码源代码。 其它资源(例如其它资源(例如教学计划教学计划、视频视频等)正等)正在开发中,根据需要,这些资源也将在开发中,根据需要,这些资源也将免费免费向向读者提供。读者也可以时刻读者提供。读

9、者也可以时刻关注本书资源更关注本书资源更新情况。新情况。3. 3. 本书提供的资源本书提供的资源 本书提供的资源可以到人民邮电出版社教本书提供的资源可以到人民邮电出版社教学服务与资源网下载。学服务与资源网下载。 出版社网址:出版社网址: http:/ 另外,还可以通过百度网盘下载。另外,还可以通过百度网盘下载。 百度网盘网址:百度网盘网址: http:/ 3. 本书提供的资源本书提供的资源浅谈学习方法浅谈学习方法安装本书提供的软件安装本书提供的软件按照章节顺序学习、预习按照章节顺序学习、预习仔细观看老师讲解、操作仔细观看老师讲解、操作课后翻看教科书课后翻看教科书自己上机操作自己上机操作“善待善

10、待”本书资源本书资源4. 4. 浅谈学习方法浅谈学习方法 如果如果SQL代码运行出错,首先试图在书中代码运行出错,首先试图在书中找到答案;找到答案; 如果书中没有答案,建议通过通过百度知如果书中没有答案,建议通过通过百度知道、谷歌搜索引擎找到问题所在(意在锻炼道、谷歌搜索引擎找到问题所在(意在锻炼学生的自学能力、自己解决问题的能力);学生的自学能力、自己解决问题的能力); 如果问题依旧没有解决,首先考虑与其他如果问题依旧没有解决,首先考虑与其他同学协商解决(意在锻炼协同能力),直至同学协商解决(意在锻炼协同能力),直至请教老师,解决该问题。请教老师,解决该问题。5. 5. 解决问题方法解决问题

11、方法 个人观点个人观点1:因为遗忘,学会自学比学会知:因为遗忘,学会自学比学会知识更重要,会学知识比学会知识更重要。识更重要,会学知识比学会知识更重要。 “学会知识学会知识” 层次较低。即学会了某个具层次较低。即学会了某个具体的知识。体的知识。 “会学知识会学知识”层次较高。意在强调自学层次较高。意在强调自学能力。能力。5. 5. 解决问题方法解决问题方法 个人观点个人观点2:学会如何找到知识比掌握知识:学会如何找到知识比掌握知识细节更重要。细节更重要。 我们遇到问题时,我们往往不是第一个发我们遇到问题时,我们往往不是第一个发现该问题的人!更不是第一个解决该问题的现该问题的人!更不是第一个解决

12、该问题的人!人! 记住:我们往往不是第一个吃螃蟹的人!记住:我们往往不是第一个吃螃蟹的人!要学会使用搜索引擎解决问题。要学会使用搜索引擎解决问题。5. 5. 解决问题方法解决问题方法6. 6. 小结小结孔祥盛孔祥盛MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之数据库设计概述数据库设计概述1 12 23 3 本章抛开本章抛开MySQLMySQL讲讲解关系数据库设计的解关系数据库设计的相关知识,以相关知识,以“选课选课系统系统”为例,讲解为例,讲解“选课系统选课系统”数据库数据库的设计流程。的设计流程。 4 4内容一览内容一览 数据库设计的相关知识数据库设计的相关知识数据库概述

13、数据库概述 E-RE-R图图关系数据库设计关系数据库设计1 12 23 3 简单地说:数简单地说:数据库(据库(DatabaseDatabase或或DBDB)是存储、管理数据的容是存储、管理数据的容器;器; 严格地说:数据严格地说:数据库是库是“按照某种数据结按照某种数据结构对数据进行组织、存构对数据进行组织、存储和管理的容器储和管理的容器”。 总结:数据永远是总结:数据永远是数据库的核心。数据库的核心。关系数据库关系数据库关系数据库管理系统关系数据库管理系统结构化查询语言结构化查询语言SQLSQL1.1 1.1 数据库概述数据库概述 1.1.1 1.1.1 关系数据库管理系统关系数据库管理系

14、统 通过通过“数据库管理系统数据库管理系统”,数据库用,数据库用户可以轻松地实现数据库容器中各种数据库户可以轻松地实现数据库容器中各种数据库对象的访问(增、删、改、查等操作),并对象的访问(增、删、改、查等操作),并可以轻松地完成数据库的维护工作(备份、可以轻松地完成数据库的维护工作(备份、恢复、修复等操作)恢复、修复等操作) 数据库用户无法直接通过操作系统获取数据库用户无法直接通过操作系统获取数据库文件中的具体内容;数据库文件中的具体内容; 数据库管理系统通过调用操作系统的进数据库管理系统通过调用操作系统的进程管理、内存管理、设备管理以及文件管理程管理、内存管理、设备管理以及文件管理等服务,

15、为数据库用户提供管理、控制数据等服务,为数据库用户提供管理、控制数据库容器中各种数据库对象、数据库文件的接库容器中各种数据库对象、数据库文件的接口。口。1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统添加标题添加标题添添加加标标题题层次模型层次模型面向对象模型面向对象模型网状模型网状模型关系模型关系模型数据库管理数据库管理系统常用的系统常用的数学模型数学模型 添加标题添加标题 基于基于“关系模型关系模型”的数据库管理系统称为关系数据库的数据库管理系统称为关系数据库管理系统(简称为管理系统(简称为RDBMSRDBMS)。随着关系数据库管理系统的)。随着关系数据库管理系统的日臻完善,目

16、前关系数据库管理系统已占据主导地位。日臻完善,目前关系数据库管理系统已占据主导地位。1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统https:/ 2月数据库流行度排行榜月数据库流行度排行榜截至目前,截至目前,MySQLMySQL已经成功逆袭!已经成功逆袭!1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统20142014年年3 3月数据库流行度排行榜月数据库流行度排行榜1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统20142014年年4 4月数据库流行度排行榜月数据库流行度排行榜1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统开源开源MySQL

17、MySQL源代源代码免费下载码免费下载简单简单MySQLMySQL体积体积小小,便于安,便于安装装MySQLMySQL性能性能足够与商业足够与商业数据库媲美数据库媲美功能强大功能强大MySQLMySQL提供提供的功能足够的功能足够与商业数据与商业数据库媲美库媲美逆逆袭袭原原因因性能优越性能优越1.1.1 1.1.1 关系数据库管理系统关系数据库管理系统 关系数据库中所谓的关系数据库中所谓的“关系关系”,实质上是一,实质上是一张二维表。请看下面的课程表。张二维表。请看下面的课程表。字段名(列名)字段名(列名)第第1 1个字段(列)个字段(列)第第1 1条记录条记录第第2 2条记录条记录第第3 3

18、条记录条记录第第4 4条记录条记录第第5 5条记录条记录第第3 3个字段(列)个字段(列)第第2 2个字段(列)个字段(列)第第4 4个字段(列)个字段(列)1.1.2 1.1.2 关系数据库关系数据库 作为数据库中最为重要的数据库对象,数据作为数据库中最为重要的数据库对象,数据库表的设计过程库表的设计过程并非一蹴而就并非一蹴而就,上述课程表根本,上述课程表根本无法满足无法满足“选课系统选课系统”的功能需求。的功能需求。 事实上,数据库表的设计过程并非如此简单,事实上,数据库表的设计过程并非如此简单,本章的重点就是讨论如何设计结构良好的数据库本章的重点就是讨论如何设计结构良好的数据库表。表。1

19、.1.2 1.1.2 关系数据库关系数据库 结构化查询语言(结构化查询语言(Structured Query Structured Query LanguageLanguage或简称为或简称为SQLSQL)是一种应用最为广泛的)是一种应用最为广泛的关系数据库语言,该语言定义了操作关系数据库关系数据库语言,该语言定义了操作关系数据库的标准语法,几乎所有的关系数据库管理系统都的标准语法,几乎所有的关系数据库管理系统都支持支持SQLSQL。1.1.3 1.1.3 结构化查询语言结构化查询语言SQL SQL 学习重点学习重点1 12 23 3 数据库设计是一个数据库设计是一个“系系统工程统工程”,要求

20、数据库开发,要求数据库开发人员:人员:熟悉熟悉“商业领域商业领域”的商的商业知识。业知识。利用利用“管理学管理学”的知识的知识与其他开发人员进行有效沟与其他开发人员进行有效沟通。通。掌握一些数据库设计辅掌握一些数据库设计辅助工具。助工具。数据库设计辅助工具数据库设计辅助工具商业知识和沟通技能商业知识和沟通技能“选课系统选课系统”概述概述4 45 5定义问题域定义问题域编码规范编码规范1.2 1.2 数据库设计的相关知识数据库设计的相关知识 数据库技术解决的是数据库技术解决的是“商业领域商业领域”的的“商业问题商业问题”。 数据库开发人员有必要成为该数据库开发人员有必要成为该“商业领商业领域域”

21、的专家,与其他开发人员(包括最终用的专家,与其他开发人员(包括最终用户)一起工作,继而使用数据库技术解决该户)一起工作,继而使用数据库技术解决该“商业领域商业领域”的的“商业问题商业问题” 。1.2.1 1.2.1 商业知识和沟通技能商业知识和沟通技能1.2.2 1.2.2 数据库设计辅助工具数据库设计辅助工具 工具工具模型模型技术技术业务模型业务模型面向对象分析和设计技术面向对象分析和设计技术结构化分析和设计技术结构化分析和设计技术软件测试技术软件测试技术关系数据库设计技术关系数据库设计技术 ErwinErwinPowerDesignerPowerDesignerRational RoseR

22、ational RoseVisio Visio VC+6.0VC+6.0Visual studioVisual studioEclipseEclipseNetBeans NetBeans 单元测试工具单元测试工具功能测试工具功能测试工具性能测试性能测试 工具工具程序流程图程序流程图 DFD DFD 时序图时序图 状态图状态图CASECASE工具工具IDEIDE工具工具测试工具测试工具数据模型数据模型类图类图E-RE-R图图 限于篇幅,在不限于篇幅,在不影响影响“选课系统选课系统”核核心功能的基础上,适心功能的基础上,适当地对该系统进行当地对该系统进行“定制定制”、“扩展扩展”以及以及“瘦身瘦身

23、”。 1.2.3 1.2.3 “选课系统选课系统”概述概述 定义问题域是数定义问题域是数据库设计过程中重要据库设计过程中重要的活动,它的目标是的活动,它的目标是准确定义要解决的商准确定义要解决的商业问题。业问题。 “ “选课系统选课系统”亟亟需解决的需解决的“商业商业”问问题有哪些?题有哪些?1.2.4 1.2.4 定义问题域定义问题域 在编程的时候会考虑代码的可读性吗?你觉在编程的时候会考虑代码的可读性吗?你觉得代码可读性是需要考虑的问题吗?得代码可读性是需要考虑的问题吗?1. 1. 代码不仅要自己能读懂,还要别人也能看懂?代码不仅要自己能读懂,还要别人也能看懂?2. 2. 尽量做到可读,但

24、时间紧任务重的时候就顾尽量做到可读,但时间紧任务重的时候就顾不上了?不上了?3. 3. 代码只要自己能读懂就可以了?代码只要自己能读懂就可以了?4. 4. 代码写完就完了,不用管以后是否能读懂?代码写完就完了,不用管以后是否能读懂?5. 5. 不知道,没有想过这个问题?不知道,没有想过这个问题?1.2.5 1.2.5 编码规范编码规范 请记住:尽最大请记住:尽最大努力把方便留给别努力把方便留给别人和将来的自己。人和将来的自己。 建议大家遵循本建议大家遵循本书罗列的常用编程书罗列的常用编程规范!规范!1 12 23 3关系关系实体和属性实体和属性E-RE-R图的设计原则图的设计原则 E-R图设计

25、的质量直接决定了关系数据库设计的质量。 1.3 E-R1.3 E-R图图0,n0,n选修包含学生学号姓名联系方式.班级班级名所属院系教师工号姓名联系方式.课程课程名人数上限课程描述状态.选修成绩选修时间. 实体不是某一个具实体不是某一个具体事物,而是某一种类体事物,而是某一种类别所有事物的统称。别所有事物的统称。 属性通常用于表示属性通常用于表示实体的某种特征,也可实体的某种特征,也可以使用属性表示实体间以使用属性表示实体间关系的特征关系的特征实体实体属性属性属性属性.1 实体和属性实体和属性0,n0,n选修包含学生学号姓名联系方式.班级班级名所属院系教师工号姓名联系方式.课程

26、课程名人数上限课程描述状态.选修成绩选修时间. E-R E-R图中的关系用于图中的关系用于表示实体间存在的联系,表示实体间存在的联系,在在E-RE-R图中,实体间的关图中,实体间的关系通常使用一条线段表系通常使用一条线段表示。示。 E-R E-R图中实体间的关图中实体间的关系是双向的。系是双向的。关系关系关系关系.2 关系关系0,n0,n选修包含学生学号姓名联系方式.班级班级名所属院系教师工号姓名联系方式.课程课程名人数上限课程描述状态.选修成绩选修时间. 基数表示一个实体基数表示一个实体到另一个实体之间关联到另一个实体之间关联的数目,基数是针对关的数目,基数是针对关系之间的某

27、个方向提出系之间的某个方向提出的概念,基数可以是一的概念,基数可以是一个取值范围,也可以是个取值范围,也可以是某个具体数值某个具体数值基数基数可选可选基数基数强制强制.2 关系关系0,n0,n选修包含学生学号姓名联系方式.班级班级名所属院系教师工号姓名联系方式.课程课程名人数上限课程描述状态.选修成绩选修时间. 元表示关系所关联元表示关系所关联的实体个数的实体个数。二元关系二元关系二元关系二元关系夫妻人身份证号姓名性别.一元关系一元关系.2 关系关系0,n0,n选修包含学生学号姓名联系方式.班级班级名所属院系教师工号姓名联系方式.课程课程名人数上限课程描述状态.

28、选修成绩选修时间. 使用关联使用关联(AssociationAssociation)表示实体)表示实体间关系的间关系的属性。属性。关联关联0,10,1人身份证号姓名性别.夫妻登记时间关联关联.2 关系关系1 12 23 3实体是一个单独的个体,不能存实体是一个单独的个体,不能存在于另一个实体中,成为另一个在于另一个实体中,成为另一个实体的属性。实体的属性。属性应该存在于、且只存在于某属性应该存在于、且只存在于某一个地方(实体或者关联)。一个地方(实体或者关联)。同一个实体在同一个同一个实体在同一个E-RE-R图内,仅图内,仅出现一次。出现一次。 数据库开发人数据库开发人员通常采

29、用员通常采用“一事一事一地一地”的原则从系的原则从系统的功能描述中抽统的功能描述中抽象出来象出来E-RE-R图。图。1.3.3 E-R1.3.3 E-R图的设计原则图的设计原则1 1为为E-RE-R图中的每个实体建立一张表。图中的每个实体建立一张表。2 2为每张表定义一个主键(如果需要,可以向表为每张表定义一个主键(如果需要,可以向表添加一个没有实际意义的字段作为该表的主键)添加一个没有实际意义的字段作为该表的主键)3 3增加外键表示一对多关系。增加外键表示一对多关系。4 4建立新表表示多对多关系。建立新表表示多对多关系。5 5为字段选择合适的数据类型。为字段选择合适的数据类型。6 6定义约束

30、条件(如果需要)。定义约束条件(如果需要)。7 7评价关系的质量,并进行必要的改进。评价关系的质量,并进行必要的改进。1.4 1.4 关系数据库设计关系数据库设计student(student(student_nostudent_no,student_name,student_contact,student_name,student_contact)course(course(course_namecourse_name,up_limit,description,status),up_limit,description,status)teacher(teacher(teacher_noteac

31、her_no,teacher_name,teacher_contact),teacher_name,teacher_contact)classes(classes(class_nameclass_name,department_name),department_name)0,n0,nchooseincludeclassesclass_namedepartment_namestudentstudent_nostudent_namestudent_contact.teacherteacher_noteacher_nameteacher_contact.coursecourse_nameup_lim

32、itdescriptionstatus.choosescorechoose_time1.4.1 1.4.1 为每个实体建立一张数据库表为每个实体建立一张数据库表关键字(关键字(keykey):用以唯一标识表中的每行记录。):用以唯一标识表中的每行记录。主键(主键(Primary KeyPrimary Key):在所有的关键字中选择):在所有的关键字中选择一个关键字,作为该表的主关键字,简称主键。一个关键字,作为该表的主关键字,简称主键。1.4.2 1.4.2 为每张表定义一个主键为每张表定义一个主键主键有以下两个特征:主键有以下两个特征: (1 1)表的主键可以是一个字段,也可以是多)表的主键

33、可以是一个字段,也可以是多个字段的组合(这种情况称为复合主键)。个字段的组合(这种情况称为复合主键)。 (2 2)表中主键的值具有唯一性且不能取空值)表中主键的值具有唯一性且不能取空值(NULLNULL);当表中的主键由多个字段构成时,每);当表中的主键由多个字段构成时,每个字段的值都不能取个字段的值都不能取NULLNULL。 主键设计技巧,请参看本书内容。主键设计技巧,请参看本书内容。1.4.2 1.4.2 为每张表定义一个主键为每张表定义一个主键student(student(student_nostudent_no,student_name,student_contact,student

34、_name,student_contact)course(course(course_nocourse_no,course_name,up_limit,description,status),course_name,up_limit,description,status)teacher(teacher(teacher_noteacher_no,teacher_name,teacher_contact),teacher_name,teacher_contact)classes(classes(class_noclass_no,class_name,department_name),class_n

35、ame,department_name)0,n0,nchooseincludeclassesclass_namedepartment_namestudentstudent_nostudent_namestudent_contact.teacherteacher_noteacher_nameteacher_contact.coursecourse_nameup_limitdescriptionstatus.choosescorechoose_time1.4.2 1.4.2 为每张表定义一个主键为每张表定义一个主键 外键(外键(Foreign KeyForeign Key):如果表):如果表A A

36、中的一个字中的一个字段段a a对应于表对应于表B B的主键的主键b b,则字段,则字段a a称为表称为表A A的外键,的外键,此时存储在表此时存储在表A A中字段中字段a a的值,要么是的值,要么是NULLNULL,要么,要么是来自于表是来自于表B B主键主键b b的值。的值。1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系 情形一:如果实体间的关系为一对多关系,情形一:如果实体间的关系为一对多关系,则需要将则需要将“一一”端实体的主键放到端实体的主键放到“多多”端实体端实体中,然后作为中,然后作为“多多”端实体的外键,通过该外键端实体的外键,通过该外键即可表示实体间的一对

37、多关系。即可表示实体间的一对多关系。1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系 让学生记住所在班级,让学生记住所在班级,远比班级远比班级“记住记住”所有学生所有学生容易的多容易的多 。1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系 情形二:实体间的一对一关系,可以看成一情形二:实体间的一对一关系,可以看成一种特殊的一对多关系:将种特殊的一对多关系:将“一一”端实体的主键放端实体的主键放到另到另“一一”端的实体中,并作为另端的实体中,并作为另“一一”端的实端的实体的外键,然后将外键定义为唯一性约束体的外键,然后将外键定义为唯一性约束(Unique

38、ConstraintUnique Constraint)。)。1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系PKPK1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系PKPK后的方案:后的方案:student(student(student_nostudent_no,student_name,student_name,student_contact,class_no)student_contact,class_no)course(course(course_nocourse_no,course_name,up_limit,course_name,up_l

39、imit,description,status,description,status,teacher_noteacher_no) )teacher(teacher(teacher_noteacher_no,teacher_name,teacher_contact),teacher_name,teacher_contact)classes(classes(class_noclass_no,class_name,department_name),class_name,department_name)1.4.3 1.4.3 增加外键表示一对多关系增加外键表示一对多关系 情形三:如果两个实体间的关系为

40、多对多关情形三:如果两个实体间的关系为多对多关系,则需要添加新表表示该多对多关系,然后将系,则需要添加新表表示该多对多关系,然后将该关系涉及到的实体的该关系涉及到的实体的“主键主键”分别放入到新表分别放入到新表中(作为新表的外键),并将关系自身的属性放中(作为新表的外键),并将关系自身的属性放入到新表中作为新表的字段。入到新表中作为新表的字段。1.4.4 1.4.4 建立新表表示多对多关系建立新表表示多对多关系teacher(teacher_no,teacher_name,teacher(teacher_no,teacher_name,teacher_contact)teacher_conta

41、ct)classes(class_no,class_name,department_name)classes(class_no,class_name,department_name)course(course_no,course_name,up_limit,course(course_no,course_name,up_limit,description,status,teacher_no)description,status,teacher_no)student(student_no,student_name,student(student_no,student_name,student_c

42、ontact,class_no)student_contact,class_no)choose(choose_no,student_no,course_no,score,chchoose(choose_no,student_no,course_no,score,choose_time)oose_time)1.4.4 1.4.4 建立新表表示多对多关系建立新表表示多对多关系1.4.4 1.4.4 建立新表表示多对多关系建立新表表示多对多关系1.4.5 1.4.5 为字段选择合适的数据类型为字段选择合适的数据类型常用的约束条件有常用的约束条件有6 6种:种: 主键(主键(Primary KeyPr

43、imary Key)约束)约束 外键(外键(Foreign KeyForeign Key)约束)约束 唯一性(唯一性(UniqueUnique)约束)约束 默认值(默认值(DefaultDefault)约束)约束 非空(非空(Not NULLNot NULL)约束)约束 检查(检查(CheckCheck)约束。)约束。1.4.6 1.4.6 定义约束(定义约束(ConstraintConstraint)条件)条件设计数据库时,有两个不争的事实。设计数据库时,有两个不争的事实。数据库中冗余的数据需要额外的维护,因此数据库中冗余的数据需要额外的维护,因此质量好的一套表应该尽量质量好的一套表应该尽量

44、“减少冗余数据减少冗余数据”。数据库中经常发生变化的数据需要额外的维数据库中经常发生变化的数据需要额外的维护,因此质量好的一套表应该尽量护,因此质量好的一套表应该尽量“避免数据经避免数据经常发生变化常发生变化”。1.4.7 1.4.7 评价数据库表设计的质量评价数据库表设计的质量 冗余的数据需要额外的维护,并且容易导致冗余的数据需要额外的维护,并且容易导致“数据不一致数据不一致”、“插入异常插入异常”以及以及“删除异常删除异常”等问题的发生。等问题的发生。1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余场景一:插入异常。场景一:插入异常。场景二:修改复杂。场景二:修改复杂。

45、场景三:删除异常。场景三:删除异常。1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余 规范化是通过最小化数据冗余来提升数据库规范化是通过最小化数据冗余来提升数据库设计质量的过程,规范化是基于函数依赖以及一设计质量的过程,规范化是基于函数依赖以及一系列范式定义的,最为常用的是第一范式系列范式定义的,最为常用的是第一范式(1NF1NF)、第二范式()、第二范式(2NF2NF)和第三范式()和第三范式(3NF3NF)。)。1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余 函数依赖:一张表内两个字段值之间的一一函数依赖:一张表内两个字段值之间的一一对应关系称为函

46、数依赖。对应关系称为函数依赖。 第一范式:如果一张表内同类字段不重复出第一范式:如果一张表内同类字段不重复出现,该表就满足第一范式的要求。现,该表就满足第一范式的要求。1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余第一范式第一范式1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余 第二范式:一张表在满足第一范式的基础上,第二范式:一张表在满足第一范式的基础上,如果每个如果每个“非关键字非关键字”字段字段“仅仅仅仅”函数依赖于函数依赖于主键,那么该表满足第二范式的要求。主键,那么该表满足第二范式的要求。1.4.8 1.4.8 使用规范化减少数据冗余使用规范

47、化减少数据冗余第二范式第二范式1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余 第三范式:如果一张表满足第二范式的要求,第三范式:如果一张表满足第二范式的要求,并且不存在并且不存在“非关键字非关键字”字段函数依赖于任何其字段函数依赖于任何其他他“非关键字非关键字”字段,那么该表满足第三范式的字段,那么该表满足第三范式的要求。要求。1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余第三范式第三范式1.4.8 1.4.8 使用规范化减少数据冗余使用规范化减少数据冗余 统计学生的个人资料时,如果读者是一名数统计学生的个人资料时,如果读者是一名数据库开发人员,应该

48、让学生上报年龄信息,还是据库开发人员,应该让学生上报年龄信息,还是让学生上报出生日期?让学生上报出生日期? 如何确保每一门课程选报学生的人数,不超如何确保每一门课程选报学生的人数,不超过人数上限?过人数上限? 1.4.9 1.4.9 避免数据经常发生变化避免数据经常发生变化方案一:方案一:course(course_no, course_no,course_name,course(course_no, course_no,course_name,up_limit,description,status,teacher_no, up_limit,description,status,teacher

49、_no, availableavailable) )方案二:数据库表无需进行任何更改。方案二:数据库表无需进行任何更改。 1.4.9 1.4.9 避免数据经常发生变化避免数据经常发生变化任务任务1 1:描述:描述“选课系统选课系统”的问题域。的问题域。任务任务2 2:将本书图:将本书图1-71-7中中“团购网站、顾客以团购网站、顾客以及房源之间的三元关系表示方法及房源之间的三元关系表示方法 ”E-RE-R图转图转化为关系(模式)。化为关系(模式)。任务任务3 3:使用笔纸或者:使用笔纸或者wordword绘图工具,绘制绘图工具,绘制“选课系统选课系统”的的E-RE-R图。图。任务任务4 4:将

50、:将“选课系统选课系统”的的E-RE-R图转化为关系图转化为关系(模式)。(模式)。任务布置任务布置Thanks孔祥盛孔祥盛MySQLMySQL数据库基础与实例教程数据库基础与实例教程 之之MySQLMySQL基础知识基础知识1 12 23 3 通过本章的学习,通过本章的学习,读者可以掌握一些常读者可以掌握一些常用的用的MySQL命令,从命令,从而对而对MySQL数据库进数据库进行一些简单的管理。行一些简单的管理。 本章知识点较为繁本章知识点较为繁杂,希望保持一份儿杂,希望保持一份儿耐心。耐心。4 4字符集以及字符序设置字符集以及字符序设置MySQL概述概述 MySQL数据库管理数据库管理My

51、SQL表管理表管理5 5系统变量系统变量内容一览内容一览 1 12 23 3MySQL由瑞典由瑞典MySQL AB公司开发。公司开发。2008年年1月月MySQL被美国被美国的的SUN公司收购。公司收购。2009年年4月月SUN公司又被公司又被美国的甲骨文(美国的甲骨文(Oracle)公司收购。公司收购。MySQL服务的安装服务的安装MySQL的特点的特点MySQL服务的配置服务的配置45启动与停止启动与停止MySQL服务服务MySQL配置文件配置文件2.1 MySQL2.1 MySQL概述概述 6 67 7MySQLMySQL由瑞典由瑞典MySQL ABMySQL AB公公司开发。司开发。2

52、0082008年年1 1月月MySQLMySQL被美国被美国的的SUNSUN公司收购。公司收购。20092009年年4 4月月SUNSUN公司又被公司又被美国的甲骨文(美国的甲骨文(OracleOracle)公司收购。公司收购。连接连接MySQLMySQL服务器关系数据库服务器关系数据库MySQLMySQL客户机客户机2.1 MySQL2.1 MySQL概述概述 MySQLMySQL是一个单进程多线程、支持多用是一个单进程多线程、支持多用户、基于客户机户、基于客户机/ /服务器(服务器(Client/ServerClient/Server简简称称C/SC/S)的关系数据库管理系统)的关系数据库

53、管理系统 。 性能高效性能高效 跨平台支持跨平台支持 简单易用简单易用 开源开源 支持多用户支持多用户2.1.1 MySQL2.1.1 MySQL特点特点MySQL的使用流程的使用流程 2.1.1 MySQL2.1.1 MySQL特点特点MySQL其他概念(请参看本书内容):其他概念(请参看本书内容): MySQL服务服务 MySQL服务实例服务实例 MySQL服务器服务器 端口号端口号2.1.1 MySQL2.1.1 MySQL特点特点MySQLMySQL服务的安装(请参看本书内容)。服务的安装(请参看本书内容)。建议自学,并上机操作。建议自学,并上机操作。注意:本书使用的注意:本书使用的M

54、ySQLMySQL为为5.65.6版本。版本。可以到可以到本书指定的网址下载本书指定的网址下载MySQLMySQL图形化安装包图形化安装包mysql-5.6.5-m8-win32.msimysql-5.6.5-m8-win32.msi。 2.1.2 MySQL2.1.2 MySQL服务的安装服务的安装MySQLMySQL服务的配置(请参看本书内容)。服务的配置(请参看本书内容)。建议自学,并上机操作。建议自学,并上机操作。配置过程中的其他知识点:配置过程中的其他知识点: OLAP OLAP与与OLTPOLTP Enable Strict Mode Enable Strict Mode选项选项

55、字符集字符集/ /字符序字符序 MySQL MySQL超级管理员超级管理员rootroot账户账户 my.ini my.ini配置文件中配置文件中 2.1.3 MySQL2.1.3 MySQL服务的配置服务的配置MySQL服务的启动与停止(请参看本书内服务的启动与停止(请参看本书内容)。容)。建议自学,并上机操作。建议自学,并上机操作。2.1.4 2.1.4 启动与停止启动与停止MySQLMySQL服务服务my.ini配置文件包含了多种参数选项组,每个配置文件包含了多种参数选项组,每个参数选项组通过参数选项组通过“ ”指定,每个参数选项组指定,每个参数选项组可以配置多个参数信息。通常情况下,每

56、个可以配置多个参数信息。通常情况下,每个参数遵循参数遵循“参数名参数名=参数值参数值”这种配置格式,参这种配置格式,参数名一般是小写字母,参数名大小写敏感。数名一般是小写字母,参数名大小写敏感。常用的参数选项组有常用的参数选项组有“client”、“mysql”以以及及“mysqld”参数选项组。参数选项组。2.1.5 MySQL2.1.5 MySQL配置文件配置文件client参数选项组参数选项组: 配置了配置了MySQL自带的自带的MySQL5.6 命令行命令行窗口可以读取的参数信息。窗口可以读取的参数信息。 常用的参数是常用的参数是port(默认值是(默认值是3306)。 修改该修改该p

57、ort值会导致新打开的值会导致新打开的MySQL5.6 命令行窗口无法连接命令行窗口无法连接MySQL服务器。服务器。2.1.5 MySQL2.1.5 MySQL配置文件配置文件mysql参数选项组参数选项组: 配置了配置了MySQL客户机程序客户机程序mysql.exe可以可以读取的参数信息。读取的参数信息。 常用的参数有常用的参数有“prompt”、“default-character-set=gbk”。 修改修改 “mysql”参数选项组中的参数值,参数选项组中的参数值,将直接影响新打开的将直接影响新打开的MySQL客户机。客户机。2.1.5 MySQL2.1.5 MySQL配置文件配置

58、文件mysqld参数选项组参数选项组: 配置了配置了MySQL服务程序服务程序mysqld.exe可以可以读取的参数信息,读取的参数信息,mysqld.exe启动时,将启动时,将mysqld参数选项组的参数信息加载到服务器参数选项组的参数信息加载到服务器内存,继而生成内存,继而生成MySQL服务实例。服务实例。2.1.5 MySQL2.1.5 MySQL配置文件配置文件mysqld参数选项组参数选项组: 常用的参数有常用的参数有“port”、“basedir”、“datadir”、“character-set-server”、“sql_mode”、“max_connections”以及以及“d

59、efault_storage_engine”等。等。2.1.5 MySQL2.1.5 MySQL配置文件配置文件mysqld参数选项组参数选项组: 修改修改“mysqld”参数选项组的参数值,只参数选项组的参数值,只有重新启动有重新启动MySQL服务,将修改后的配置文服务,将修改后的配置文件参数信息加载到服务器内存后,新配置文件参数信息加载到服务器内存后,新配置文件才会在新的件才会在新的MySQL服务实例中生效。服务实例中生效。 如果如果“mysqld”参数选项组的参数信息出参数选项组的参数信息出现错误,将会导致现错误,将会导致MySQL服务无法启动服务无法启动。2.1.5 MySQL2.1.

60、5 MySQL配置文件配置文件MySQL客户机(客户机(本书使用前两个):本书使用前两个): MySQL5.6命令行窗口命令行窗口 CMD命令提示符窗口命令提示符窗口 WEB浏览器(例如浏览器(例如phpMyAdmin) 第三方客户机程序(例如第三方客户机程序(例如MySQL-Front、MySQL Manager for MySQL等)等)2.1.6 MySQL2.1.6 MySQL客户机客户机phpMyAdmin2.1.6 MySQL2.1.6 MySQL客户机客户机MySQL-FrontMySQL-Front2.1.6 MySQL2.1.6 MySQL客户机客户机MySQLMySQL M

温馨提示

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

评论

0/150

提交评论