2017-9-7:学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-9-7:学习笔记相关的知识,希望对你有一定的参考价值。
mysql
-
建立表与表之间的关系
多对一
左边表的多条记录对应右面表的唯一一条记录
1 #两张表:书,出版社,出版社可以出版多本书,但是一本书只能被一个出版社出版 2 3 4 #出版社************************************ 5 create table press( 6 id int primary key auto_increment, 7 name varchar(20) 8 ); 9 insert into press(name) values 10 (‘北京工业地雷出版社‘), 11 (‘人民音乐不好听出版社‘), 12 (‘知识产权没有用出版社‘) 13 ; 14 mysql> select * from press; 15 +----+----------------------+ 16 | id | name | 17 +----+----------------------+ 18 | 1 | 北京工业地雷出版社 | 19 | 2 | 人民音乐不好听出版社 | 20 | 3 | 知识产权没有用出版社 | 21 +----+----------------------+ 22 23 24 25 #书************************************** 26 create table book( 27 id int primary key auto_increment, 28 name varchar(20), 29 press_id int, 30 foreign key(press_id) references press(id) 31 on delete cascade 32 on update cascade 33 ); 34 35 36 insert into book(name,press_id) values 37 (‘九阳神功‘,1), 38 (‘九阴真经‘,2), 39 (‘九阴白骨爪‘,2), 40 (‘独孤九剑‘,3), 41 (‘降龙十巴掌‘,2), 42 (‘葵花宝典‘,3) 43 ; 44 mysql> select * from book; 45 +----+------------+----------+ 46 | id | name | press_id | 47 +----+------------+----------+ 48 | 1 | 九阳神功 | 1 | 49 | 2 | 九阴真经 | 2 | 50 | 3 | 九阴白骨爪 | 2 | 51 | 4 | 独孤九剑 | 3 | 52 | 5 | 降龙十巴掌 | 2 | 53 | 6 | 葵花宝典 | 3 | 54 +----+------------+----------+
多对多
多对多: 使用中间表,分别引用两方的ID
1 #示例: 2 #这种关系在实际中也很常见,比如:一个老师教很多学生的课,一个学生选了很多老师的课。那么,老师和学生之间就是多对多的关系。 3 #老师表******************************* 4 #创建 5 create table teacher( 6 id int primary key auto_increment, 7 name varchar(10), 8 age int, 9 phone int 10 ); 11 12 #加入数据 13 insert into teacher(name,age,phone) values(‘刘武‘,99,1332222), 14 (‘刘武1‘,97,1332222), 15 (‘刘武2‘,88,1332228), 16 (‘刘武3‘,9,1332229), 17 (‘刘武4‘,45,133222221), 18 (‘刘武5‘,12,13322223), 19 (‘刘武6‘,13,13322224), 20 (‘刘武7‘,14,1332225), 21 (‘刘武8‘,15,13322226), 22 (‘刘武9‘,16,1332255); 23 #查看 24 mysql> select * from teacher; 25 +----+-------+------+-----------+ 26 | id | name | age | phone | 27 +----+-------+------+-----------+ 28 | 1 | 刘武 | 99 | 1332222 | 29 | 2 | 刘武1 | 97 | 1332222 | 30 | 3 | 刘武2 | 88 | 1332228 | 31 | 4 | 刘武3 | 9 | 1332229 | 32 | 5 | 刘武4 | 45 | 133222221 | 33 | 6 | 刘武5 | 12 | 13322223 | 34 | 7 | 刘武6 | 13 | 13322224 | 35 | 8 | 刘武7 | 14 | 1332225 | 36 | 9 | 刘武8 | 15 | 13322226 | 37 | 10 | 刘武9 | 16 | 1332255 | 38 +----+-------+------+-----------+ 39 40 #学生表******************************* 41 42 #创建 43 create table student( 44 id int primary key auto_increment, 45 name varchar(10), 46 class_number varchar(10) 47 ); 48 #插入数据 49 insert into student(name,class_number)values 50 (‘大锤1‘,‘幼儿小班‘), 51 (‘大锤2‘,‘幼儿大班‘), 52 (‘大锤3‘,‘幼儿小班‘), 53 (‘大锤4‘,‘幼儿大班‘), 54 (‘大锤5‘,‘幼儿中班‘), 55 (‘大锤6‘,‘幼儿学前班‘) 56 ; 57 #查看 58 select * from student; 59 mysql> select * from student; 60 +----+-------+--------------+ 61 | id | name | class_number | 62 +----+-------+--------------+ 63 | 1 | 大锤1 | 幼儿小班 | 64 | 2 | 大锤2 | 幼儿大班 | 65 | 3 | 大锤3 | 幼儿小班 | 66 | 4 | 大锤4 | 幼儿大班 | 67 | 5 | 大锤5 | 幼儿中班 | 68 | 6 | 大锤6 | 幼儿学前班 | 69 +----+-------+--------------+ 70 71 72 #中间表******************************* 73 74 #创建表 75 create table stu_tea( 76 id int primary key auto_increment, 77 stu_id int, 78 tea_id int, 79 foreign key(stu_id) references student(id) 80 on update cascade 81 on delete cascade, 82 foreign key(tea_id) references teacher(id) 83 on update cascade 84 on delete cascade 85 ); 86 87 #插入数据 88 insert into stu_tea(stu_id,tea_id) values 89 (1,1), 90 (1,2), 91 (1,10), 92 (2,9), 93 (3,9), 94 (4,7), 95 (5,8), 96 (6,6), 97 (3,2), 98 (4,10), 99 (5,1), 100 (6,1), 101 (6,5), 102 (3,1), 103 (4,4), 104 (5,10), 105 (6,3); 106 107 #查看表 108 select * from stu_tea; 109 mysql> select * from stu_tea; 110 +----+--------+--------+ 111 | id | stu_id | tea_id | 112 +----+--------+--------+ 113 | 1 | 1 | 1 | 114 | 2 | 1 | 2 | 115 | 3 | 1 | 10 | 116 | 4 | 2 | 9 | 117 | 5 | 3 | 9 | 118 | 6 | 4 | 7 | 119 | 7 | 5 | 8 | 120 | 8 | 6 | 6 | 121 | 9 | 3 | 2 | 122 | 10 | 4 | 10 | 123 | 11 | 5 | 1 | 124 | 12 | 6 | 1 | 125 | 13 | 6 | 5 | 126 | 14 | 3 | 1 | 127 | 15 | 4 | 4 | 128 | 16 | 5 | 10 | 129 | 17 | 6 | 3 | 130 +----+--------+--------+
一对一
主键同步 两个表中有关系的记录id一致
在一方加入另一方的外键 在另一方加入外键
1 #实例 2 #一夫一妻制度,就是一对一 3 *********************************** 4 #夫 5 #创建表 6 create table husband( 7 id int primary key auto_increment, 8 name varchar(10), 9 age int 10 ); 11 12 13 #插入数据 14 insert into husband(name,age) values 15 (‘大锤1‘,28), 16 (‘大锤2‘,26), 17 (‘大锤3‘,26), 18 (‘大锤4‘,25), 19 (‘大锤5‘,24); 20 21 22 #查看 23 select * from husband; 24 mysql> select * from husband; 25 +----+-------+------+ 26 | id | name | age | 27 +----+-------+------+ 28 | 1 | 大锤1 | 28 | 29 | 2 | 大锤2 | 26 | 30 | 3 | 大锤3 | 26 | 31 | 4 | 大锤4 | 25 | 32 | 5 | 大锤5 | 24 | 33 +----+-------+------+ 34 *********************************** 35 #妻 36 #创建表 37 create table wife( 38 id int primary key auto_increment, 39 name varchar(10), 40 age int, 41 hus_id int unique, 42 foreign key(hus_id) references husband(id) 43 on delete cascade 44 on update cascade 45 ); 46 47 48 #插入数据 49 insert into wife(name,age,hus_id) values 50 (‘阿波1‘,18,1), 51 (‘阿波2‘,17,2), 52 (‘阿波3‘,16,3), 53 (‘阿波4‘,15,4), 54 (‘阿波5‘,14,5); 55 56 #查看 57 select * from wife; 58 mysql> select * from wife; 59 +----+-------+------+--------+ 60 | id | name | age | hus_id | 61 +----+-------+------+--------+ 62 | 1 | 阿波1 | 18 | 1 | 63 | 2 | 阿波2 | 17 | 2 | 64 | 3 | 阿波3 | 16 | 3 | 65 | 4 | 阿波4 | 15 | 4 | 66 | 5 | 阿波5 | 14 | 5 | 67 +----+-------+------+--------+
-
select查询语句
1 select 单表查询 2 实例: 3 学生信息表 4 学号,姓名,出生日期,性别,学院,专业,班级,政治面貌,民族,电话,家庭住址,邮箱,照片,家长信息,备注 5 create table student_info( 6 7 #学号 8 stuid varchar(20) not null , 9 #姓名 10 name varchar(20)not null, 11 #出生日期 12 rdate date, 13 #性别 14 gender varchar(2), 15 #学院 16 institute varchar(20), 17 #专业 18 major varchar(20), 19 #班级 20 clazz varchar(10), 21 #政治面貌 22 politics varchar(8), 23 #民族 24 nationality varchar(10), 25 #电话 26 phone varchar(20), 27 #家庭住址 28 homeaddress varchar(100), 29 #邮箱 30 mail varchar(50), 31 #家长信息 32 parent varchar(100), 33 #备注 34 primary key (stuid) 35 ); 36 37 insert into student_info values(‘090210301‘,‘詹姆斯‘,‘1981-11-11‘,‘男‘,‘医学院‘,‘临床医学‘,‘2班‘,‘中共党员‘,‘侗族‘,‘1588888888‘,‘贵州贵阳‘,‘[email protected]‘,‘父亲:詹姆第,母亲:斯密斯‘,remark), 38 (‘090210302‘,‘石头‘,‘2007-06-30‘,‘男‘,‘土木学院‘,‘测绘学‘,‘4班‘,‘共青团员‘,‘鄂温克族‘,‘1232‘,‘河北邯郸‘,‘[email protected]‘,‘父亲:纷纷,母亲:落落‘,remark), 39 (‘090210303‘,‘Angela‘,‘2009-01-31‘,‘女‘,‘经管学院‘,‘经济学‘,‘1班‘,‘中共党员‘,‘汉族‘,‘1234456‘,‘湖南长沙‘,‘[email protected]‘,‘父亲:王岳伦,母亲:李湘‘,remark), 40 (‘090210304‘,‘鲁尼‘,‘1983-3-23‘,‘男‘,‘计算机学院‘,‘计算机‘,‘3班‘,‘群众‘,‘白族‘,‘5864‘,‘曼彻斯特‘,‘[email protected]‘,‘父亲:鲁鲁,母亲:妮妮‘,remark), 41 (‘090210305‘,‘莎拉波娃‘,‘1982-10-9‘,‘女‘,‘土木学院‘,‘测绘学‘,‘1班‘,‘国民党‘,‘女娲族‘,‘15821‘,‘莫斯科‘,‘[email protected]‘,‘父亲:老沙‘,remark), 42 (‘090210306‘,‘孙杨‘,‘1991-4-2‘,‘男‘,‘计算机学院‘,‘计算机‘,‘4班‘,‘中共党员‘,‘回族‘,‘3535‘,‘浙江杭州‘,‘[email protected]‘,‘父亲:老孙,母亲:孙母‘,remark), 43 (‘090210307‘,‘张默‘,‘1978-6-14‘,‘男‘,‘土木学院‘,‘测绘学‘,‘2班‘,‘群众‘,‘土家族‘,‘5223‘,‘重庆‘,‘[email protected]‘,‘父亲:张国立,母亲:邓婕‘,remark), 44 (‘090210308‘,‘岳灵珊‘,‘1232-5-3‘,‘女‘,‘医学院‘,‘临床医学‘,‘2班‘,‘中共党员‘,‘华山族‘,‘111‘,‘陕西华山‘,‘[email protected]‘,‘父亲:岳不群,母亲:宁中则‘,remark), 45 (‘090210309‘,‘杨延昭‘,‘1423-7-7‘,‘男‘,‘土木学院‘,‘测绘学‘,‘1班‘,‘群众‘,‘彝族‘,‘158246453342‘,‘河南开封‘,‘[email protected]‘,‘父亲:杨业,母亲:佘赛花‘,remark); 46 47 mysql> select * from student_info; 48 +-----------+----------+------------+--------+------------+----------+-------+----------+-------------+--------------+-------------+----------------+----------------------------+ 49 | stuid | name | rdate | gender | institute | major | clazz | politics | nationality | phone | homeaddress | mail | parent | 50 +-----------+----------+------------+--------+------------+----------+-------+----------+-------------+--------------+-------------+----------------+----------------------------+ 51 | 090210301 | 詹姆斯 | 1981-11-11 | 男 | 医学院 | 临床医学 | 2班 | 中共党员 | 侗族 | 1588888888 | 贵州贵阳 | [email protected]126.com | 父亲:詹姆第,母亲:斯密斯 | 52 | 090210302 | 石头 | 2007-06-30 | 男 | 土木学院 | 测绘学 | 4班 | 共青团员 | 鄂温克族 | 1232 | 河北邯郸 | [email protected] | 父亲:纷纷,母亲:落落 | 53 | 090210303 | Angela | 2009-01-31 | 女 | 经管学院 | 经济学 | 1班 | 中共党员 | 汉族 | 1234456 | 湖南长沙 | [email protected] | 父亲:王岳伦,母亲:李湘 | 54 | 090210304 | 鲁尼 | 1983-03-23 | 男 | 计算机学院 | 计算机 | 3班 | 群众 | 白族 | 5864 | 曼彻斯特 | [email protected] | 父亲:鲁鲁,母亲:妮妮 | 55 | 090210305 | 莎拉波娃 | 1982-10-09 | 女 | 土木学院 | 测绘学 | 1班 | 国民党 | 女娲族 | 15821 | 莫斯科 | [email protected] | 父亲:老沙 | 56 | 090210306 | 孙杨 | 1991-04-02 | 男 | 计算机学院 | 计算机 | 4班 | 中共党员 | 回族 | 3535 | 浙江杭州 | [email protected]126.com | 父亲:老孙,母亲:孙母 | 57 | 090210307 | 张默 | 1978-06-14 | 男 | 土木学院 | 测绘学 | 2班 | 群众 | 土家族 | 5223 | 重庆 | [email protected] | 父亲:张国立,母亲:邓婕 | 58 | 090210308 | 岳灵珊 | 1232-05-03 | 女 | 医学院 | 临床医学 | 2班 | 中共党员 | 华山族 | 111 | 陕西华山 | [email protected] | 父亲:岳不群,母亲:宁中则 | 59 | 090210309 | 杨延昭 | 1423-07-07 | 男 | 土木学院 | 测绘学 | 1班 | 群众 | 彝族 | 158246453342 | 河南开封 | [email protected]163.com | 父亲:杨业,母亲:佘赛花 | 60 +-----------+----------+------------+--------+------------+----------+-------+----------+-------------+--------------+-------------+----------------+----------------------------+
1 简单查询
1 select name,clazz from student_info; 2 +----------+-------+ 3 | name | clazz | 4 +----------+-------+ 5 | 詹姆斯 | 2班 | 6 | 石头 | 4班 | 7 | Angela | 1班 | 8 | 鲁尼 | 3班 | 9 | 莎拉波娃 | 1班 | 10 | 孙杨 | 4班 | 11 | 张默 | 2班 | 12 | 岳灵珊 | 2班 | 13 | 杨延昭 | 1班 | 14 +----------+-------+
2 where条件
1 查询班级为2班的学生姓名以及学号 2 select name,stuid from student_info where clazz=‘2班‘; 3 mysql> select name,stuid from student_info where clazz=‘2班‘; 4 +--------+-----------+ 5 | name | stuid | 6 +--------+-----------+ 7 | 詹姆斯 | 090210301 | 8 | 张默 | 090210307 | 9 | 岳灵珊 | 090210308 | 10 +--------+-----------+ 11 12 13 查询学号在090210301-090210305之间的学生的姓名以及家长信息 14 select name,parent from student_info where stuid>=090210301 and stuid <090210306; 15 mysql> select name,parent from student_info where stuid>=090210301 and stuid <090210306; 16 +----------+----------------------------+ 17 | name | parent | 18 +----------+----------------------------+ 19 | 詹姆斯 | 父亲:詹姆第,母亲:斯密斯 | 20 | 石头 | 父亲:纷纷,母亲:落落 | 21 | Angela | 父亲:王岳伦,母亲:李湘 | 22 | 鲁尼 | 父亲:鲁鲁,母亲:妮妮 | 23 | 莎拉波娃 | 父亲:老沙 | 24 +----------+----------------------------+ 25 26 查询学号在090210301-090210305之间的学生的家庭住址以及学院,专业信息 27 select name,institute,major,homeaddress from student_info where stuid between 090210301 and 090210305; 28 mysql> select name,institute,major,homeaddress from student_info where stuid between 090210301 and 090210305; 29 +----------+------------+----------+-------------+ 30 | name | institute | major | homeaddress | 31 +----------+------------+----------+-------------+ 32 | 詹姆斯 | 医学院 | 临床医学 | 贵州贵阳 | 33 | 石头 | 土木学院 | 测绘学 | 河北邯郸 | 34 | Angela | 经管学院 | 经济学 | 湖南长沙 | 35 | 鲁尼 | 计算机学院 | 计算机 | 曼彻斯特 | 36 | 莎拉波娃 | 土木学院 | 测绘学 | 莫斯科 | 37 +----------+------------+----------+-------------+ 38 5 rows in set (0.00 sec) 39 40 41 查询手机号中有8的学生的手机号,出生地,电子邮箱以及出生日期 42 select phone,rdate,homeaddress,mail from student_info 43 where phone like ‘%8%‘; 44 45 mysql> select phone,rdate,homeaddress,mail from student_info 46 -> where phone like ‘%8%‘; 47 +--------------+------------+-------------+----------------+ 48 | phone | rdate | homeaddress | mail | 49 +--------------+------------+-------------+----------------+ 50 | 1588888888 | 1981-11-11 | 贵州贵阳 | [email protected]126.com | 51 | 5864 | 1983-03-23 | 曼彻斯特 | [email protected] | 52 | 15821 | 1982-10-09 | 莫斯科 | [email protected] | 53 | 158246453342 | 1423-07-07 | 河南开封 | [email protected]163.com | 54 +--------------+------------+-------------+----------------+ 55 4 rows in set (0.00 sec)
3 group by分组
1 分别查看男生和女生 2 3 mysql> select gender,group_concat(name) from student_info group by gender; 4 +--------+-----------------------------------+ 5 | gender | group_concat(name) | 6 +--------+-----------------------------------+ 7 | 女 | Angela,莎拉波娃,岳灵珊 | 8 | 男 | 詹姆斯,石头,鲁尼,孙杨,张默,杨延昭 | 9 +--------+-----------------------------------+ 10 2 rows in set (0.00 sec) 11 12 13 14 统计男生女生多少人 15 select gender,count(stuid) from employee group by gender; 16 mysql> select gender,count(stuid) from student_info group by ge 17 +--------+--------------+ 18 | gender | count(stuid) | 19 +--------+--------------+ 20 | 女 | 3 | 21 | 男 | 6 | 22 +--------+--------------+ 23 2 rows in set (0.00 sec) 24 25 26 27 查看男生和女生当中手机号最大的那个值 28 mysql> select gender,max(phone) from student_info group by gender; 29 +--------+------------+ 30 | gender | max(phone) | 31 +--------+------------+ 32 | 女 | 15821 | 33 | 男 | 5864 | 34 +--------+------------+ 35 2 rows in set (0.02 sec) 36 #求出最小的手机号,根据男女分组 37 mysql> select gender,min(phone) from student_info group by gender; 38 +--------+------------+ 39 | gender | min(phone) | 40 +--------+------------+ 41 | 女 | 111 | 42 | 男 | 1232 | 43 +--------+------------+ 44 2 rows in set (0.00 sec) 45 46 #求出手机号的和,根据男女分组 47 48 mysql> select gender,sum(phone) from student_info group by gender; 49 +--------+--------------+ 50 | gender | sum(phone) | 51 +--------+--------------+ 52 | 女 | 1250388 | 53 | 男 | 159835358084 | 54 +--------+--------------+ 55 2 rows in set (0.00 sec) 56 #求出平均的手机号,根据男女分组 57 58 mysql> select gender,avg(phone) from student_info group by gender; 59 +--------+--------------------+ 60 | gender | avg(phone) | 61 +--------+--------------------+ 62 | 女 | 416796 | 63 | 男 | 26639226347.333332 | 64 +--------+--------------------+ 65 2 rows in set (0.00 sec) 66 67 (我把手机号的数字当成一个值进行计算的)
Study Hard And Make Progress Every Day!
以上是关于2017-9-7:学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段