MySQL的DML常用语法格式
MySQL的DML常用语法格式
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
我们知道MySQL的查询大致分为单表查询,多表查询以及联合查询。多表查询,顾名思义,就是查询的结果可能不止来源一个表哟!数据库中的设计范式要求其尽可能降低冗余的,那么如果说一个数据我们来回的存储N此的话,就建议把它拆分成多张表(比如,插成两张表进行存储),并且可以在两两之间都具体的字段建立关联关系。
一.创建查询环境
以下是关于《火影忍者》的人员信息表,这是一张电子表格,但是我们在数据库存储的时候,我们可以把它存储成多张表格。
创建表格的方式有很多种,大家可以按照自己的方式进行存储,我创建表格的流程如下:
1 [root@yinzhengjie ~]# more huoying.sql 2 #!/bin/bash 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/p/7862654.html 5 #EMAIL:y1053419035@qq.com 6 7 8 #创建数据库 9 create database yinzhengjie; 10 #使用数据库 11 use yinzhengjie; 12 #创建students表 13 create table students( StudentID mediumint not null auto_increment,Name varchar(50) not null, 14 Age tinyint not null,Gender ENUM('boy','girl'),ClassID tinyint,TeacherID tinyint,primary key 15 (StudentID,Name))engine=innodb default charset=utf8; 16 #向创建的students的表中插入数据 17 insert into students values(1,'旋涡鸣人',25,'boy',7,2); 18 insert into students values(2,'佐助',23,'boy',7,1); 19 insert into students values(3,'春野樱',21,'girl',7,3); 20 insert into students values(4,'奈良鹿丸',26,'boy',10,4); 21 insert into students values(5,'日向雏田',23,'girl',8,5); 22 insert into students values(6,'犬冢牙',24,'boy',8,5); 23 insert into students values(7,'油女志乃',23,'boy',8,5); 24 insert into students values(8,'秋道丁次',23,'boy',10,4); 25 insert into students values(9,'山中井野',22,'boy',10,4); 26 insert into students values(10,'日向宁次',26,'boy',3,6); 27 insert into students values(11,'李洛克',25,'boy',3,6); 28 insert into students values(12,'天天',26,'boy',3,6); 29 30 #创建classes表 31 create table Classes(ClassID tinyint not null, Class varchar(50) not null,ClassMember tinyin 32 t not null)engine=innodb default charset=utf8; 33 #向创建的Class的表中插入数据 34 insert into Classes values(7,'木叶忍者村第七班',4); 35 insert into Classes values(10,'木叶忍者村第十班',3); 36 insert into Classes values(8,'木叶忍者村第八班',3); 37 insert into Classes values(3,'木叶忍者村第三班',3); 38 39 #创建teachers表 40 create table tearchers( ClassID tinyint not null,Name varchar(50) not null,TeacherID tinyint 41 not null,Ninjutsu_course varchar(50) not null)engine=innodb default charset=utf8; 42 #向创建的Class的表中插入数据 43 insert into tearchers values(7,'自来也(好色仙人)',2,'螺旋丸手里剑'); 44 insert into tearchers values(7,'大蛇丸',1,'千鸟'); 45 insert into tearchers values(7,'五代目火影纲手',3,'百豪之术'); 46 insert into tearchers values(10,'猿飞阿斯玛',4,'影缝'); 47 insert into tearchers values(8,'夕日红老师',5,'柔步双狮拳'); 48 insert into tearchers values(8,'夕日红老师',5,'牙通牙'); 49 insert into tearchers values(8,'夕日红老师',5,'寄坏虫术'); 50 insert into tearchers values(10,'猿飞阿斯玛',4,'肉弹战车'); 51 insert into tearchers values(10,'猿飞阿斯玛',4,'心转身之术'); 52 insert into tearchers values(3,'迈特凯',6,'八门遁甲'); 53 insert into tearchers values(3,'迈特凯',6,'提升龙'); 54 insert into tearchers values(3,'迈特凯',6,'八卦六十四掌'); 55 56 57 #创建score表 58 create table score( StudentID mediumint not null,Name varchar(50) not null,ExaminationResults 59 tinyint not null)engine=innodb default charset=utf8; 60 #向创建的score表中插入数据 61 insert into score values(1,'旋涡鸣人',98); 62 insert into score values(2,'佐助',98); 63 insert into score values(3,'春野樱',95); 64 insert into score values(4,'奈良鹿丸',97); 65 insert into score values(5,'日向雏田',96); 66 insert into score values(6,'犬冢牙',94); 67 insert into score values(7,'油女志乃',93); 68 insert into score values(8,'秋道丁次',92); 69 insert into score values(9,'山中井野',89); 70 insert into score values(10,'日向宁次',96); 71 insert into score values(11,'李洛克',94); 72 insert into score values(12,'天天',91); 73 [root@yinzhengjie ~]# 74 [root@yinzhengjie ~]# mysql -pyinzhengjie < huoying.sql #导入SQL语句 75 [root@yinzhengjie ~]#
二.联结查询
顾名思义,联结查询就是事先将两张或者多张表join,根据join的结果进行查询。联结查询分为交叉联结,
1.交叉联结
交叉联结就是用第一个表的每一行去匹配第二张表的所有行,这样的查询方式低效率,且查询的数据都会在内存中打开,占用空间较大,大多数信息都是无用的,因此这种查询方式很少有人使用。我们可以用桐乡公式表示:"(a+b)(c+d)",我们可以理解a和b是第一张表的行和列,而c和d表示第二张表中的行和列。
1 mysql> select * from students; 2 +-----------+--------------+-----+--------+---------+-----------+ 3 | StudentID | Name | Age | Gender | ClassID | TeacherID | 4 +-----------+--------------+-----+--------+---------+-----------+ 5 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 6 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 9 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 11 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 12 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 13 | 9 | 山中井野 | 22 | boy | 10 | 4 | 14 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 15 | 11 | 李洛克 | 25 | boy | 3 | 6 | 16 | 12 | 天天 | 26 | boy | 3 | 6 | 17 +-----------+--------------+-----+--------+---------+-----------+ 18 12 rows in set (0.00 sec) 19 20 mysql> select * from tearchers; 21 +---------+-------------------------+-----------+--------------------+ 22 | ClassID | Name | TeacherID | Ninjutsu_course | 23 +---------+-------------------------+-----------+--------------------+ 24 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 25 | 7 | 大蛇丸 | 1 | 千鸟 | 26 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 27 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 28 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 29 | 8 | 夕日红老师 | 5 | 牙通牙 | 30 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 31 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 32 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 33 | 3 | 迈特凯 | 6 | 八门遁甲 | 34 | 3 | 迈特凯 | 6 | 提升龙 | 35 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 36 +---------+-------------------------+-----------+--------------------+ 37 12 rows in set (0.00 sec) 38 39 mysql> select * from students,tearchers; 40 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 41 | StudentID | Name | Age | Gender | ClassID | TeacherID | ClassID | Name | TeacherID | Ninjutsu_course | 42 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 43 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 44 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 45 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 46 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 47 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 48 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 49 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 50 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 51 | 9 | 山中井野 | 22 | boy | 10 | 4 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 52 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 53 | 11 | 李洛克 | 25 | boy | 3 | 6 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 54 | 12 | 天天 | 26 | boy | 3 | 6 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 55 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 大蛇丸 | 1 | 千鸟 | 56 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 大蛇丸 | 1 | 千鸟 | 57 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 大蛇丸 | 1 | 千鸟 | 58 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 7 | 大蛇丸 | 1 | 千鸟 | 59 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 7 | 大蛇丸 | 1 | 千鸟 | 60 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 7 | 大蛇丸 | 1 | 千鸟 | 61 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 7 | 大蛇丸 | 1 | 千鸟 | 62 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 7 | 大蛇丸 | 1 | 千鸟 | 63 | 9 | 山中井野 | 22 | boy | 10 | 4 | 7 | 大蛇丸 | 1 | 千鸟 | 64 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 7 | 大蛇丸 | 1 | 千鸟 | 65 | 11 | 李洛克 | 25 | boy | 3 | 6 | 7 | 大蛇丸 | 1 | 千鸟 | 66 | 12 | 天天 | 26 | boy | 3 | 6 | 7 | 大蛇丸 | 1 | 千鸟 | 67 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 68 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 69 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 70 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 71 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 72 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 73 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 74 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 75 | 9 | 山中井野 | 22 | boy | 10 | 4 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 76 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 77 | 11 | 李洛克 | 25 | boy | 3 | 6 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 78 | 12 | 天天 | 26 | boy | 3 | 6 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 79 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 80 | 2 | 佐助 | 23 | boy | 7 | 1 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 81 | 3 | 春野樱 | 21 | girl | 7 | 3 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 82 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 83 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 84 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 85 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 86 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 87 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 88 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 89 | 11 | 李洛克 | 25 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 90 | 12 | 天天 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 91 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 92 | 2 | 佐助 | 23 | boy | 7 | 1 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 93 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 94 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 95 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 96 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 97 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 98 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 99 | 9 | 山中井野 | 22 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 100 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 101 | 11 | 李洛克 | 25 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 102 | 12 | 天天 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 103 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 8 | 夕日红老师 | 5 | 牙通牙 | 104 | 2 | 佐助 | 23 | boy | 7 | 1 | 8 | 夕日红老师 | 5 | 牙通牙 | 105 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 夕日红老师 | 5 | 牙通牙 | 106 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 牙通牙 | 107 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 108 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 109 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 110 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 牙通牙 | 111 | 9 | 山中井野 | 22 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 牙通牙 | 112 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 牙通牙 | 113 | 11 | 李洛克 | 25 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 牙通牙 | 114 | 12 | 天天 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 牙通牙 | 115 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 116 | 2 | 佐助 | 23 | boy | 7 | 1 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 117 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 118 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 119 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 120 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 121 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 122 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 123 | 9 | 山中井野 | 22 | boy | 10 | 4 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 124 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 125 | 11 | 李洛克 | 25 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 126 | 12 | 天天 | 26 | boy | 3 | 6 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 127 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 128 | 2 | 佐助 | 23 | boy | 7 | 1 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 129 | 3 | 春野樱 | 21 | girl | 7 | 3 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 130 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 131 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 132 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 133 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 134 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 135 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 136 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 137 | 11 | 李洛克 | 25 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 138 | 12 | 天天 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 139 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 140 | 2 | 佐助 | 23 | boy | 7 | 1 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 141 | 3 | 春野樱 | 21 | girl | 7 | 3 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 142 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 143 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 144 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 145 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 146 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 147 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 148 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 149 | 11 | 李洛克 | 25 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 150 | 12 | 天天 | 26 | boy | 3 | 6 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 151 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 3 | 迈特凯 | 6 | 八门遁甲 | 152 | 2 | 佐助 | 23 | boy | 7 | 1 | 3 | 迈特凯 | 6 | 八门遁甲 | 153 | 3 | 春野樱 | 21 | girl | 7 | 3 | 3 | 迈特凯 | 6 | 八门遁甲 | 154 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八门遁甲 | 155 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 3 | 迈特凯 | 6 | 八门遁甲 | 156 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 八门遁甲 | 157 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 八门遁甲 | 158 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八门遁甲 | 159 | 9 | 山中井野 | 22 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八门遁甲 | 160 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 161 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 162 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 163 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 3 | 迈特凯 | 6 | 提升龙 | 164 | 2 | 佐助 | 23 | boy | 7 | 1 | 3 | 迈特凯 | 6 | 提升龙 | 165 | 3 | 春野樱 | 21 | girl | 7 | 3 | 3 | 迈特凯 | 6 | 提升龙 | 166 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 提升龙 | 167 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 3 | 迈特凯 | 6 | 提升龙 | 168 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 提升龙 | 169 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 提升龙 | 170 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 提升龙 | 171 | 9 | 山中井野 | 22 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 提升龙 | 172 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 173 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 174 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 175 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 176 | 2 | 佐助 | 23 | boy | 7 | 1 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 177 | 3 | 春野樱 | 21 | girl | 7 | 3 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 178 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 179 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 180 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 181 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 182 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 183 | 9 | 山中井野 | 22 | boy | 10 | 4 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 184 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 185 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 186 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 187 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 188 144 rows in set (0.00 sec) 189 190 mysql>
2.自然联结
自然联结又叫等值联结(内联结),把两张表中的对应字段(把相同的字段进行等值连接)做等值关联我们就把它称为等值连接。注意,条件联结是另外一种内联结哟,我们常用的还是等值联结。
1 mysql> select * from students; 2 +-----------+--------------+-----+--------+---------+-----------+ 3 | StudentID | Name | Age | Gender | ClassID | TeacherID | 4 +-----------+--------------+-----+--------+---------+-----------+ 5 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 6 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 9 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 11 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 12 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 13 | 9 | 山中井野 | 22 | boy | 10 | 4 | 14 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 15 | 11 | 李洛克 | 25 | boy | 3 | 6 | 16 | 12 | 天天 | 26 | boy | 3 | 6 | 17 +-----------+--------------+-----+--------+---------+-----------+ 18 12 rows in set (0.00 sec) 19 20 mysql> select * from tearchers; 21 +---------+-------------------------+-----------+--------------------+ 22 | ClassID | Name | TeacherID | Ninjutsu_course | 23 +---------+-------------------------+-----------+--------------------+ 24 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 25 | 7 | 大蛇丸 | 1 | 千鸟 | 26 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 27 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 28 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 29 | 8 | 夕日红老师 | 5 | 牙通牙 | 30 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 31 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 32 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 33 | 3 | 迈特凯 | 6 | 八门遁甲 | 34 | 3 | 迈特凯 | 6 | 提升龙 | 35 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 36 +---------+-------------------------+-----------+--------------------+ 37 12 rows in set (0.00 sec) 38 39 mysql> 40 mysql> select * from students,tearchers where students.ClassID = tearchers.ClassID; 41 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 42 | StudentID | Name | Age | Gender | ClassID | TeacherID | ClassID | Name | TeacherID | Ninjutsu_course | 43 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 44 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 45 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 46 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 自来也(好色仙人) | 2 | 螺旋丸手里剑 | 47 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 大蛇丸 | 1 | 千鸟 | 48 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 大蛇丸 | 1 | 千鸟 | 49 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 大蛇丸 | 1 | 千鸟 | 50 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 51 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 52 | 3 | 春野樱 | 21 | girl | 7 | 3 | 7 | 五代目火影纲手 | 3 | 百豪之术 | 53 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 54 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 55 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 影缝 | 56 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 57 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 58 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 柔步双狮拳 | 59 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 60 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 61 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 牙通牙 | 62 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 63 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 64 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 8 | 夕日红老师 | 5 | 寄坏虫术 | 65 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 66 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 67 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 肉弹战车 | 68 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 69 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 70 | 9 | 山中井野 | 22 | boy | 10 | 4 | 10 | 猿飞阿斯玛 | 4 | 心转身之术 | 71 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 72 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 73 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八门遁甲 | 74 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 75 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 76 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 提升龙 | 77 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 78 | 11 | 李洛克 | 25 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 79 | 12 | 天天 | 26 | boy | 3 | 6 | 3 | 迈特凯 | 6 | 八卦六十四掌 | 80 +-----------+--------------+-----+--------+---------+-----------+---------+-------------------------+-----------+--------------------+ 81 36 rows in set (0.00 sec) 82 83 mysql>
1 mysql> select students.Name,tearchers.Ninjutsu_course from students,tearchers where students.ClassID = tearchers.ClassID; 2 +--------------+--------------------+ 3 | Name | Ninjutsu_course | 4 +--------------+--------------------+ 5 | 旋涡鸣人 | 螺旋丸手里剑 | 6 | 佐助 | 螺旋丸手里剑 | 7 | 春野樱 | 螺旋丸手里剑 | 8 | 旋涡鸣人 | 千鸟 | 9 | 佐助 | 千鸟 | 10 | 春野樱 | 千鸟 | 11 | 旋涡鸣人 | 百豪之术 | 12 | 佐助 | 百豪之术 | 13 | 春野樱 | 百豪之术 | 14 | 奈良鹿丸 | 影缝 | 15 | 秋道丁次 | 影缝 | 16 | 山中井野 | 影缝 | 17 | 日向雏田 | 柔步双狮拳 | 18 | 犬冢牙 | 柔步双狮拳 | 19 | 油女志乃 | 柔步双狮拳 | 20 | 日向雏田 | 牙通牙 | 21 | 犬冢牙 | 牙通牙 | 22 | 油女志乃 | 牙通牙 | 23 | 日向雏田 | 寄坏虫术 | 24 | 犬冢牙 | 寄坏虫术 | 25 | 油女志乃 | 寄坏虫术 | 26 | 奈良鹿丸 | 肉弹战车 | 27 | 秋道丁次 | 肉弹战车 | 28 | 山中井野 | 肉弹战车 | 29 | 奈良鹿丸 | 心转身之术 | 30 | 秋道丁次 | 心转身之术 | 31 | 山中井野 | 心转身之术 | 32 | 日向宁次 | 八门遁甲 | 33 | 李洛克 | 八门遁甲 | 34 | 天天 | 八门遁甲 | 35 | 日向宁次 | 提升龙 | 36 | 李洛克 | 提升龙 | 37 | 天天 | 提升龙 | 38 | 日向宁次 | 八卦六十四掌 | 39 | 李洛克 | 八卦六十四掌 | 40 | 天天 | 八卦六十四掌 | 41 +--------------+--------------------+ 42 36 rows in set (0.00 sec) 43 44 mysql>
1 mysql> select Name from students; 2 +--------------+ 3 | Name | 4 +--------------+ 5 | 旋涡鸣人 | 6 | 佐助 | 7 | 春野樱 | 8 | 奈良鹿丸 | 9 | 日向雏田 | 10 | 犬冢牙 | 11 | 油女志乃 | 12 | 秋道丁次 | 13 | 山中井野 | 14 | 日向宁次 | 15 | 李洛克 | 16 | 天天 | 17 +--------------+ 18 12 rows in set (0.00 sec) 19 20 mysql> select Name as studentName from students; 21 +--------------+ 22 | studentName | 23 +--------------+ 24 | 旋涡鸣人 | 25 | 佐助 | 26 | 春野樱 | 27 | 奈良鹿丸 | 28 | 日向雏田 | 29 | 犬冢牙 | 30 | 油女志乃 | 31 | 秋道丁次 | 32 | 山中井野 | 33 | 日向宁次 | 34 | 李洛克 | 35 | 天天 | 36 +--------------+ 37 12 rows in set (0.00 sec) 38 39 mysql>
1 mysql> select students.Name,tearchers.Ninjutsu_course from students,tearchers where students.ClassID = tearchers.ClassID; 2 +--------------+--------------------+ 3 | Name | Ninjutsu_course | 4 +--------------+--------------------+ 5 | 旋涡鸣人 | 螺旋丸手里剑 | 6 | 佐助 | 螺旋丸手里剑 | 7 | 春野樱 | 螺旋丸手里剑 | 8 | 旋涡鸣人 | 千鸟 | 9 | 佐助 | 千鸟 | 10 | 春野樱 | 千鸟 | 11 | 旋涡鸣人 | 百豪之术 | 12 | 佐助 | 百豪之术 | 13 | 春野樱 | 百豪之术 | 14 | 奈良鹿丸 | 影缝 | 15 | 秋道丁次 | 影缝 | 16 | 山中井野 | 影缝 | 17 | 日向雏田 | 柔步双狮拳 | 18 | 犬冢牙 | 柔步双狮拳 | 19 | 油女志乃 | 柔步双狮拳 | 20 | 日向雏田 | 牙通牙 | 21 | 犬冢牙 | 牙通牙 | 22 | 油女志乃 | 牙通牙 | 23 | 日向雏田 | 寄坏虫术 | 24 | 犬冢牙 | 寄坏虫术 | 25 | 油女志乃 | 寄坏虫术 | 26 | 奈良鹿丸 | 肉弹战车 | 27 | 秋道丁次 | 肉弹战车 | 28 | 山中井野 | 肉弹战车 | 29 | 奈良鹿丸 | 心转身之术 | 30 | 秋道丁次 | 心转身之术 | 31 | 山中井野 | 心转身之术 | 32 | 日向宁次 | 八门遁甲 | 33 | 李洛克 | 八门遁甲 | 34 | 天天 | 八门遁甲 | 35 | 日向宁次 | 提升龙 | 36 | 李洛克 | 提升龙 | 37 | 天天 | 提升龙 | 38 | 日向宁次 | 八卦六十四掌 | 39 | 李洛克 | 八卦六十四掌 | 40 | 天天 | 八卦六十四掌 | 41 +--------------+--------------------+ 42 36 rows in set (0.00 sec) 43 44 mysql> select s.Name,t.Ninjutsu_course from students as s,tearchers as t where s.ClassID = t.ClassID; 45 +--------------+--------------------+ 46 | Name | Ninjutsu_course | 47 +--------------+--------------------+ 48 | 旋涡鸣人 | 螺旋丸手里剑 | 49 | 佐助 | 螺旋丸手里剑 | 50 | 春野樱 | 螺旋丸手里剑 | 51 | 旋涡鸣人 | 千鸟 | 52 | 佐助 | 千鸟 | 53 | 春野樱 | 千鸟 | 54 | 旋涡鸣人 | 百豪之术 | 55 | 佐助 | 百豪之术 | 56 | 春野樱 | 百豪之术 | 57 | 奈良鹿丸 | 影缝 | 58 | 秋道丁次 | 影缝 | 59 | 山中井野 | 影缝 | 60 | 日向雏田 | 柔步双狮拳 | 61 | 犬冢牙 | 柔步双狮拳 | 62 | 油女志乃 | 柔步双狮拳 | 63 | 日向雏田 | 牙通牙 | 64 | 犬冢牙 | 牙通牙 | 65 | 油女志乃 | 牙通牙 | 66 | 日向雏田 | 寄坏虫术 | 67 | 犬冢牙 | 寄坏虫术 | 68 | 油女志乃 | 寄坏虫术 | 69 | 奈良鹿丸 | 肉弹战车 | 70 | 秋道丁次 | 肉弹战车 | 71 | 山中井野 | 肉弹战车 | 72 | 奈良鹿丸 | 心转身之术 | 73 | 秋道丁次 | 心转身之术 | 74 | 山中井野 | 心转身之术 | 75 | 日向宁次 | 八门遁甲 | 76 | 李洛克 | 八门遁甲 | 77 | 天天 | 八门遁甲 | 78 | 日向宁次 | 提升龙 | 79 | 李洛克 | 提升龙 | 80 | 天天 | 提升龙 | 81 | 日向宁次 | 八卦六十四掌 | 82 | 李洛克 | 八卦六十四掌 | 83 | 天天 | 八卦六十四掌 | 84 +--------------+--------------------+ 85 36 rows in set (0.00 sec) 86 87 mysql>
3.外链接
a>.左外联结:
只保留出现在左外连接元算之前(左边)的关系中的元组(以左表为准,)
1 mysql> select s.Name,t.Ninjutsu_course from students as s left join tearchers as t on s.ClassID = t.ClassID; 2 +--------------+--------------------+ 3 | Name | Ninjutsu_course | 4 +--------------+--------------------+ 5 | 旋涡鸣人 | 螺旋丸手里剑 | 6 | 旋涡鸣人 | 千鸟 | 7 | 旋涡鸣人 | 百豪之术 | 8 | 佐助 | 螺旋丸手里剑 | 9 | 佐助 | 千鸟 | 10 | 佐助 | 百豪之术 | 11 | 春野樱 | 螺旋丸手里剑 | 12 | 春野樱 | 千鸟 | 13 | 春野樱 | 百豪之术 | 14 | 奈良鹿丸 | 影缝 | 15 | 奈良鹿丸 | 肉弹战车 | 16 | 奈良鹿丸 | 心转身之术 | 17 | 日向雏田 | 柔步双狮拳 | 18 | 日向雏田 | 牙通牙 | 19 | 日向雏田 | 寄坏虫术 | 20 | 犬冢牙 | 柔步双狮拳 | 21 | 犬冢牙 | 牙通牙 | 22 | 犬冢牙 | 寄坏虫术 | 23 | 油女志乃 | 柔步双狮拳 | 24 | 油女志乃 | 牙通牙 | 25 | 油女志乃 | 寄坏虫术 | 26 | 秋道丁次 | 影缝 | 27 | 秋道丁次 | 肉弹战车 | 28 | 秋道丁次 | 心转身之术 | 29 | 山中井野 | 影缝 | 30 | 山中井野 | 肉弹战车 | 31 | 山中井野 | 心转身之术 | 32 | 日向宁次 | 八门遁甲 | 33 | 日向宁次 | 提升龙 | 34 | 日向宁次 | 八卦六十四掌 | 35 | 李洛克 | 八门遁甲 | 36 | 李洛克 | 提升龙 | 37 | 李洛克 | 八卦六十四掌 | 38 | 天天 | 八门遁甲 | 39 | 天天 | 提升龙 | 40 | 天天 | 八卦六十四掌 | 41 +--------------+--------------------+ 42 36 rows in set (0.02 sec) 43 44 mysql>
b>.右外联结:
只保留出现在右外连接元算之后(右边)的关系中的元组(以右表为准)
1 mysql> select s.Name,t.Ninjutsu_course from students as s right join tearchers as t on s.ClassID = t.ClassID; 2 +--------------+--------------------+ 3 | Name | Ninjutsu_course | 4 +--------------+--------------------+ 5 | 旋涡鸣人 | 螺旋丸手里剑 | 6 | 佐助 | 螺旋丸手里剑 | 7 | 春野樱 | 螺旋丸手里剑 | 8 | 旋涡鸣人 | 千鸟 | 9 | 佐助 | 千鸟 | 10 | 春野樱 | 千鸟 | 11 | 旋涡鸣人 | 百豪之术 | 12 | 佐助 | 百豪之术 | 13 | 春野樱 | 百豪之术 | 14 | 奈良鹿丸 | 影缝 | 15 | 秋道丁次 | 影缝 | 16 | 山中井野 | 影缝 | 17 | 日向雏田 | 柔步双狮拳 | 18 | 犬冢牙 | 柔步双狮拳 | 19 | 油女志乃 | 柔步双狮拳 | 20 | 日向雏田 | 牙通牙 | 21 | 犬冢牙 | 牙通牙 | 22 | 油女志乃 | 牙通牙 | 23 | 日向雏田 | 寄坏虫术 | 24 | 犬冢牙 | 寄坏虫术 | 25 | 油女志乃 | 寄坏虫术 | 26 | 奈良鹿丸 | 肉弹战车 | 27 | 秋道丁次 | 肉弹战车 | 28 | 山中井野 | 肉弹战车 | 29 | 奈良鹿丸 | 心转身之术 | 30 | 秋道丁次 | 心转身之术 | 31 | 山中井野 | 心转身之术 | 32 | 日向宁次 | 八门遁甲 | 33 | 李洛克 | 八门遁甲 | 34 | 天天 | 八门遁甲 | 35 | 日向宁次 | 提升龙 | 36 | 李洛克 | 提升龙 | 37 | 天天 | 提升龙 | 38 | 日向宁次 | 八卦六十四掌 | 39 | 李洛克 | 八卦六十四掌 | 40 | 天天 | 八卦六十四掌 | 41 +--------------+--------------------+ 42 36 rows in set (0.00 sec) 43 44 mysql>
c>.全外联接:
全外联结就表示二者左右都出现,保留两个关系中的每一个元组,MySQL并不支持全外链接。
4.自联结
自联结说白了就是自己联结自己。
1 mysql> select t.Name,s.Name from students as s,students as t where s.StudentID = t.TeacherID; 2 +--------------+--------------+ 3 | Name | Name | 4 +--------------+--------------+ 5 | 旋涡鸣人 | 佐助 | 6 | 佐助 | 旋涡鸣人 | 7 | 春野樱 | 春野樱 | 8 | 奈良鹿丸 | 奈良鹿丸 | 9 | 日向雏田 | 日向雏田 | 10 | 犬冢牙 | 日向雏田 | 11 | 油女志乃 | 日向雏田 | 12 | 秋道丁次 | 奈良鹿丸 | 13 | 山中井野 | 奈良鹿丸 | 14 | 日向宁次 | 犬冢牙 | 15 | 李洛克 | 犬冢牙 | 16 | 天天 | 犬冢牙 | 17 +--------------+--------------+ 18 12 rows in set (0.02 sec) 19 20 mysql>
三.子查询
在查询中嵌套的查询我们就叫做子查询。MySQL并不擅长子查询,因此我们最后避免使用子查询,且大多数的子查询都可以改为链接查询。
1.用于WHERE中的子查询
a.用于比较表达式中的子查询,这种情况下子查询的返回值只能有一个!
b.用于EXISTS中的子查询,这种情况下是判断存在与否
1 mysql> select Name,ClassID from students where ClassID = 7 or ClassID = 8; 2 +--------------+---------+ 3 | Name | ClassID | 4 +--------------+---------+ 5 | 旋涡鸣人 | 7 | 6 | 佐助 | 7 | 7 | 春野樱 | 7 | 8 | 日向雏田 | 8 | 9 | 犬冢牙 | 8 | 10 | 油女志乃 | 8 | 11 +--------------+---------+ 12 6 rows in set (0.01 sec) 13 14 mysql>
c.用于IN中的子查询,这种情况下是判断存在于指定列表中
2.用于FROM中子查询
1 mysql> select * from students where Gender='boy'; 2 +-----------+--------------+-----+--------+---------+-----------+ 3 | StudentID | Name | Age | Gender | ClassID | TeacherID | 4 +-----------+--------------+-----+--------+---------+-----------+ 5 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 6 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 8 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 9 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 10 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 11 | 9 | 山中井野 | 22 | boy | 10 | 4 | 12 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 13 | 11 | 李洛克 | 25 | boy | 3 | 6 | 14 | 12 | 天天 | 26 | boy | 3 | 6 | 15 +-----------+--------------+-----+--------+---------+-----------+ 16 10 rows in set (0.01 sec) 17 18 mysql> 19 mysql> 20 mysql> 21 mysql> select s.Name,s.Age,s.Gender from (select * from students where Gender='boy') as s where s.Age >23; 22 +--------------+-----+--------+ 23 | Name | Age | Gender | 24 +--------------+-----+--------+ 25 | 旋涡鸣人 | 25 | boy | 26 | 奈良鹿丸 | 26 | boy | 27 | 犬冢牙 | 24 | boy | 28 | 日向宁次 | 26 | boy | 29 | 李洛克 | 25 | boy | 30 | 天天 | 26 | boy | 31 +--------------+-----+--------+ 32 6 rows in set (0.00 sec) 33 34 mysql>
四.MySQL的联合查询:
联合查询是把两个或多个查询语句的结果合并成一个结果进行输出。用法格式:“ select clauase union select clause union..... ”
1 mysql> select Name from students union select Name from tearchers; #注意,两张表必须都要有相同类型的字段哟,即Name字段。 2 +-------------------------+ 3 | Name | 4 +-------------------------+ 5 | 旋涡鸣人 | 6 | 佐助 | 7 | 春野樱 | 8 | 奈良鹿丸 | 9 | 日向雏田 | 10 | 犬冢牙 | 11 | 油女志乃 | 12 | 秋道丁次 | 13 | 山中井野 | 14 | 日向宁次 | 15 | 李洛克 | 16 | 天天 | 17 | 自来也(好色仙人) | 18 | 大蛇丸 | 19 | 五代目火影纲手 | 20 | 猿飞阿斯玛 | 21 | 夕日红老师 | 22 | 迈特凯 | 23 +-------------------------+ 24 18 rows in set (0.01 sec) 25 26 mysql>
五.索引
1 mysql> explain select Name,Age from students where Age > 24\G #解释命令,查看命令的执行过程 2 *************************** 1. row *************************** 3 id: 1 4 select_type: SIMPLE 5 table: students 6 type: ALL 7 possible_keys: NULL 8 key: NULL 9 key_len: NULL 10 ref: NULL 11 rows: 12 12 Extra: Using where 13 1 row in set (0.00 sec) 14 15 mysql> alter table students add index(Age); #创建索引 16 Query OK, 12 rows affected (0.05 sec) 17 Records: 12 Duplicates: 0 Warnings: 0 18 19 mysql> show indexes from students; #查看索引 20 +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 21 | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | 22 +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 23 | students | 0 | PRIMARY | 1 | StudentID | A | 2 | NULL | NULL | | BTREE | | 24 | students | 0 | PRIMARY | 2 | Name | A | 2 | NULL | NULL | | BTREE | | 25 | students | 1 | Age | 1 | Age | A | 2 | NULL | NULL | | BTREE | | 26 +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 27 3 rows in set (0.00 sec) 28 29 mysql> explain select Name,Age from students where Age > 24\G 30 *************************** 1. row *************************** 31 id: 1 32 select_type: SIMPLE 33 table: students 34 type: range 35 possible_keys: Age #由于我们创建了索引,因此在查询的过程中我们是可能会用到该索引的。 36 key: Age 37 key_len: 1 38 ref: NULL #但是由于我们的表实在是太小了,因此即使我们创建了索引咱们这还是没有用到哟。 39 rows: 5 40 Extra: Using where; Using index 41 1 row in set (0.00 sec) 42 43 mysql>
六.视图
MySQL视图是一张虚表,它是存储下来的select语句,当然你可以理解为是MySQL的子查询,只不过子查询是在内存中保存,而试图视可以将查询的结果以一个表的形式存储起来。
1.创建视图
1 mysql> show tables; 2 +-----------------------+ 3 | Tables_in_yinzhengjie | 4 +-----------------------+ 5 | Classes | 6 | score | 7 | students | 8 | tearchers | 9 +-----------------------+ 10 4 rows in set (0.00 sec) 11 12 mysql> create view yinzhengjie_view as select StudentID,Name,Age from students; #创建视图 13 Query OK, 0 rows affected (0.01 sec) 14 15 mysql> show tables; 16 +-----------------------+ 17 | Tables_in_yinzhengjie | 18 +-----------------------+ 19 | Classes | 20 | score | 21 | students | 22 | tearchers | 23 | yinzhengjie_view | 24 +-----------------------+ 25 5 rows in set (0.00 sec) 26 27 mysql> show table status where Name='yinzhengjie_view'\G 28 *************************** 1. row *************************** 29 Name: yinzhengjie_view #这个就是我们刚刚创建的视图名称。 30 Engine: NULL 31 Version: NULL 32 Row_format: NULL 33 Rows: NULL 34 Avg_row_length: NULL 35 Data_length: NULL 36 Max_data_length: NULL 37 Index_length: NULL 38 Data_free: NULL 39 Auto_increment: NULL 40 Create_time: NULL 41 Update_time: NULL 42 Check_time: NULL 43 Collation: NULL 44 Checksum: NULL 45 Create_options: NULL 46 Comment: VIEW #我们会发现它是个虚表,没有存储引擎等之类的属性。 47 1 row in set (0.00 sec) 48 49 mysql> 50 mysql> select * from yinzhengjie_view; #当然我们也可以查看咱们创建的试图数据。 51 +-----------+--------------+-----+ 52 | StudentID | Name | Age | 53 +-----------+--------------+-----+ 54 | 3 | 春野樱 | 21 | 55 | 9 | 山中井野 | 22 | 56 | 2 | 佐助 | 23 | 57 | 5 | 日向雏田 | 23 | 58 | 7 | 油女志乃 | 23 | 59 | 8 | 秋道丁次 | 23 | 60 | 6 | 犬冢牙 | 24 | 61 | 1 | 旋涡鸣人 | 25 | 62 | 11 | 李洛克 | 25 | 63 | 4 | 奈良鹿丸 | 26 | 64 | 10 | 日向宁次 | 26 | 65 | 12 | 天天 | 26 | 66 +-----------+--------------+-----+ 67 12 rows in set (0.00 sec) 68 69 mysql> 70 mysql> show create view yinzhengjie_view\G #查看视图是如何创建的。 71 *************************** 1. row *************************** 72 View: yinzhengjie_view 73 Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `yinzhengjie_view` AS select `students`.`StudentID` AS `StudentID`,`students`.`Name` AS `Name`,`students`.`Age` AS `Age` from `students` 74 character_set_client: latin1 75 collation_connection: latin1_swedish_ci 76 1 row in set (0.00 sec) 77 78 mysql>
2.使用视图
1 mysql> grant all on yinzhengjie.yinzhengjie_view to 'yinzhengjie'@'10.%.%.%' identified by 'yinzhengjie'; #给测试用户授权 2 Query OK, 0 rows affected (0.00 sec) 3 4 mysql> 5 mysql> \q 6 Bye 7 You have new mail in /var/spool/mail/root 8 [root@yinzhengjie ~]# mysql -uyinzhengjie -h10.0.0.115 -pyinzhengjie 9 Welcome to the MySQL monitor. Commands end with ; or \g. 10 Your MySQL connection id is 11 11 Server version: 5.1.73 Source distribution 12 13 Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 14 15 Oracle is a registered trademark of Oracle Corporation and/or its 16 affiliates. Other names may be trademarks of their respective 17 owners. 18 19 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 20 21 mysql> show databases; 22 +--------------------+ 23 | Database | 24 +--------------------+ 25 | information_schema | 26 | test | 27 | yinzhengjie | 28 +--------------------+ 29 3 rows in set (0.00 sec) 30 31 mysql> use yinzhengjie 32 Reading table information for completion of table and column names 33 You can turn off this feature to get a quicker startup with -A 34 35 Database changed 36 mysql> show tables; 37 +-----------------------+ 38 | Tables_in_yinzhengjie | 39 +-----------------------+ 40 | Classes | 41 | score | 42 | students | 43 | tearchers | 44 | yinzhengjie_view | 45 +-----------------------+ 46 5 rows in set (0.00 sec) 47 48 mysql> desc yinzhengjie_view; #最终用户只能查看到我们允许他看到的字段哟,不过要注意的是,虚表是不能存储数据的,真正存储数据的还是它的基表。 49 +-----------+--------------+------+-----+---------+-------+ 50 | Field | Type | Null | Key | Default | Extra | 51 +-----------+--------------+------+-----+---------+-------+ 52 | StudentID | mediumint(9) | NO | | 0 | | 53 | Name | varchar(50) | NO | | NULL | | 54 | Age | tinyint(4) | NO | | NULL | | 55 +-----------+--------------+------+-----+---------+-------+ 56 3 rows in set (0.00 sec) 57 58 mysql> select * from yinzhengjie_view; 59 +-----------+--------------+-----+ 60 | StudentID | Name | Age | 61 +-----------+--------------+-----+ 62 | 3 | 春野樱 | 21 | 63 | 9 | 山中井野 | 22 | 64 | 2 | 佐助 | 23 | 65 | 5 | 日向雏田 | 23 | 66 | 7 | 油女志乃 | 23 | 67 | 8 | 秋道丁次 | 23 | 68 | 6 | 犬冢牙 | 24 | 69 | 1 | 旋涡鸣人 | 25 | 70 | 11 | 李洛克 | 25 | 71 | 4 | 奈良鹿丸 | 26 | 72 | 10 | 日向宁次 | 26 | 73 | 12 | 天天 | 26 | 74 +-----------+--------------+-----+ 75 12 rows in set (0.00 sec) 76 77 mysql>
3.删除视图
1 mysql> show tables; 2 +-----------------------+ 3 | Tables_in_yinzhengjie | 4 +-----------------------+ 5 | Classes | 6 | score | 7 | students | 8 | tearchers | 9 | yinzhengjie_view | 10 +-----------------------+ 11 5 rows in set (0.00 sec) 12 13 mysql> 14 mysql> drop view yinzhengjie_view; #删除视图 15 Query OK, 0 rows affected (0.00 sec) 16 17 mysql> show tables; 18 +-----------------------+ 19 | Tables_in_yinzhengjie | 20 +-----------------------+ 21 | Classes | 22 | score | 23 | students | 24 | tearchers | 25 +-----------------------+ 26 4 rows in set (0.00 sec) 27 28 mysql>
七.MySQL的数据插入操作
1 replace 替换表中数据,用法同insert,除了在新插入的数据与表中的主键或唯一索引定义的数据相同会替换老的行。insert的用法有以下三种:
2 第一种:
3 insert into tb_name [(col1,col2,....)]{values(批量插入)|value(插入单行)}(val1,val2,...)[,(val21,val22,....),....]
4 第二种:(这种方式适合插入一行)
5 insert into tb_name set col_name=val1,col2=val2,....
6 第三种(将一个表中的数据插入到另外一张表中):
7 insert into tb_name select clause
八.MySQL的更新操作
1 UPDATE [LOW_PRIORITY] [IGNORE] table_reference
2 SET col_name1=val1 [, col_name2={val2] ...
3 [WHERE where_condition] #查找过滤的条件
4 [ORDER BY ...] #将查询的结果进行排序操作
5 [LIMIT row_count] #限定修改的行数
6
7 update通常情况下,必须要使用where字句,或者使用limit限制要修改的行数
8
9 --safe-updates:启动时应该带选项
九.MySQL表的删除操作
1 delete:删除数据
2 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
3 [WHERE where_condition]
4 [ORDER BY ...]
5 [LIMIT row_count]
6
7 truncate tb_name 重置表的所有内容,当然也可以清空表的自动增长的数值哟。