日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql數據庫優化課程---12、mysql嵌套和鏈接查詢(查詢user表中存在的所有班級的信息?)

一、總結

一句話總結:

in:distinct:select * from class where id in(select distinct class_id from user);

mysql> select * from class where id in(select distinct class_id from user);

+----+--------+------------+

| id | name?? | ctime????? |

+----+--------+------------+

|? 1 | class1 | 1492086867 |

|? 2 | class2 | 1492086867 |

|? 3 | class3 | 1492086867 |

+----+--------+------------+

2、查詢班級表中每個班的所有學員信息?

mysql> select * from user where class_id in(select id from class);

+----+----------+-----+----------+

| id | username | age | class_id |

+----+----------+-----+----------+

|? 1 | user1??? |? 19 |??????? 1 |

|? 2 | user2??? |? 19 |??????? 1 |

|? 3 | user3??? |? 19 |??????? 1 |

|? 4 | user4??? |? 19 |??????? 1 |

|? 5 | user5??? |? 19 |??????? 2 |

|? 6 | user6??? |? 19 |??????? 3 |

|? 7 | user7??? |? 19 |??????? 2 |

|? 8 | user8??? |? 19 |??????? 1 |

|? 9 | user9??? |? 19 |??????? 2 |

| 10 | user10?? |? 19 |??????? 3 |

| 11 | user10?? |? 19 |??????? 4 |

+----+----------+-----+----------+

3、嵌套查詢為什么用的少?

因為嵌套查詢能做到的普通多表查詢和鏈接查詢一般都能做到

4、請統計每個班的總人數?

錯誤答案:select class_id,count(*) from user group by class_id;

left join:select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

right join:select class.name,count(user.id) tot? from user right join class on class.id=user.class_id group by class.id;

需求6:請統計每個班的總人數?

1)錯誤答案

mysql> select class_id,count(*) from usergroup by class_id;

+----------+----------+

| class_id | count(*) |

+----------+----------+

|??????? 1 |??????? 5 |

|??????? 2 |??????? 3 |

|??????? 3 |??????? 2 |

+----------+----------+

2)正確答案

mysql> select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

3)正確答案

mysql> select class.name,count(user.id) tot? from user right join class on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

5、嵌套查詢和索引的關系?

嵌套查詢里面或者外面的索引會失效,所以嵌套查詢沒有鏈接查詢速度快

6、count(id)的用處在哪?

left連接之后統計班級人數,就是這個class4的0人,這里用count(*)就不行

需求6:請統計每個班的總人數?

mysql> select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

7、鏈接查詢的條件字段是什么?

on:select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

需求6:請統計每個班的總人數?

mysql> select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

8、鏈接查詢和普通多表查詢的區別是什么(查詢每個用戶的用戶名和對應的班級名稱)?

內鏈接:select user.username,class.name from user inner join class on class.id=user.class_id;

普通多表查詢:select user.username,class.name from user,class where user.class_id=class.id;

需求7: 查詢每個用戶的用戶名和對應的班級名稱?

1)正確答案(內鏈接)

mysql> select user.username,class.name from user inner join class on class.id=user.class_id;

+----------+--------+

| username | name?? |

+----------+--------+

| user1??? | class1 |

| user2??? | class1 |

| user3??? | class1 |

| user4??? | class1 |

| user5??? | class2 |

| user6??? | class3 |

| user7??? | class2 |

| user8??? | class1 |

| user9??? | class2 |

| user10?? | class3 |

+----------+--------+

2)正確答案(普通多表查詢)

mysql> select user.username,class.name from user,class where user.class_id=class.id;

+----------+--------+

| username | name?? |

+----------+--------+

| user1??? | class1 |

| user2??? | class1 |

| user3??? | class1 |

| user4??? | class1 |

| user5??? | class2 |

| user6??? | class3 |

| user7??? | class2 |

| user8??? | class1 |

| user9??? | class2 |

| user10?? | class3 |

+----------+--------+

二、內容在總結中

mysql多表查詢:

1.普通多表查詢

2.嵌套查詢或子查詢

3.鏈接查詢

1)左鏈接

2)右鏈接

3)內鏈接

查看class表數據:

mysql> select * from class;

+----+--------+------------+

| id | name?? | ctime????? |

+----+--------+------------+

|? 1 | class1 | 1492086867 |

|? 2 | class2 | 1492086867 |

|? 3 | class3 | 1492086867 |

+----+--------+------------+

查看user表數據:

mysql> select * from user;

+----+----------+-----+

| id | username | age |

+----+----------+-----+

|? 1 | user1??? |? 19 |

|? 2 | user2??? |? 29 |

|? 3 | user3??? |? 31 |

|? 4 | user4??? |? 22 |

|? 5 | user5??? |? 23 |

|? 6 | user6??? |? 18 |

|? 7 | user7??? |? 17 |

|? 8 | user8??? |? 25 |

|? 9 | user9??? |? 27 |

| 10 | user10?? |? 32 |

+----+----------+-----+

兩表無條件查詢:

mysql> select * from class,user;

+----+--------+------------+----+----------+-----+

