《MySQL数据库技术教案.doc》由会员分享,可在线阅读,更多相关《MySQL数据库技术教案.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教案20112012学年第1学期课程名称MySQL数据库系(院、部)教研室(实验室)授课班级主讲教师职称使用教材MySQL实用教程二一一年八月教案课程名称MYSQL数据库应用授课教师授课班级授课时数1授课方式理论课授课重点、难点1.mysql 关系数据库简介2. mysql安装授课内容、教具与时间分配1.MySQL数据库是从多关系型数据库产品中的一个,相比其他数据库而言,MySQL数据库可以称为目前运行速度最快的SQL语言。除此外还具有许多其他数据库所不具有的功能和选择。MySQL数据库是一种完全免费的产品,用户可以从网上直接下载,可以是个人,也可是商业用户,是不用支付任何费用的一个数据库。M
2、ySQL数据库具有以下特点: 没有限制同时访问数据库的用户数量。 可以保存记录超过50,000,000条。 数据库系统的运行速度是目前所有产品中最快的。 可以简单、有效地进行用户权限的设置。 从MySQL数据库具有的以上特点可以看出,MySQL数据库是一个运行速度快、多线程、多用户和强大的SQL数据库服务器。MySQL可以运行在多种平台上,包括Windows NT、UNIX和Linux系统。MySQL是建立数据库驱动和动态网站的最佳数据库。PHP、MySQL和Apache是Linux平台网站的最佳组合。目前,国际上知名公司也开始把MySQL作为其数据库管理系统,这也充分的证明了MySQL数据库
3、的优越性能和广阔的发展前景。2.安装数据库系统 如何得到MySQL数据库呢?维护MySQL的主要网站是http:/www.MySQL.com。读者可以从这个网站下载MySQL数据库。在全球有许多MySQL数据库的镜像网站。可以选择一个就近的网站下载,这样可以比较快地得到MySQL数据库。中国用户可以从http:/www.MySQL.cn/下载。得到了MySQL数据库后,接下来进行安装,笔者就以Windows 2003为例来进行介绍。首先要把下载的MySQL数据库压缩文件解压到指定目录。 数据库概述1.1 数据库理论基础 1.1.1 数据存储方式1.1.2 数据库泛型1.1.3 数据库在开发中作
4、用小结复习思考题参考书本次课程主要内容为 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 支持科学表示法,科学表示法由整数或浮
5、点数后跟“e”或“E”、一个符号(“+”或“-”)和一个整数指数来表示。1.24E+12 和23.47e-1 都是合法的科学表示法表示的数。而1.24E12 不是合法的,因为指数前的符号未给出。 浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。 数值前可放一个负号“-”以表示负值。 (2)字符(串)型 类型名说明CHAR定长字符串VARCHAR可变长字符串TINYBLOB非常小的BLOB(二进制大对象)BLOB小BLOBMEDIUMBLOB中等的BLOBLONGBLOB大BLOBTINYTEXT非常小的文本串TEXT小文本串MEDIUMTEXT中等文
6、本串LONGTEXT大文本串ENUM枚举;列可赋予某个枚举成员SET集合;列可赋予多个集合成员(3)日期和时间型 类型名说明DATE“YYYY-MM-DD”格式表示的日期值TIME“hh:mm:ss”格式表示的时间值DATETIME“YYYY-MM-DD hh:mm:ss”格式TIMESTAMP“YYYYMMDDhhmmss”格式表示的时间戳值YEAR“YYYY”格式的年份值(4)NULL值 NULL表示未知值。比如填写表格中通讯地址不清楚留空不填写,这就是NULL值。小结复习思考题参考书本次课程主要内容为Mysql数据类型mysql入门很简单清华大学出版社 Mysql数据库应用课程名称数据库
7、操作授课教师授课班级授课时数2授课方式理论课授课重点、难点1 创建数据库2 删除数据库 3 数据库存储引擎 3.1 MySQL存储引擎简介 3.2 InnoDB存储引擎 3.3 MyISAM存储引擎 3.4 MEMORY存储引擎 . 3.5 存储引擎的选择授课内容、教具与时间分配创建数据库(当然,数据库名asb不能是已经存在的) mysql create database asb; 选用数据库,使其成为当前操作的数据库 mysql use asb; 成功选中后会有如下显示: Database changed 甚至可以在窗口命令登陆mysql数据库的时候直接选中要操作的数据库(当然前提是asb数
8、据库存在) binmysql asb -u uesername -p Enter password:* 查看当前所操作的数据库名称 mysql select database(); 运行后结果如下: +-+ | database() | +-+ | asb | +-+ 1 row in set (0.00 sec)数据库存储引擎:ISAMISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:如果你的硬盘
9、崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。MyISAMMyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。MyISAM强调了快速读取操作,这
10、可能就是为什么MySQL受到了Web开发如此青睐的主要原因:在Web开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。HEAPHEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格
11、。让我再重复一遍:在你用完表格之后,不要忘记删除表格。InnoDB和Berkley DBInnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MySQL+ API。在使用MySQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。小结复习思考题参考书本次课程主要内容为 Mysq
12、l数据库操作 数据库存储引擎复习题目: 1. 什么是存储引擎?如何选择? 2.mysql数据库操作方法 mysql入门很简单清华大学出版社 Mysql数据库应用课程名称数据库表操作授课教师授课班级授课时数4授课方式理论课授课重点、难点1. 创建表2. 修改表3. 删除表授课内容、教具与时间分配用CREATE TABLE 语句创建数据表用 CREATE TABLE 语句创建表。此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单。如我们在第 1 章中使用的所有 CREATE TABLE 语句都不那么复杂。有意思的是,大多数复杂东西都是一些子句,这些子句MySQL
13、在分析后扔掉。参阅附录 1 可以看到这些复杂的东西。1、CREATE TABLE 语句的基本语法CREATE TABLE tbl_name(create_definition,.) TYPE =table_typecreate_definition: col_name type NOT NULL | NULL DEFAULT default_value AUTO_INCREMENTPRIMARY KEY用ALTER TABLE语句修改表的结构有时你可能需要改变一下现有表的结构,那么Alter Table语句将是你的合适选择。增加列alter table tbl_name add col_nam
14、e type例如,给表增加一列weightmysqlalter table pet add weight int;删除列alter table tbl_name drop col_name 例如,删除列weight:mysqlalter table pet drop weight;改变列alter table tbl_name modify col_name type例如,改变weight的类型:mysql alter table pet modify weight samllint;另一种方法是:alter table tbl_name change old_col_name col_nam
15、e type例如:mysql alter table pet change weight weight samllint;给列更名mysqlalter table pet change weight wei;给表更名alter table tbl_name rename new_tbl 例如,把pet表更名为animalmysqlalter table pet rename animal;改变表的类型另外,可以为列增加或删除索引等属性。用DROP TABLE 语句删除数据表DROP TABLE IF EXISTS tbl_name , tbl_name,. DROP TABLE删除一个或多个数
16、据库表。所有表中的数据和表定义均被删除,故小心使用这个命令! 在MySQL 3.22或以后版本,你可以使用关键词IF EXISTS类避免不存在表的一个错误发生。 例如:mysqlUSE mytest; mysqlDROP TABLE guestbook;或者,也可以同时指定数据库和表: mysqlDROP TABLE mytest. guestbook; 小结复习思考题参考书本节讲述了有关表的大部分操作,现在将所述内容总结如下:MySQL的表的三种类型如何创建表、删除表如何改变表的结构、名字复习题目: 1. 数据表操作方法? 教材:mysql实用教程 mysql入门很简单清华大学出版社 Mys
17、ql数据库应用课程名称Mysql索引授课教师授课班级授课时数2授课方式理论课授课重点、难点Mysql索引授课内容、教具与时间分配 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。MySQL索引类型包括:(1)普通索引这是最基本的索引,它没有任何限制。它有以下几种创建方式:创建索引1. CREATE INDEX indexName ON mytable(username(length); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。修改表结构1
18、. ALTER mytable ADD INDEX indexName ON (username(length) 创建表的时候直接指定1. CREATE TABLE mytable( 2. 3. ID INT NOT NULL, 4. 5. username VARCHAR(16) NOT NULL, 6. 7. INDEX indexName (username(length) 8. 9. ); 删除索引的语法:1. DROP INDEX indexName ON mytable; (2)唯一索引它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组
19、合必须唯一。它有以下几种创建方式:创建索引1. CREATE UNIQUE INDEX indexName ON mytable(username(length) 修改表结构1. ALTER mytable ADD UNIQUE indexName ON (username(length) 创建表的时候直接指定1. CREATE TABLE mytable( 2. 3. ID INT NOT NULL, 4. 5. username VARCHAR(16) NOT NULL, 6. 7. UNIQUE indexName (username(length) 8. 9. ); (3)主键索引它是
20、一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:1. CREATE TABLE mytable( 2. 3. ID INT NOT NULL, 4. 5. username VARCHAR(16) NOT NULL, 6. 7. PRIMARY KEY(ID) 8. 9. ); 当然也可以用 ALTER 命令。记住:一个表只能有一个主键。(4)组合索引为了形象地对比单列索引和组合索引,为表添加多个字段:1. CREATE TABLE mytable( 2. 3. ID INT NOT NULL, 4. 5. username VARCHAR(16) NOT NULL, 6
21、. 7. city VARCHAR(50) NOT NULL, 8. 9. age INT NOT NULL 10. 11. ); 为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:1. ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。如果分别在 usernname,city,age上建
22、立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:1. usernname,city,age 2. 3. usernname,city 4. 5. usernname 为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:1. SELECT * FR
23、OM mytable WHREE username=admin AND city=郑州 2. 3. SELECT * FROM mytable WHREE username=admin 而下面几个则不会用到:1. SELECT * FROM mytable WHREE age=20 AND city=郑州 2. 3. SELECT * FROM mytable WHREE city=郑州 (5)建立索引的时机到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对,=,BETWEEN,IN,以及
24、某些时候的LIKE才会使用索引。例如:1. SELECT t.Name 2. 3. FROM mytable t LEFT JOIN mytable m 4. 5. ON t.Name=m.username WHERE m.age=20 AND m.city=郑州 此时就需要对city和age建立索引,由于mytable表的userame也出现在了JOIN子句中,也有对它建立索引的必要。刚才提到只有某些时候的LIKE才需建立索引。因为在以通配符%和_开头作查询时,MySQL不会使用索引。例如下句会使用索引:1. SELECT * FROM mytable WHERE username like
25、admin% 而下句就不会使用:1. SELECT * FROM mytable WHEREt Name like%admin 因此,在使用LIKE时应注意以上的区别。(6)索引的不足之处上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。索引只是提高效率的一个因素,如果你的MyS
26、QL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。(7)使用索引的注意事项使用索引时,有以下一些技巧和注意事项:索引不会包含有NULL值的列只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。使用短索引对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。索引列排序MySQL查询只使用一个索引
27、,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。like语句操作一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。不要在列上进行运算1. select * from users where YEAR(adddate)2007; 将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成1. select * from users
28、where adddate2007-01-01; 不使用NOT IN和操作以上,就对其中MySQL索引类型进行了介绍。小结复习思考题参考书教材:mysql实用教程 mysql入门很简单清华大学出版社 Mysql数据库应用课程名称视图授课教师授课班级授课时数4授课方式理论课授课重点、难点创建视图、修改视图和删除视图授课内容、教具与时间分配一 视图概述视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。二 创建视图CREATE VIEW1. 语法
29、CREATE OR REPLACE ALGORITHM = UNDEFINED | MERGE | TEMPTABLE VIEW db_name.view_name (column_list) AS select_statement WITH CASCADED | LOCAL CHECK OPTION通过该语句可以创建视图,若给定了OR REPLACE,则表示当已具有同名的视图时,将覆盖原视图。select_statement是一个查询语句,这个查询语句可从表或其它的视图中查询。视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。表和数据库共享数据库中相同的名称
30、空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。3. 注意事项创建视图存在如下注意事项:(1) 运行创建视图的语句需要用户具有创建视图(CRATE VIEW)的权限,若加了OR REPLACE时,还需要用户具有删除视图(DROP VIEW)的权限;(2) SELECT语句不能包含FROM子句中的子查询;(3) SELECT语句不能引用系统或用户变量;(4) SELECT语句不能引用预处理语句参数;(5) 在存储子程序内,定义不能引用子程序参数或局部变量;(6) 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类
31、问题,可使用CHECK TABLE语句;(7) 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图;(8) 在视图定义中命名的表必须已存在;(9) 不能将触发程序与视图关联在一起;(10) 在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,它将被忽略。三 修改视图ALTER VIEW1. 语法ALTER ALGORITHM = UNDEFINED | MERGE | TEMPTABLE VIEW view_name (column_list) AS select_statement WITH CASCADED
32、| LOCAL CHECK OPTION该语句用于更改已有视图的定义。其语法与CREATE VIEW类似。四 删除视图DROP VIEW1. 语法DROP VIEW IF EXISTS view_name , view_name . RESTRICT | CASCADE该语句用户删除视图,可一次删除多个视图。IF EXISTS选项确保语句正确运行。若没有该子句,当指定的视图不存在时,将发生错误。小结复习思考题参考书本文讲述MySql5.x中视图的使用,包括创建视图、修改视图和删除视图的相关知识,包括命令的语法、使用举例以及注意事项。复习题目: 1. 视图与表的区别和联系? 教材:mysql实用
33、教程 mysql入门很简单清华大学出版社 Mysql数据库应用课程名称触发器使用授课教师授课班级授课时数2授课方式理论课授课重点、难点创建触发器触发器的删除授课内容、教具与时间分配为什么要用触发器我们在MySQL 5.0中包含对触发器的支持是由于以下原因:MySQL早期版本的用户长期有需要触发器的要求。 我们曾经许诺支持所有ANSI标准的特性。 您可以使用它来检查或预防坏的数据进入数据库。 您可以改变或者取消INSERT, UPDATE以及DELETE语句。 您可以在一个会话中监视数据改变的动作。语法1. 语法:命名规则 CREATE TRIGGER - BEFORE | AFTER INSE
34、RT | UPDATE | DELETE ON FOR EACH ROW 触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,用before和after替换; trigger_event:标识触发事件,用insert,update和delete替换; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体。触发器程序可以使用begin和end作为开始和结束,中间包含多条语句。 查看触发器查看触发器语
35、法如下,如果知道触发器所在数据库,以及触发器名称等具体信息:SHOWTRIGGERSfromSF_Userlikeusermaps%;/*查看SF_User库上名称和usermaps%匹配的触发器*/ 如果不了解触发器的具体的信息,或者需要查看数据库上所有触发器,如下:SHOW TRIGGERS; /查看所有触发器 用上述方式查看触发器可以看到数据库的所有触发器,不过如果一个库上的触发器太多,由于会刷屏,可能没有办法查看所有触发器程序。 删除触发器删除触发器语法如下:DROPTRIGGERschema_name.trigger_name小结复习思考题参考书本节讲述了触发器的使用:复习题目: 1
36、. 如何创建触发器? 教材:mysql实用教程 mysql入门很简单清华大学出版社 Mysql数据库应用课程名称SQL查询语句授课教师授课班级授课时数8授课方式理论课授课重点、难点基本查询语句使用集合函数查询连接查询授课内容、教具与时间分配SELECT被用来检索从一个或多个表中精选的行。select_expression指出你想要检索的列。SELECT也可以用 来检索不引用任何表的计算行 1、select*from table1; 2、select field1,field2 from table1; 3、select count(*)from table2; 4、select table1.
37、filed1,table2.filed2 from table1,table2 where table1.field1=valed1; 5、select *from table1 where field1=valed1 and fiels2=valed2 orded by field1; 6、select*from table1 where filed1=valed1 order byfiled1 desc linit n; 7、select *from table2 where name like %$lin%;(模糊) 8、sub_selects(高级) select *from tabl
38、e1 where id In(select id from table2.); 9、select .into table.(高级) (可用select.into outfile.;insert.selkect.替代) 10、SELECT MAX(field1) AS field1 FROM table1 列的最大值 其中:表:table 字段:field集合函数查询对一个表中的记录进行数据统计。例如,如果你想统计存储在表中的一次民意测验的投票结果。或者你想知道一个访问者在你的站点上平均花费了多少时间。要对表中的任何类型的数据进行统计,都需要使用集合函数。你可以统计记录数目,平均值,最小值,最大
39、值,或者求和。当你使用一个集合函数时,它只返回一个数,该数值代表这几个统计值之一。这些函数的最大特点就是经常和GROUP BY语句配合使用,需要注意的是集合函数不能和非分组的列混合使用。行列计数计算查询语句返回的记录行数直接计算函数COUNT(*)的值计算字段的平均值需要计算这些值的平均值。使用函数AVG(),你可以返回一个字段中所有值的平均值。SELECT AVG(vote) FROM opinion计算字段值的和SELECT SUM(purchase_amount) FROM orders计算字段值的极值求字段的极值,涉及两个函数MAX()和MIN()。SELECT name,MIN(bi
40、rth) FROM pet;mysql多表连接查询inner join,full outer join,left join,right jion内部连接 inner join 两表都满足的组合full outer 全连 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有A表没有的显示为(null)A表 left join B表 左连,以A表为基础,A表的全部数据,B表有的组合。没有的为nullA表 right join B表 右连,以B表为基础,B表的全部数据,A表的有的组合。没有的为null一、外连接1.概念:包括左向外联接、右向外联接或完整外部联接2.左连接:lef
41、t join 或 left outer join(1)左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。(2)sql 语句select * from table1 left join table2 on table1.id=table2.id3.右连接:right join 或 right outer join(1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。(2)sql 语句sele
42、ct * from table1 right join table2 on table1.id=table2.id4.完整外部联接:full join 或 full outer join(1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。(2)sql 语句select * from table1 full join table2 on table1.id=table2.id二、内连接1.概念:内联接是用比较运算符比较要联接列的值的联接2.内连接:join 或 inner join 3.s
43、ql 语句select * from table1 join table2 on table1.id=table2.id三、交叉连接(完全)1.概念:没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生3*3=9条记录)2.交叉连接:cross join (不带条件where.)3.sql语句select * from table1 cross join table2小结复习思考题参考书本节讲述了部分查询操作:复习题目: 1. 练习表的查询? 教材:mysql实用教程 mysql入门很
44、简单清华大学出版社 Mysql数据库应用课程名称Mysql插入更新删除授课教师授课班级授课时数4授课方式理论课授课重点、难点Mysql的插入更新删除方法授课内容、教具与时间分配1 插入、更新和删除记录11 插入记录Insert into table_name (field_name1, field_name2, ) values (value1, value2, );Insert into values (value1, value2, ); /这种形式只能应用于值的顺序与字段顺序匹配的情况(可以通过调用describe命令来决定字段顺序)。包含引用标志的值需要再引号前面加上反斜线/转义字符注意:into 关键字是可选的也可以同时插入多个值,用逗号分开Eg:ins