码迷,mamicode.com
首页 > 其他好文 > 详细

2017-9-7:学习笔记

时间:2017-09-07 20:18:22      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:hone   inf   电话   华山   宝典   mil   创建   出版社   ***   

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,贵州贵阳,zms@126.com,父亲:詹姆第,母亲:斯密斯,remark),
38 (090210302,石头,2007-06-30,,土木学院,测绘学,4班,共青团员,鄂温克族,1232,河北邯郸,st@sina.com,父亲:纷纷,母亲:落落,remark),
39 (090210303,Angela,2009-01-31,,经管学院,经济学,1班,中共党员,汉族,1234456,湖南长沙,ag@qq.com,父亲:王岳伦,母亲:李湘,remark),
40 (090210304,鲁尼,1983-3-23,,计算机学院,计算机,3班,群众,白族,5864,曼彻斯特,ln@yahoo.com,父亲:鲁鲁,母亲:妮妮,remark),
41 (090210305,莎拉波娃,1982-10-9,,土木学院,测绘学,1班,国民党,女娲族,15821,莫斯科,slbw@gmail.com,父亲:老沙,remark),
42 (090210306,孙杨,1991-4-2,,计算机学院,计算机,4班,中共党员,回族,3535,浙江杭州,sun@126.com,父亲:老孙,母亲:孙母,remark),
43 (090210307,张默,1978-6-14,,土木学院,测绘学,2班,群众,土家族,5223,重庆,zhangmo@qq.com,父亲:张国立,母亲:邓婕,remark),
44 (090210308,岳灵珊,1232-5-3,,医学院,临床医学,2班,中共党员,华山族,111,陕西华山,yls@sina.com,父亲:岳不群,母亲:宁中则,remark),
45 (090210309,杨延昭,1423-7-7,,土木学院,测绘学,1班,群众,彝族,158246453342,河南开封,yang@163.com,父亲:杨业,母亲:佘赛花,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   | 贵州贵阳    | zms@126.com    | 父亲:詹姆第,母亲:斯密斯 |
52 | 090210302 | 石头     | 2007-06-30 | 男     | 土木学院   | 测绘学   | 4班   | 共青团员 | 鄂温克族    | 1232         | 河北邯郸    | st@sina.com    | 父亲:纷纷,母亲:落落     |
53 | 090210303 | Angela   | 2009-01-31 | 女     | 经管学院   | 经济学   | 1班   | 中共党员 | 汉族        | 1234456      | 湖南长沙    | ag@qq.com      | 父亲:王岳伦,母亲:李湘   |
54 | 090210304 | 鲁尼     | 1983-03-23 | 男     | 计算机学院 | 计算机   | 3班   | 群众     | 白族        | 5864         | 曼彻斯特    | ln@yahoo.com   | 父亲:鲁鲁,母亲:妮妮     |
55 | 090210305 | 莎拉波娃 | 1982-10-09 | 女     | 土木学院   | 测绘学   | 1班   | 国民党   | 女娲族      | 15821        | 莫斯科      | slbw@gmail.com | 父亲:老沙                 |
56 | 090210306 | 孙杨     | 1991-04-02 | 男     | 计算机学院 | 计算机   | 4班   | 中共党员 | 回族        | 3535         | 浙江杭州    | sun@126.com    | 父亲:老孙,母亲:孙母     |
57 | 090210307 | 张默     | 1978-06-14 | 男     | 土木学院   | 测绘学   | 2班   | 群众     | 土家族      | 5223         | 重庆        | zhangmo@qq.com | 父亲:张国立,母亲:邓婕   |
58 | 090210308 | 岳灵珊   | 1232-05-03 | 女     | 医学院     | 临床医学 | 2班   | 中共党员 | 华山族      | 111          | 陕西华山    | yls@sina.com   | 父亲:岳不群,母亲:宁中则 |
59 | 090210309 | 杨延昭   | 1423-07-07 | 男     | 土木学院   | 测绘学   | 1班   | 群众     | 彝族        | 158246453342 | 河南开封    | yang@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 +----------+-------+
查询name,clazz字段

 

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 | 贵州贵阳    | zms@126.com    |
51 | 5864         | 1983-03-23 | 曼彻斯特    | ln@yahoo.com   |
52 | 15821        | 1982-10-09 | 莫斯科      | slbw@gmail.com |
53 | 158246453342 | 1423-07-07 | 河南开封    | yang@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:学习笔记

标签:hone   inf   电话   华山   宝典   mil   创建   出版社   ***   

原文地址:http://www.cnblogs.com/De-Luffy/p/7491234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!