MySQL数据库技术教案.docx
- 文档编号:6508658
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:40
- 大小:38.30KB
MySQL数据库技术教案.docx
《MySQL数据库技术教案.docx》由会员分享,可在线阅读,更多相关《MySQL数据库技术教案.docx(40页珍藏版)》请在冰豆网上搜索。
MySQL数据库技术教案
教案
2011~2012学年第1学期
课程名称
MySQL数据库
系(院、部)
教研室(实验室)
授课班级
主讲教师
职称
使用教材
MySQL实用教程
二○一一年八月
教案
课程名称
MYSQL数据库应用
授课教师
授课班级
授课时数
1
授课方式
理论课
授课重点、难点
1.mysql关系数据库简介
2.mysql安装
授课内容、教具与时间分配
1.MySQL数据库是从多关系型数据库产品中的一个,相比其他数据库而言,MySQL数据库可以称为目前运行速度最快的SQL语言。
除此外还具有许多其他数据库所不具有的功能和选择。
MySQL数据库是一种完全免费的产品,用户可以从网上直接下载,可以是个人,也可是商业用户,是不用支付任何费用的一个数据库。
MySQL数据库具有以下特点:
?
没有限制同时访问数据库的用户数量。
?
可以保存记录超过50,000,000条。
?
数据库系统的运行速度是目前所有产品中最快的。
?
可以简单、有效地进行用户权限的设置。
?
从MySQL数据库具有的以上特点可以看出,MySQL数据库是一个运行速度快、多线程、多用户和强大的SQL数据库服务器。
MySQL可以运行在多种平台上,包括WindowsNT、UNIX和Linux系统。
MySQL是建立数据库驱动和动态网站的最佳数据库。
PHP、MySQL和Apache是Linux平台网站的最佳组合。
目前,国际上知名公司也开始把MySQL作为其数据库管理系统,这也充分的证明了MySQL数据库的优越性能和广阔的发展前景。
2.安装数据库系统
?
数据库概述
1.1数据库理论基础
1.1.1数据存储方式
1.1.2数据库泛型
1.1.3数据库在开发中作用
小结
复习
思考题
参考书
本次课程主要内容为
mysql关系数据库简介
Mysql安装配置
《mysql入门很简单》清华大学出版社
Mysql数据库应用
课程名称
MYSQL数据库应用
授课教师
授课班级
授课时数
4
授课方式
理论课
授课重点、难点
1.Mysql数据类型
授课内容、教具与时间分配
1.MySQL的数据类型
在MySQL中有如下几种数据类型:
(1)数值型
MySQL提供了五种整型:
TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,三种浮点类型:
FLOAT、DOUBLE和DECIMAL。
数值是诸如32或153.4这样的值。
MySQL支持科学表示法,科学表示法由整数或浮点数后跟“e”或“E”、一个符号(“+”或“-”)和一个整数指数来表示。
1.24E+12和23.47e-1都是合法的科学表示法表示的数。
而1.24E12不是合法的,因为指数前的符号未给出。
浮点数由整数部分、一个小数点和小数部分组成。
整数部分和小数部分可以分别为空,但不能同时为空。
数值前可放一个负号“-”以表示负值。
(2)字符(串)型
类型名
说明
CHAR
定长字符串
VARCHAR
可变长字符串
TINYBLOB
非常小的BLOB(二进制大对象)
BLOB
小BLOB
MEDIUMBLOB
中等的BLOB
LONGBLOB
大BLOB
TINYTEXT
非常小的文本串
TEXT
小文本串
MEDIUMTEXT
中等文本串
LONGTEXT
大文本串
ENUM
枚举;列可赋予某个枚举成员
SET
集合;列可赋予多个集合成员
(3)日期和时间型
类型名
说明
DATE
“YYYY-MM-DD”格式表示的日期值
TIME
“hh:
mm:
ss”格式表示的时间值
DATETIME
“YYYY-MM-DDhh:
mm:
ss”格式
TIMESTAMP
“YYYYMMDDhhmmss”格式表示的时间戳值
YEAR
“YYYY”格式的年份值
(4)NULL值
NULL表示未知值。
比如填写表格中通讯地址不清楚留空不填写,这就是NULL值。
小结
复习
思考题
参考书
本次课程主要内容为
Mysql数据类型
《mysql入门很简单》清华大学出版社
Mysql数据库应用
课程名称
数据库操作
授课教师
授课班级
授课时数
2
授课方式
理论课
授课重点、难点
1创建数据库
2删除数据库
3数据库存储引擎
3.1MySQL存储引擎简介
3.2InnoDB存储引擎
3.3MyISAM存储引擎
3.4MEMORY存储引擎
.3.5存储引擎的选择
授课内容、教具与时间分配
创建数据库(当然,数据库名\"asb\"不能是已经存在的)
mysql>createdatabaseasb;
选用数据库,使其成为当前操作的数据库
mysql>useasb;
成功选中后会有如下显示:
Databasechanged
甚至可以在窗口命令登陆mysql数据库的时候直接选中要操作的数据库(当然前提是asb数据库存在)
bin>mysqlasb-uuesername-p
Enterpassword:
******
查看当前所操作的数据库名称
mysql>selectdatabase();
运行后结果如下:
+------------+
|database()|
+------------+
|asb|
+------------+
1rowinset(0.00sec)
数据库存储引擎:
ISAM
ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。
因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。
ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:
如果你的硬盘崩溃了,那么数据文件就无法恢复了。
如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。
MyISAM
MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。
除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。
其代价是你需要经常运行OPTIMIZETABLE命令,来恢复被更新机制所浪费的空间。
MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。
MyISAM强调了快速读取操作,这可能就是为什么MySQL受到了Web开发如此青睐的主要原因:
在Web开发中你所进行的大量数据操作都是读取操作。
所以,大多数虚拟主机提供商和Internet平台提供商(InternetPresenceProvider,IPP)只允许使用MyISAM格式。
HEAP
HEAP允许只驻留在内存里的临时表格。
驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。
在数据行被删除的时候,HEAP也不会浪费大量的空间。
HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。
要记住,在用完表格之后就删除表格。
让我再重复一遍:
在你用完表格之后,不要忘记删除表格。
InnoDB和BerkleyDB
InnoDB和BerkleyDB(BDB)数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MySQL++API。
在使用MySQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。
尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。
如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。
小结
复习
思考题
参考书
本次课程主要内容为
Mysql数据库操作
数据库存储引擎
复习题目:
1.什么是存储引擎?
如何选择?
2.mysql数据库操作方法
《mysql入门很简单》清华大学出版社
Mysql数据库应用
课程名称
数据库表操作
授课教师
授课班级
授课时数
4
授课方式
理论课
授课重点、难点
1.创建表
2.修改表
3.删除表
授课内容、教具与时间分配
用CREATETABLE语句创建数据表
用CREATETABLE语句创建表。
此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单。
如我们在第1章中使用的所有CREATETABLE语句都不那么复杂。
有意思的是,大多数复杂东西都是一些子句,这些子句MySQL在分析后扔掉。
参阅附录1可以看到这些复杂的东西。
1、CREATETABLE语句的基本语法
CREATETABLEtbl_name(create_definition,...)[TYPE=table_type]
create_definition:
col_nametype[NOTNULL|NULL]
[DEFAULTdefault_value][AUTO_INCREMENT][PRIMARYKEY]
用ALTERTABLE语句修改表的结构
有时你可能需要改变一下现有表的结构,那么AlterTable语句将是你的合适选择。
增加列
altertabletbl_nameaddcol_nametype
例如,给表增加一列weight
mysql>altertablepetaddweightint;
删除列
altertabletbl_namedropcol_name
例如,删除列weight:
mysql>altertablepetdropweight;
改变列
altertabletbl_namemodifycol_nametype
例如,改变weight的类型:
mysql>altertablepetmodifyweightsamllint;
另一种方法是:
altertabletbl_namechangeold_col_namecol_nametype
例如:
mysql>altertablepetchangeweightweightsamllint;
给列更名
mysql>altertablepetchangeweightwei;
给表更名
altertabletbl_namerenamenew_tbl
例如,把pet表更名为animal
mysql>altertablepetrenameanimal;
改变表的类型
另外,可以为列增加或删除索引等属性。
用DROPTABLE语句删除数据表
DROPTABLE[IFEXISTS]tbl_name[,tbl_name,...]
DROPTABLE删除一个或多个数据库表。
所有表中的数据和表定义均被删除,故小心使用这个命令!
在MySQL3.22或以后版本,你可以使用关键词IFEXISTS类避免不存在表的一个错误发生。
例如:
mysql>USEmytest;
mysql>DROPTABLEguestbook;
或者,也可以同时指定数据库和表:
mysql>DROPTABLEmytest.guestbook;
小结
复习
思考题
参考书
本节讲述了有关表的大部分操作,现在将所述内容总结如下:
MySQL的表的三种类型
如何创建表、删除表
如何改变表的结构、名字
复习题目:
1.数据表操作方法?
教材:
《mysql实用教程》
《mysql入门很简单》清华大学出版社
Mysql数据库应用
课程名称
Mysql索引
授课教师
授课班级
授课时数
2
授课方式
理论课
授课重点、难点
Mysql索引
授课内容、教具与时间分配
索引是快速搜索的关键。
MySQL索引的建立对于MySQL的高效运行是很重要的。
下面介绍几种常见的MySQL索引类型。
MySQL索引类型包括:
(1)普通索引
这是最基本的索引,它没有任何限制。
它有以下几种创建方式:
◆创建索引
1.CREATEINDEXindexNameONmytable(username(length));
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length,下同。
◆修改表结构
1.ALTERmytableADDINDEX[indexName]ON(username(length))
◆创建表的时候直接指定
1.CREATETABLEmytable(
2.IDINTNOTNULL,
3.usernameVARCHAR(16)NOTNULL,
4.INDEX[indexName](username(length))
5.);
删除索引的语法:
1.DROPINDEX[indexName]ONmytable;
(2)唯一索引
它与前面的普通索引类似,不同的就是:
索引列的值必须唯一,但允许有空值。
如果是组合索引,则列值的组合必须唯一。
它有以下几种创建方式:
◆创建索引
1.CREATEUNIQUEINDEXindexNameONmytable(username(length))
◆修改表结构
1.ALTERmytableADDUNIQUE[indexName]ON(username(length))
◆创建表的时候直接指定
1.CREATETABLEmytable(
2.IDINTNOTNULL,
3.usernameVARCHAR(16)NOTNULL,
4.UNIQUE[indexName](username(length))
5.);
(3)主键索引
它是一种特殊的唯一索引,不允许有空值。
一般是在建表的时候同时创建主键索引:
1.CREATETABLEmytable(
2.IDINTNOTNULL,
3.usernameVARCHAR(16)NOTNULL,
4.PRIMARYKEY(ID)
5.);
当然也可以用ALTER命令。
记住:
一个表只能有一个主键。
(4)组合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
1.CREATETABLEmytable(
2.IDINTNOTNULL,
3.usernameVARCHAR(16)NOTNULL,
4.cityVARCHAR(50)NOTNULL,
5.ageINTNOTNULL
6.);
为了进一步榨取MySQL的效率,就要考虑建立组合索引。
就是将name,city,age建到一个索引里:
1.ALTERTABLEmytableADDINDEXname_city_age(name(10),city,age);
建表时,usernname长度为16,这里用10。
这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。
如果分别在usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。
虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。
建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:
1.usernname,city,age
2.usernname,city
3.usernname
为什么没有city,age这样的组合索引呢?
这是因为MySQL组合索引“最左前缀”的结果。
简单的理解就是只从最左面的开始组合。
并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:
1.SELECT*FROMmytableWHREEusername="admin"ANDcity="郑州"
2.SELECT*FROMmytableWHREEusername="admin"
而下面几个则不会用到:
1.SELECT*FROMmytableWHREEage=20ANDcity="郑州"
2.SELECT*FROMmytableWHREEcity="郑州"
(5)建立索引的时机
到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?
一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。
例如:
1.SELECTt.Name
2.FROMmytabletLEFTJOINmytablem
3.ONt.Name=m.usernameWHEREm.age=20ANDm.city='郑州'
此时就需要对city和age建立索引,由于mytable表的userame也出现在了JOIN子句中,也有对它建立索引的必要。
刚才提到只有某些时候的LIKE才需建立索引。
因为在以通配符%和_开头作查询时,MySQL不会使用索引。
例如下句会使用索引:
1.SELECT*FROMmytableWHEREusernamelike'admin%'
而下句就不会使用:
1.SELECT*FROMmytableWHEREtNamelike'%admin'
因此,在使用LIKE时应注意以上的区别。
(6)索引的不足之处
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。
因此索引也会有它的缺点:
◆虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
◆建立索引会占用磁盘空间的索引文件。
一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。
(7)使用索引的注意事项
使用索引时,有以下一些技巧和注意事项:
◆索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。
所以我们在数据库设计时不要让字段的默认值为NULL。
◆使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。
例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。
短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
◆索引列排序
MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么orderby中的列是不会使用索引的。
因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
◆like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。
like“%aaa%”不会使用索引而like“aaa%”可以使用索引。
◆不要在列上进行运算
1.select*fromuserswhereYEAR(adddate)<2007;
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成
1.select*fromuserswhereadddate<‘2007-01-01’;
◆不使用NOTIN和<>操作
以上,就对其中MySQL索引类型进行了介绍。
小结
复习
思考题
参考书
教材:
《mysql实用教程》
《mysql入门很简单》清华大学出版社
Mysql数据库应用
课程名称
视图
授课教师
授课班级
授课时数
4
授课方式
理论课
授课重点、难点
创建视图、修改视图和删除视图
授课内容、教具与时间分配
一.视图概述
视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
二.创建视图——CREATEVIEW
1.语法
CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW[db_name.]view_name[(column_list)]
ASselect_statement
[WITH[CASCADED|LOCAL]CHECKOPTION]
通过该语句可以创建视图,若给定了[ORREPLACE],则表示当已具有同名的视图时,将覆盖原视图。
select_statement是一个查询语句,这个查询语句可从表或其它的视图中查询。
视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。
表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。
3.注意事项
创建视图存在如下注意事项:
(1)运行创建视图的语句需要用户具有创建视图(CRATEVIEW)的权限,若加了[ORREPLACE]时,还需要用户具有删除视图(DROPVIEW)的权限;
(2)SELECT语句不能包含FROM子句中的子查询;
(3)SELECT语句不能引用系统或用户变量;
(4)SELECT语句不能引用预处理语句参数;
(5)在存储子程序内,定义不能引用子程序参数或局部变量;
(6)在定义中引用的表或视图必须存在。
但是,创建了视图后,能够舍弃定义引用的表或视图。
要想检查视图定义是否存在这类问题,可使用CHECKTABLE语句;
(7)在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图;
(8)在视图定义中命名的表必须已存在;
(9)不能将触发程序与视图关联在一起;
(10)在视图定义中允许使用ORDERBY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDERBY的语句,它将被忽略。
三.修改视图——ALTERVIEW
1.语法
A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库技术 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)