| id | name?? | ctime????? | id | username | age |

+----+--------+------------+----+----------+-----+

|? 1 | class1 | 1492086867 |? 1 | user1??? |? 19 |

|? 2 | class2 | 1492086867 |? 1 | user1??? |? 19 |

|? 3 | class3 | 1492086867 |? 1 | user1??? |? 19 |

|? 4 | class4 | 1492087405 |? 1 | user1??? |? 19 |

|? 1 | class1 | 1492086867 |? 2 | user2??? |? 29 |

|? 2 | class2 | 1492086867 |? 2 | user2??? |? 29 |

|? 3 | class3 | 1492086867 |? 2 | user2??? |? 29 |

|? 4 | class4 | 1492087405 |? 2 | user2??? |? 29 |

|? 1 | class1 | 1492086867 |? 3 | user3??? |? 31 |

|? 2 | class2 | 1492086867 |? 3 | user3??? |? 31 |

|? 3 | class3 | 1492086867 |? 3 | user3??? |? 31 |

|? 4 | class4 | 1492087405 |? 3 | user3??? |? 31 |

|? 1 | class1 | 1492086867 |? 4 | user4??? |? 22 |

|? 2 | class2 | 1492086867 |? 4 | user4??? |? 22 |

|? 3 | class3 | 1492086867 |? 4 | user4??? |? 22 |

|? 4 | class4 | 1492087405 |? 4 | user4??? |? 22 |

|? 1 | class1 | 1492086867 |? 5 | user5??? |? 23 |

|? 2 | class2 | 1492086867 |? 5 | user5??? |? 23 |

|? 3 | class3 | 1492086867 |? 5 | user5??? |? 23 |

|? 4 | class4 | 1492087405 |? 5 | user5??? |? 23 |

|? 1 | class1 | 1492086867 |? 6 | user6??? |? 18 |

|? 2 | class2 | 1492086867 |? 6 | user6??? |? 18 |

|? 3 | class3 | 1492086867 |? 6 | user6??? |? 18 |

|? 4 | class4 | 1492087405 |? 6 | user6??? |? 18 |

|? 1 | class1 | 1492086867 |? 7 | user7??? |? 17 |

|? 2 | class2 | 1492086867 |? 7 | user7??? |? 17 |

|? 3 | class3 | 1492086867 |? 7 | user7??? |? 17 |

|? 4 | class4 | 1492087405 |? 7 | user7??? |? 17 |

|? 1 | class1 | 1492086867 |? 8 | user8??? |? 25 |

|? 2 | class2 | 1492086867 |? 8 | user8??? |? 25 |

|? 3 | class3 | 1492086867 |? 8 | user8??? |? 25 |

|? 4 | class4 | 1492087405 |? 8 | user8??? |? 25 |

|? 1 | class1 | 1492086867 |? 9 | user9??? |? 27 |

|? 2 | class2 | 1492086867 |? 9 | user9??? |? 27 |

|? 3 | class3 | 1492086867 |? 9 | user9??? |? 27 |

|? 4 | class4 | 1492087405 |? 9 | user9??? |? 27 |

|? 1 | class1 | 1492086867 | 10 | user10?? |? 32 |

|? 2 | class2 | 1492086867 | 10 | user10?? |? 32 |

|? 3 | class3 | 1492086867 | 10 | user10?? |? 32 |

|? 4 | class4 | 1492087405 | 10 | user10?? |? 32 |

+----+--------+------------+----+----------+-----+

結論:

1.兩表數據進行所有組合.

2.數據量是兩表條數乘積.

設計了關系的user表:

mysql> select * from user;

+----+----------+-----+----------+

| id | username | age | class_id |

+----+----------+-----+----------+

|? 1 | user1??? |? 19 |??????? 1 |

|? 2 | user2??? |? 19 |??????? 1 |

|? 3 | user3??? |? 19 |??????? 1 |

|? 4 | user4??? |? 19 |??????? 1 |

|? 5 | user5??? |? 19 |??????? 2 |

|? 6 | user6??? |? 19 |??????? 3 |

|? 7 | user7??? |? 19 |??????? 2 |

|? 8 | user8??? |? 19 |??????? 1 |

|? 9 | user9??? |? 19 |??????? 2 |

| 10 | user10?? |? 19 |??????? 3 |

+----+----------+-----+----------+

需求1:請查詢出每一個學員的姓名、年齡、班級名稱和班級創建時間?

mysql> select user.username,user.age,class.name,class.ctime from user,class where user.class_id=class.id;

+----------+-----+--------+------------+

| username | age | name?? | ctime????? |

+----------+-----+--------+------------+

| user1??? |? 19 | class1 | 1492086867 |

| user2??? |? 19 | class1 | 1492086867 |

| user3??? |? 19 | class1 | 1492086867 |

| user4??? |? 19 | class1 | 1492086867 |

| user5??? |? 19 | class2 | 1492086867 |

| user6??? |? 19 | class3 | 1492086867 |

| user7??? |? 19 | class2 | 1492086867 |

| user8??? |? 19 | class1 | 1492086867 |

