这是有声音的视频,请检查播放器或者声音输出设备。

这次的学习内容:介绍常用函数和分组查询(group by),表连接(join on),嵌套查询(in)

==============================

create database xue_xiao character set utf8 collate utf8_general_ci;

use xue_xiao;

create table xue_sheng(id int, xing_ming varchar(50), fen_shu int, xing_bie char(2), bj_id int);

insert into xue_sheng values(1,'张三',90,'男',1);

insert into xue_sheng values(2,'李四',70,'男',2);

insert into xue_sheng values(3,'李小红',80,'女',1);

insert into xue_sheng values(4,'陈小明',80,'男',3);

create table ban_ji( id int, ban_ming varchar(15) );

insert into ban_ji values(1,'一年级(1)班');

insert into ban_ji values(2,'一年级(2)班');

insert into ban_ji values(3,'一年级(3)班');

====================================
先介绍一下,一些比较常用的函数,一般配合 select  一起使用

sum , count , max , min , avg

分别显示学生的 总成绩 总数,最高、最低分数,还有平均分数

mysql> select * from ban_ji;
+------+-----------------+
| id   | ban_ming        |
+------+-----------------+
|    1 | 一年级(1)班     |
|    2 | 一年级(2)班     |
|    3 | 一年级(3)班     |
+------+-----------------+
3 rows in set (0.00 sec)

mysql> select * from xue_sheng;
+------+-----------+---------+----------+-------+
| id   | xing_ming | fen_shu | xing_bie | bj_id |
+------+-----------+---------+----------+-------+
|    1 | 张三      |      90 | 男       |     1 |
|    2 | 李四      |      70 | 男       |     2 |
|    3 | 李小红    |      80 | 女       |     1 |
|    4 | 陈小明    |      80 | 男       |     3 |
+------+-----------+---------+----------+-------+
4 rows in set (0.00 sec)

mysql> select sum(fen_shu) from xue_sheng;
+--------------+
| sum(fen_shu) |
+--------------+
|          320 |
+--------------+
1 row in set (0.00 sec)

mysql> select max(fen_shu) from xue_sheng;
+--------------+
| max(fen_shu) |
+--------------+
|           90 |
+--------------+
1 row in set (0.00 sec)

mysql> select min(fen_shu) from xue_sheng;
+--------------+
| min(fen_shu) |
+--------------+
|           70 |
+--------------+
1 row in set (0.00 sec)

mysql> select avg(fen_shu) from xue_sheng;
+--------------+
| avg(fen_shu) |
+--------------+
|      80.0000 |
+--------------+
1 row in set (0.00 sec)

mysql> select count(*) from xue_sheng;
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

==================
下面是分组查询 , 分别显示男女总分数
mysql> select xing_bie, sum(fen_shu) from xue_sheng group by xing_bie;

mysql> select xing_bie,sum(fen_shu) from xue_sheng group by xing_bie;
+----------+--------------+
| xing_bie | sum(fen_shu) |
+----------+--------------+
| 女       |           80 |
| 男       |          240 |
+----------+--------------+

==================

同时查询2张表, 查询学生所在的班级
mysql> select xing_ming,ban_ming from xue_sheng,ban_ji;

别名的使用
mysql> select xing_ming,ban_ming from xue_sheng x,ban_ji b where x.bj_id=b.id;

下面使用 join on 表连接
mysql> select xing_ming,ban_ming from xue_sheng x join ban_ji b on x.bj_id=b.id;

+-----------+-----------------+
| xing_ming | ban_ming        |
+-----------+-----------------+
| 张三      | 一年级(1)班     |
| 李四      | 一年级(2)班     |
| 李小红    | 一年级(1)班     |
| 陈小明    | 一年级(3)班     |
+-----------+-----------------+

====================================

子查询,又叫嵌套查询 in() 或者 not in()

看下面一个例子, 查询在 一年级(1)班 的所有同学

select * from xue_sheng where bj_id in( select id from ban_ji where ban_ming='一年级(1)班' );

分解一下:

select id from ban_ji where ban_ming='一年级(1)班';

得到的结果为 1

然后把第一个查询的结果,作为第二个查询的条件

select * from xue_sheng where bj_id in( 1 );

===========================

这次的视频就演示到这里结束了, 88


“mysql_5.5.8_教程_05 介绍常用函数和分组查询(group by),表连接(join on),嵌套查询(in)”没有评论

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。