MySQL数据库技术教案_第1页
MySQL数据库技术教案_第2页
MySQL数据库技术教案_第3页
MySQL数据库技术教案_第4页
MySQL数据库技术教案_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

MySQL数据库技术教案 教案xxxx学年第1学期课程名称MySQL数据库系(院、部)教研室(实验室)授课班级主讲教师职称使用教材MySQL实用教程二一一年八月1教案课程名称授课班级授课重点、难点授课内容、教具与时间分配MYSQL数据库应用授课教师授课时数1授课方式理论课1.mysql关系数据库简介2.mysql安装1.MySQL数据库是从多关系型数据库产品中的一个,相比其他数据库而言,MySQL数据库可以称为目前运行速度最快的SQL语言。 除此外还具有许多其他数据库所不具有的功能和选择。 MySQL数据库是一种完全的产品,用户可以从网上直接下载,可以是个人,也可是商业用户,是不用支付任何费用的一个数据库。 MySQL数据库具有以下特点?没有限制同时访问数据库的用户数量。 ?可以保存记录超过50,000,000条。 ?数据库系统的运行速度是目前所有产品中最快的。 ?可以简单、有效地进行用户权限的设置。 ?从MySQL数据库具有的以上特点可以看出,MySQL数据库是一个运行速度快、多线程、多用户和强大的SQL数据库服务器。 MySQL可以运行在多种平台上,包括Windows NT、UNIX和Linux系统。 MySQL是建立数据库驱动和动态网站的最佳数据库。 PHP、MySQL和Apache是Linux平台网站的最佳组合。 目前,国际上知名公司也开始把MySQL作为其数据库管理系统,这也充分的证明了MySQL数据库的优越性能和广阔的发展前景。 2.安装数据库系统?如何得到MySQL数据库呢?维护MySQL的主要网站是.MySQL.。 读者可以从这个网站下载MySQL数据库。 在全球有许多MySQL数据库的镜像网站。 可以选择一个就近的网站下载,这样可以比较快地得到MySQL数据库。 中国用户可以从.MySQL./下载。 得到了MySQL数据库后,接下来进行安装,笔者就以Windowsxx为例来进行介绍。 首先要把下载的MySQL数据库压缩文件解压到指定目录。 2数据库概述1.1数据库理论基础1.1.1数据存储方式1.1.2数据库泛型1.1.3数据库在开发中作用小结本次课程主要内容为复习mysql关系数据库简介思考题参考书Mysql安装配置mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课重点、难点MYSQL数据库应用授课教师授课时数4授课方式理论课1.Mysql数据类型3授课内容、教具与时间分配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 VARCHARTINYBLOB BLOB定长字符串可变长字符串非常小的BLOB(二进制大对象)小BLOB说明MEDIUMBLOB中等的BLOB LONGBLOBTINYTEXT TEXT大BLOB非常小的文本串小文本串MEDIUMTEXT中等文本串LONGTEXT ENUMSET (3)日期和时间型类型名DATE TIME说明“YYYY-MM-DD”格式表示的日期值“hh:mm:ss”格式表示的时间值大文本串枚举;列可赋予某个枚举成员集合;列可赋予多个集合成员DATETIME“YYYY-MM-DD hh:mm:ss”格式4“YYYYMMDDhhmmss”格式表示的时间戳TIMESTAMP值YEAR (4)NULL值NULL表示值。 比如填写表格中通讯地址不清楚留空不填写,这就是NULL值。 小结复习思考题参考书Mysql数据库应用本次课程主要内容为Mysql数据类型mysql入门很简单清华大学出版社“YYYY”格式的年份值课程名称授课班级授课重点、难点数据库操作授课教师授课时数2授课方式理论课1创建数据库2删除数据库3数据库存储引擎3.1MySQL存储引擎简介3.2InnoDB存储引擎3.3MyISAM存储引擎3.4MEMORY存储引擎.3.5存储引擎的选择创建数据库(当然,数据库名asb不能是已经存在的)mysqlcreate databaseasb;授课内容、教具与时5间分配选用数据库,使其成为当前操作的数据库mysqluse asb;成功选中后会有如下显示Database changed甚至可以在窗口命令登陆mysql数据库的时候直接选中要操作的数据库(当然前提是asb数据库存在)binmysql asb-u uesername-p Enterpassword:*查看当前所操作的数据库名称mysqlselect database();运行后结果如下+-+|database()|+-+|asb|+-+1row inset(0.00sec)数据库存储引擎ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。 因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。 ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错如果你的硬盘崩溃了,那么数据文件就无法恢复了。 如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。 6MyISAM MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。 除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。 其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。 MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。 MyISAM强调了快速读取操作,这可能就是为什么MySQL受到了Web开发如此青睐的主要原因在Web开发中你所进行的大量数据操作都是读取操作。 所以,大多数虚拟主机提供商和Inter平台提供商(Inter PresenceProvider,IPP)只允许使用MyISAM格式。 HEAP HEAP允许只驻留在内存里的临时表格。 驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。 在数据行被删除的时候,HEAP也不会浪费大量的空间。 HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。 要记住,在用完表格之后就删除表格。 让我再重复一遍在你用完表格之后,不要忘记删除表格。 InnoDB和Berkley DBInnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MySQL+API。 在使用MySQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。 尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。 如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。 本次课程主要内容为Mysql数据库操作数据库存储引擎复习题目1.什么是存储引擎?如何选择?小结复习思考题参考书72.mysql数据库操作方法mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课重点、难点数据库表操作授课教师授课时数4授课方式理论课1.创建表2.修改表3.删除表授课内容、教具与时间分配用CREATE TABLE语句创建数据表用CREATE TABLE语句创建表。 此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单。 如我们在第1章中使用的所有CREATE TABLE语句都不那么复杂。 有意思的是,大多数复杂东西都是一些子句,这些子句MySQL在分析后扔掉。 参阅附录1可以看到这些复杂的东西。 1、CREATE TABLE语句的基本语法CREATE TABLEtbl_name(create_definition,.)TYPE=table_typecreate_definition:col_name typeNOT NULL|NULLDEFAULT default_valueAUTO_INCREMENTPRIMARY KEY用ALTER TABLE语句修改表的结构有时你可能需要改变一下现有表的结构,那么Alter Table语句将是你的合适选择。 增加列alter tabletbl_name addcol_name type8例如,给表增加一列weight mysqlalter tablepet addweight int;删除列alter tabletbl_name dropcol_name例如,删除列weight mysqlalter tablepet dropweight;改变列alter tabletbl_name modifycol_name type例如,改变weight的类型mysqlalter tablepet modifyweight samllint;另一种方法是alter tabletbl_name changeold_col_name col_name type例如mysqlalter tablepet changeweight weightsamllint;给列更名mysqlalter tablepet changeweight wei;给表更名alter tabletbl_name renamenew_tbl例如,把pet表更名为animal mysqlalter tablepet renameanimal;改变表的类型另外,可以为列增加或删除索引等属性。 用DROP TABLE语句删除数据表9DROP TABLEIF EXISTStbl_name,tbl_name,.DROP TABLE删除一个或多个数据库表。 所有表中的数据和表定义均被删除,故小心使用这个命令!在MySQL3.22或以后版本,你可以使用关键词IF EXISTS类避免不存在表的一个错误发生。 例如mysqlUSE mytest;mysqlDROP TABLEguestbook;或者,也可以同时指定数据库和表mysqlDROP TABLEmytest.guestbook;本节讲述了有关表的大部分操作,现在将所述内容总结如下MySQL的表的三种类型小结如何创建表、删除表复习如何改变表的结构、名字思考题参考书复习题目1.数据表操作方法?教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用Mysql索引课程名称授课教师10授课班级授课时数2授课方式理论课授课重点、难点Mysql索引授课内容、教具与时间分配索引是快速搜索的关键。 MySQL索引的建立对于MySQL的高效运行是很重要的。 下面介绍几种常见的MySQL索引类型。 MySQL索引类型包括 (1)普通索引这是最基本的索引,它没有任何限制。 它有以下几种创建方式创建索引1.CREATE INDEX indexName ON mytable(username(length);如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length,下同。 修改表结构1.ALTER mytable ADD INDEXindexNameON(username(length)创建表的时候直接指定..9.CREATE TABLEmytable(ID INTNOT NULL,username VARCHAR (16)NOT NULL,INDEXindexName(username(length);删除索引的语法1.DROP INDEXindexNameON mytable; (2)唯一索引11它与前面的普通索引类似,不同的就是索引列的值必须唯一,但允许有空值。 如果是组合索引,则列值的组合必须唯一。 它有以下几种创建方式创建索引1.CREATE UNIQUEINDEXindexNameONmytable(username(length)修改表结构1.ALTER mytableADD UNIQUEindexNameON(username(length)创建表的时候直接指定..9.CREATE TABLEmytable(ID INTNOT NULL,username VARCHAR (16)NOT NULL,UNIQUEindexName(username(length); (3)主键索引它是一种特殊的唯一索引,不允许有空值。 一般是在建表的时候同时创建主键索引..9.CREATE TABLEmytable(ID INTNOT NULL,username VARCHAR (16)NOT NULL,PRIMARY KEY(ID);当然也可以用ALTER命令。 记住一个表只能有一个主键。 (4)组合索引为了形象地对比单列索引和组合索引,为表添加多个字段..9.10.11.CREATE TABLEmytable(ID INTNOT NULL,username VARCHAR (16)NOT NULL,city VARCHAR (50)NOT NULL,age INTNOT NULL);为了进一步榨取MySQL的效率,就要考虑建立组合索引。 就是将name,city,age建到一个索引里1.ALTER TABLEmytableADDINDEX name_city_age(name (10),city,age);建表时,usernname长度为16,这里用10。 这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。 如果分别在usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。 虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。 建立这样的组合索引,其实是相当于分别建立了下面三组组合索引.5.usernname,city,age usernname,city usernname为什么没有city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。 简单的理解就是只从最左面的开始组合。 并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引1.SELECT*FROM mytableWHREE username=adminAND city=郑州2.3.SELECT*FROM mytableWHREE username=admin而下面几个则不会用到131.2.3.SELECT*FROM mytableWHREE age=20AND city=郑州SELECT*FROM mytableWHREE city=郑州 (5)建立索引的时机到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对,=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。 例如.5.SELECT t.Name FROM mytable tLEFT JOINmytable mON t.Name=m.username WHEREm.age=20AND m.city=郑州此时就需要对city和age建立索引,由于mytable表的userame也出现在了JOIN子句中,也有对它建立索引的必要。 刚才提到只有某些时候的LIKE才需建立索引。 因为在以通配符%和_开头作查询时,MySQL不会使用索引。 例如下句会使用索引1.SELECT*FROM mytableWHERE usernamelikeadmin%而下句就不会使用1.SELECT*FROMmytableWHEREt Namelike%admin因此,在使用LIKE时应注意以上的区别。 (6)索引的不足之处上面都在说使用索引的好处,但过多的使用索引将会造成滥用。 因此索引也会有它的缺点虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。 因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。 索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。 14 (7)使用索引的注意事项使用索引时,有以下一些技巧和注意事项索引不会包含有NULL值的列只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。 所以我们在数据库设计时不要让字段的默认值为NULL。 使用短索引对串列进行索引,如果可能应该指定一个前缀长度。 例如,如果有一个CHAR (255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。 短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。 索引列排序MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。 因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。 like语句操作一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。 like“%aaa%”不会使用索引而like“aaa%”可以使用索引。 不要在列上进行运算1.select*from userswhere YEAR(adddate)操作以上,就对其中MySQL索引类型进行了介绍。 小结复习思考题教材mysql实用教程mysql入门很简单清华大学出版社15参考书Mysql数据库应用课程名称授课班级授课重点、难点授课内容、教具与时间分配视图授课教师授课时数4授课方式理论课创建视图、修改视图和删除视图一视图概述视图是一个虚拟表,其内容由查询定义。 同真实的表一样,视图包含一系列带有名称的列和行数据。 但是,视图并不在数据库中以存储的数据值集形式存在。 行和列数据由定义视图的查询所引用的表,并且在引用视图时动态生成。 二创建视图CREATE VIEW1.语法CREATEOR REPLACEALGORITHM=UNDEFINED|MERGE|TEMPTABLEVIEWdb_name.view_name(column_list)AS select_statementWITHCASCADED|LOCALCHECK OPTION通过该语句可以创建视图,若给定了OR REPLACE,则表示当已具有同名的视图时,16将覆盖原视图。 select_statement是一个查询语句,这个查询语句可从表或其它的视图中查询。 视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。 表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。 3.注意事项创建视图存在如下注意事项 (1)运行创建视图的语句需要用户具有创建视图(CRATE VIEW)的权限,若加了OR REPLACE时,还需要用户具有删除视图(DROP VIEW)的权限; (2)SELECT语句不能包含FROM子句中的子查询; (3)SELECT语句不能引用系统或用户变量; (4)SELECT语句不能引用预处理语句参数; (5)在存储子程序内,定义不能引用子程序参数或局部变量; (6)在定义中引用的表或视图必须存在。 但是,创建了视图后,能够舍弃定义引用的表或视图。 要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句; (7)在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图; (8)在视图定义中命名的表必须已存在; (9)不能将触发程序与视图关联在一起; (10)在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而17该视图使用了具有自己ORDER BY的语句,它将被忽略。 三修改视图ALTER VIEW1.语法ALTERALGORITHM=UNDEFINED|MERGE|TEMPTABLEVIEW view_name(column_list)AS select_statementWITHCASCADED|LOCALCHECK OPTION该语句用于更改已有视图的定义。 其语法与CREATE VIEW类似。 四删除视图DROP VIEW1.语法DROP VIEWIF EXISTSview_name,view_name.RESTRICT|CASCADE该语句用户删除视图,可一次删除多个视图。 IF EXISTS选项确保语句正确运行。 若没有该子句,当指定的视图不存在时,将发生错误。 小结本文讲述MySql5.x中视图的使用,包括创建视图、修改视图和删除视图的相关知识,包复习思考题参考书括命令的语法、使用举例以及注意事项。 复习题目1.视图与表的区别和联系?18教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课重点、难点授课内容、教具与时间分配触发器使用授课教师授课时数2授课方式理论课创建触发器触发器的删除为什么要用触发器我们在MySQL5.0中包含对触发器的支持是由于以下原因:MySQL早期版本的用户长期有需要触发器的要求。 我们曾经许诺支持所有ANSI标准的特性。 您可以使用它来检查或预防坏的数据进入数据库。 您可以改变或者取消INSERT,UPDATE以及DELETE语句。 您可以在一个会话中监视数据改变的动作。 语法1.语法命名规则CREATE TRIGGER-BEFORE|AFTERINSERT|UPDATE|DELETEONFOR EACHROW触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.trigger_name标识触发器名称,用户自行指定;trigger_time标识触发时机,用before和after替换;trigger_event标识触发事件,用insert,update和delete替换;tbl_name标识建立触发器的表名,即在哪张表上建立触发器;trigger_stmt触发器程序体。 19触发器程序可以使用begin和end作为开始和结束,中间包含多条语句。 查看触发器查看触发器语法如下,如果知道触发器所在数据库,以及触发器名称等具体信息SHOW TRIGGERSfrom SF_User likeusermaps%;/*查看SF_User库上名称和usermaps%匹配的触发器*/如果不了解触发器的具体的信息,或者需要查看数据库上所有触发器,如下SHOW TRIGGERS;/查看所有触发器用上述方式查看触发器可以看到数据库的所有触发器,不过如果一个库上的触发器太多,由于会刷屏,可能没有办法查看所有触发器程序。 删除触发器删除触发器语法如下DROP TRIGGERschema_name.trigger_name小结复习思考题参考书本节讲述了触发器的使用复习题目1.如何创建触发器?教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级SQL查询语句授课教师授课时数8授课方式理论课20授课重点、难点基本查询语句使用集合函数查询连接查询授课内容、教具与时间分配SELECT被用来检索从一个或多个表中精选的行。 select_expression指出你想要检索的列。 SELECT也可以用来检索不引用任何表的计算行 1、select*from table1; 2、select field1,field2from table1; 3、select count(*)from table2; 4、select table1.filed1,table2.filed2from table1,table2where table1.field1=valed1; 5、select*from table1where field1=valed1and fiels2=valed2orded byfield1; 6、select*from table1where filed1=valed1order byfiled1desc linitn; 7、select*from table2where namelike%$lin%;(模糊) 8、sub_selects(高级)select*from table1where idIn(select idfrom table2.); 9、o table.(高级)(可用o outfile.;insert.selkect.替代) 10、SELECT MAX(field1)AS field1FROM table1列的最大值其中表table字段field集合函数查询对一个表中的记录进行数据统计。 例如,如果你想统计存储在表中的一次民意测验的投票结果。 或者你想知道一个访问者在你的站点上平均花费了多少时间。 要对表中的任何类型的数据进行统计,都需要使用集合函数。 你可以统计记录数目,平均值,最小值,最大值,21或者求和。 当你使用一个集合函数时,它只返回一个数,该数值代表这几个统计值之一。 这些函数的最大特点就是经常和GROUP BY语句配合使用,需要注意的是集合函数不能和非分组的列混合使用。 行列计数计算查询语句返回的记录行数直接计算函数COUNT(*)的值计算字段的平均值需要计算这些值的平均值。 使用函数AVG(),你可以返回一个字段中所有值的平均值。 SELECT AVG(vote)FROM opinion计算字段值的和SELECT SUM(purchase_amount)FROM orders计算字段值的极值求字段的极值,涉及两个函数MAX()和MIN()。 SELECT name,MIN(birth)FROM pet;mysql多表连接查询inner join,full outerjoin,left join,right jion内部连接inner join两表都满足的组合full outer全连两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有22A表没有的显示为(null)A表left joinB表左连,以A表为基础,A表的全部数据,B表有的组合。 没有的为null A表right joinB表右连,以B表为基础,B表的全部数据,A表的有的组合。 没有的为null 一、外连接1.概念包括左向外联接、右向外联接或完整外部联接2.左连接left join或left outerjoin (1)左向外联接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。 如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。 (2)sql语句select*from table1left join table2on table1.id=table2.id3.右连接right join或right outerjoin (1)右向外联接是左向外联接的反向联接。 将返回右表的所有行。 如果右表的某行在左表中没有匹配行,则将为左表返回空值。 (2)sql语句select*from table1right jointable2on table1.id=table2.id4.完整外部联接:full join或full outerjoin (1)完整外部联接返回左表和右表中的所有行。 当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。 如果表之间有匹配行,则整个结果集行包含基表的数据值。 (2)sql语句select*from table1full jointable2on table1.id=table2.id 二、内连接231.概念内联接是用比较运算符比较要联接列的值的联接2.内连接join或inner join3.sql语句select*from table1jointable2on table1.id=table2.id 三、交叉连接(完全)1.概念没有WHERE子句的交叉联接将产生联接所涉及的表的笛卡尔积。 第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。 (table1和table2交叉连接产生3*3=9条记录)2.交叉连接cross join(不带条件where.)3.sql语句select*from table1cross jointable2小结复习思考题参考书本节讲述了部分查询操作复习题目1.练习表的查询?教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课Mysql插入更新删除授课教师授课时数4授课方式理论课Mysql的插入更新删除方法24重点、难点授课内容、教具与时间分配1插入、更新和删除记录11插入记录Insert intotable_name(field_name1,field_name2,)values(value1,value2,);Insert intovalues(value1,value2,);/这种形式只能应用于值的顺序与字段顺序匹配的情况(可以通过调用describe命令来决定字段顺序)。 包含引用标志的值需要再引号前面加上反斜线/转义字符注意into关键字是可选的也可以同时插入多个值,用逗号分开Eginsert table_name values(value1,value2,),(value3,value4,);还可以不使用insertvalues格式,而使用类似update语句,它使用set子句分别为每一列设置Insert intotable_name setfield_name1=value1,field_name2=value2,;使用default值Create tabletable_name(field_name1type defaultdef_value not null,);Insert table_name values(default,);/default关键字只在4.0.3以及更高版本才支持使用AUTOINCREMENT字段自动产生下一个序号,该字段必须被设置为主键使用UNIQUE字段使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更为新值。 INSERT IGNOREINTO TABLE_NAME(UNIQUE_FIELD,)VALUES(REPEAT,);如果重复记录,则不会报告错误,也不会更新记录,数据库中的数据保持不变。 ON DUPLICATEKEY UPDATE和REPLACE区别前者只把已命名的字段更新为新值,后者记录,然后用新值完全替换。 Eginsert intoMenu value(null,MySQL,.mysql.)on duplicatekey updatelabel=MS Surl=.microsoft.;在这种情况下,如果MySQL发现表中已经包含具有相同唯一键的记录,则会自动更新旧的记DUPLICATEKEYUPDATE从句中指定的新值。 当有很多insert语句需要被顺序执行时,IGNORE关键字就使操作变得很方便。 这可以保证不INSERT包含了重复值,MySQL都会跳过而不放弃全部操作。 12更新记录UPDATE TABLE_NAME SET FIELD_NAME=VALUE,SETFIELD_ANOTHER=VALUE_ANTOWHERE如果省略了where子句,表中的每行都会收到update的影响而改变精细操作当执行INSERT或者UPDATE操作时,可以通过使用LOW_PRIORITY和DELAY字使MySQL客户执行等待,知道成功完成操作或者排队等候服务器进行处理。 LOW_PRIORITY关键字阻止语句执行知道没有其他线程使用这个表,从而强制客户等待,知道全被执行。 在应用中可靠性是最终要的,添加这个关键字可以帮助提高SQL事务处理以及在它业务逻辑的完整性。 DELAYED关键字和LOW_PRIORITY关键字相反,把要执行的语句放在一个对垒中(在serv25器内)就立即让客户退出。 当处理繁忙的数据库服务时,这一点在提高应用程序的性能方面尤意味它可以提高客户相应时间(但是比较冒险如果服务器崩溃,在服务器队列中的所有丢失)。 这两个关键字不适用与InnoDB表。 13删除记录MySQL允许使用delete和truncate语句删除数据。 DELETE语句可以允许从表中删除记录,支持where DELETEFROM TABLE_NAME WHERECONDITIONAL;如果没有where子句,则删除表中所有数据。 该操作不可逆转(除非使用的是InnoDB表且关掉AUTOMIT?)使用truncate命令也可一删除表的所有记录TRUNCATE TABLETABLE_NAME;该命令比delete执行速度要快,因为TRUNCATE删除了表,然后重建它。 注意delete删除的是记录,并没有尝试去修改表。 这也是为什么当向一个使用delete清空的表录时,MySQL会小结复习思考题参考书本节讲述了有关表插入更新和删除复习题目1.表的更新插入删除方法?教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课重点、难点授课内Mysql运算符授课教师授课时数4授课方式理论课算术运算符、比较运算符、逻辑运算符、位运算符、表达式运算符优先级顺序26容、教具与时间分配最高优先级:=1|,or,xor2&,and3between,case,when,then,else4=,=,=,!=,is,like,regexp,in5|6&78-,+9*,/,div,%,mod1011-(unary minus),(unary bitinversion)12!,not最低优先级binary,collate算数运算符加mysqlselect1+2;减mysqlselect2-1;乘mysqlselect2*3;除mysqlselect5/3;商mysqlselect5div2;模mysqlselect5%2,mod(5,2);逻辑运算符非mysqlselect not0,not1,not null;mysqlselect!0,!1,!null;与mysqlselect(1and1),(0and1),(3and1),(1and null);mysqlselect(1&1),(0&1),(3&1),(1&null);或mysqlselect(1or0),(0or0),(1or null),(1or1),(null ornull);mysqlselect(1|0),(0|0),(1|null),(1|1),(null|null);27异或mysqlselect(1xor1),(0xor0),(1xor0),(0xor1),(null xor1);mysqlselect(11),(00),(10),(01),(null1);比较运算符等于mysqlselect1=0,1=1,null=null;不等于mysqlselect10,11,nullnull;安全等于mysqlselect11,20,00,nullnull;小于mysqlselectab,aa,ac,1selectbdf=b,b=b,0selectab,abca,10;大于等于mysqlselecta=b,abc=a,1=0,1=1;between mysqlselect10between10and20,9between10and20;in mysqlselect1in(1,2,3),tin(t,a,b,l,e),0in(1,2);is null mysqlselect0is null,null isnull;is notnullmysqlselect0is notnull,null isnotnull;like mysqlselect123456like123%,123456like%123%,123456like%321%;regexp mysqlselectabcdefregexpab,abcdefgregexpk;位运算符位与mysqlselect2&3;mysqlselect2&3&4;位或mysqlselect2|3;位异或28mysqlselect23;位取反mysqlselect1,18446744073709551614;位右移mysqlselect1003;位左移mysqlselect1003;小结复习思考题参考书本节讲述了mysql运算符1.熟悉各种运算符及其使用方法教材mysql实用教程mysql入门很简单清华大学出版社Mysql数据库应用课程名称授课班级授课重点、难点授课内容、教具与时间分配系统内置函数授课教师授课时数2授课方式理论课Mysql函数使用算数运算子+,-,*,/除于0会等于NULL。 比较运算子任何东西跟NULL比较会等于NULL。 29比较字符串通常不需要注意大小写,如果要比较大小写,用BINARY关键词。 逻辑运算子传回的值有1(true),0(false,或NULL。 任何不是0或不是NULL的值都是true。 字符串函式concat(s1,s2,.)-连接字符串s1和s2.conv(n,original_base,new_base)-转换数字n从本来的base到新的base length(s)-找字符串的长度load_file(filename)-依照字符串传回档案的内容locate(needle,haystack,position)-传回needle字符串的开始位置,在haystack字符串里,从position开始lower(s)and upper(s)-转换s到小写或大写quote(s)-跳脱s字符串,让它可以安全输入数据库replace(target,find,replace)-传回target字符串,将find字符串覆盖成replace字符串soundex(s)-传回跟s类似的soundex字符串。 soundex是字符串的发音substring(s,position,length)-传回字符串里的字符串,s是本来的字符串,position是

温馨提示

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

评论

0/150

提交评论