| user9??? |? 19 | class2 | 1492086867 |

| user10?? |? 19 | class3 | 1492086867 |

+----------+-----+--------+------------+

需求2:請查詢出每一個學員的姓名、年齡、班級名稱和班級創建時間,并把時間戳轉成正常日期顯示出來?

mysql> select user.username,user.age,class.name,from_unixtime(class.ctime) ctime from user,class where user.class_id=class.id;

+----------+-----+--------+---------------------+

| username | age | name?? | ctime?????????????? |

+----------+-----+--------+---------------------+

| user1??? |? 19 | class1 | 2017-04-13 20:34:27 |

| user2??? |? 19 | class1 | 2017-04-13 20:34:27 |

| user3??? |? 19 | class1 | 2017-04-13 20:34:27 |

| user4??? |? 19 | class1 | 2017-04-13 20:34:27 |

| user5??? |? 19 | class2 | 2017-04-13 20:34:27 |

| user6??? |? 19 | class3 | 2017-04-13 20:34:27 |

| user7??? |? 19 | class2 | 2017-04-13 20:34:27 |

| user8??? |? 19 | class1 | 2017-04-13 20:34:27 |

| user9??? |? 19 | class2 | 2017-04-13 20:34:27 |

| user10?? |? 19 | class3 | 2017-04-13 20:34:27 |

+----------+-----+--------+---------------------+

需求3:請查詢出每一個學員的姓名、年齡、班級名稱和班級創建時間,并且只查詢1班學員?

mysql> select user.username,user.age,class.name,class.ctime from user,class where user.class_id=class.id and class.id=1;

+----------+-----+--------+------------+

| username | age | name?? | ctime????? |

+----------+-----+--------+------------+

| user1??? |? 19 | class1 | 1492086867 |

| user2??? |? 19 | class1 | 1492086867 |

| user3??? |? 19 | class1 | 1492086867 |

| user4??? |? 19 | class1 | 1492086867 |

| user8??? |? 19 | class1 | 1492086867 |

+----------+-----+--------+------------+

需求4:查詢user表中存在的所有班級的信息?

mysql> select * from class where id in(select distinct class_id from user);

+----+--------+------------+

| id | name?? | ctime????? |

+----+--------+------------+

|? 1 | class1 | 1492086867 |

|? 2 | class2 | 1492086867 |

|? 3 | class3 | 1492086867 |

+----+--------+------------+

需求5:查詢班級表中每個班的所有學員信息?

mysql> select * from user where class_id in(select id from class);

+----+----------+-----+----------+

| id | username | age | class_id |

+----+----------+-----+----------+

|? 1 | user1??? |? 19 |??????? 1 |

|? 2 | user2??? |? 19 |??????? 1 |

|? 3 | user3??? |? 19 |??????? 1 |

|? 4 | user4??? |? 19 |??????? 1 |

|? 5 | user5??? |? 19 |??????? 2 |

|? 6 | user6??? |? 19 |??????? 3 |

|? 7 | user7??? |? 19 |??????? 2 |

|? 8 | user8??? |? 19 |??????? 1 |

|? 9 | user9??? |? 19 |??????? 2 |

| 10 | user10?? |? 19 |??????? 3 |

| 11 | user10?? |? 19 |??????? 4 |

+----+----------+-----+----------+

左鏈接:

需求6:請統計每個班的總人數?

1)錯誤答案

mysql> select class_id,count(*) from user group by class_id;

+----------+----------+

| class_id | count(*) |

+----------+----------+

|??????? 1 |??????? 5 |

|??????? 2 |??????? 3 |

|??????? 3 |??????? 2 |

+----------+----------+

2)正確答案

mysql> select class.name,count(user.id) tot? from class left join user on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

3)正確答案

mysql> select class.name,count(user.id) tot? from user right join class on class.id=user.class_id group by class.id;

+--------+-----+

| name?? | tot |

+--------+-----+

| class1 |?? 5 |

| class2 |?? 3 |

| class3 |?? 2 |

| class4 |?? 0 |

+--------+-----+

需求7: 查詢每個用戶的用戶名和對應的班級名稱?

1)正確答案(內鏈接)

mysql> select user.username,class.name from user inner join class on class.id=user.class_id;

+----------+--------+

| username | name?? |

+----------+--------+

| user1??? | class1 |

| user2??? | class1 |

| user3??? | class1 |

| user4??? | class1 |

| user5??? | class2 |

| user6??? | class3 |

| user7??? | class2 |

| user8??? | class1 |

| user9??? | class2 |

| user10?? | class3 |

+----------+--------+

2)正確答案(普通多表查詢)

mysql> select user.username,class.name from user,class where user.class_id=class.id;

+----------+--------+

| username | name?? |

+----------+--------+

| user1??? | class1 |

| user2??? | class1 |

| user3??? | class1 |

| user4??? | class1 |

| user5??? | class2 |

| user6??? | class3 |

| user7??? | class2 |

| user8??? | class1 |

| user9??? | class2 |

| user10?? | class3 |

+----------+--------+

總結

以上是生活随笔為你收集整理的mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。