SQL语句实例说明 方便学习mysql的朋友(3)

来源:asp之家 时间:2012-11-30 20:02:43 


聚集函数(aggregate functions):

COUNT([DISTINCT|ALL]*) 统计元组个数
COUNT([DISTINCT|ALL]<列名>) 统计一列值的个数
SUM([DISTINCT|ALL]<列名>) 计算一列值的总和
AVG([DISTINCT|ALL]<列名>) 计算一列值的平均值
MAX([DISTINCT|ALL]<列名>) 求一列值中的最大值
MIN([DISTINCT|ALL]<列名>)   求一列值中的最小值

缺省值为ALL

select count(distinct name) from teacher;
查询没有重复的名字的个数

select count(*) from teacher;
查询teacher表格总记录数

select sum(salary) from teacher;
查询teacher表的salary字段的总和

select avg(salary) from teacher;
查询teacher表的salary字段的平均值

select max(salary) from teacher;
查询teacher表的salary字段的最大值

select min(salary) from teacher;
查询teacher表的salary字段的最小值


GROUP BY子句:

GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。
对查询结果分组的目的是为了细化聚集函数的作用对象。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。

select cno,count(*) from teacher group by cno;
对teacher表格按照cno分组,并算出每组里面有多少个元素

如果分组后还要按照一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING语句指定筛选条件。

select cno,count(*) from teacher group by cno having count(*) >= 4;
对teacher表格按照cno分组,并算出每组里面有多少个元素,得到元素个数大于等于4的值


连接查询:

连接查询是关系数据库中最主要的的查询,包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等。

等值与非等值连接查询:

连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,格式为:

[<表名1>.]<列名> <比较运算符> [<表名2>.]<列名2>

其中比较运算符主要有:=,>, <, >=, <=, !=(或<>)等


select s.*,t.* from student as s,teacher as t where s.teacherid = t.teacherid;
等值连接查询,将student表和teacher的信息连接查询出来,连接条件是s.teacherid = t.teacherid


自身连接:

一个表与自身进行连接,称为自身连接

select teacher.name,student.name from people as teacher,people as student where teacher.name = student.teacher;
自身连接查询,在people表里有两种角色,一种是教师,一种是学生,利用自身连接查询,得到name字段和teacher字段相等的元组

外连接:

左外连接列出左边关系中所有元组,右外连接列出右边关系中所有元组。

左外连接:SELECT <目标列表达式>[,<目标列表达式>]…… FROM <表名1> LEFT [OUTER] JOIN <表名2> ON <连接条件>
右外连接:SELECT <目标列表达式>[,<目标列表达式>]…… FROM <表名1> RIGHT [OUTER] JOIN <表名2> ON <连接条件>

select s.sno,s.name,c.cno,c.name from student as s left outer join class as c on (s.cno = c.cno);
student表和class表进行左外连接,连接条件是s.cno=c.cno

select c.cno,c.name,s.sno,s.name from student as s right outer join class as c on (s.cno = c.cno);
student表和class表进行右外连接,连接条件为s.cno=c.cno


student表数据:

+-----+-----+------+
| sno | cno | name |
+-----+-----+------+
| 1 | 1 | 地心 |
| 2 | 2 | 华雄 |
| 3 | 1 | 孝慈 |
| 4 | 3 | 必须 |
+-----+-----+------+

class表数据:

+-----+-----+------+
| cid | cno | name |
+-----+-----+------+
| 1 | 1 | 化学 |
| 2 | 2 | 物理 |
| 3 | 3 | 政治 |
+-----+-----+------+


左外连接效果:

+-----+------+-----+------+
| sno | name | cno | name |
+-----+------+-----+------+
| 1 | 地心 | 1 | 化学 |
| 2 | 华雄 | 2 | 物理 |
| 3 | 孝慈 | 1 | 化学 |
| 4 | 必须 | 3 | 政治 |
+-----+------+-----+------+

右外连接效果:

+-----+------+-----+------+
| cno | name | sno | name |
+-----+------+-----+------+
| 1 | 化学 | 1 | 地心 |
| 1 | 化学 | 3 | 孝慈 |
| 2 | 物理 | 2 | 华雄 |
| 3 | 政治 | 4 | 必须 |
+-----+------+-----+------+

MySQL不支持全外连接!

标签:SQL语句,mysql
0
投稿

猜你喜欢

  • 请注意页面head区域的编码是不是规范

    2008-08-06 13:14:00
  • 用VB生成DLL封装ASP代码一个例子:连接access数据库等

    2008-04-07 13:06:00
  • SQL集合函数中case when then 使用技巧

    2011-09-30 11:54:59
  • innerHTML 的一些问题

    2008-06-17 17:39:00
  • css元素层叠级别及z-index剖析

    2008-08-29 12:41:00
  • js实现网页加载loading的显示

    2007-11-06 12:11:00
  • 数据库技巧——MySQL十大优化技巧

    2011-01-31 16:44:00
  • 在ASP中如何使用类class

    2007-09-16 17:17:00
  • MySQL分区的功能和限制讲解

    2010-10-14 14:03:00
  • [翻译]标记语言和样式手册 Chapter 14 图片替换

    2008-02-18 12:56:00
  • 指导:SQL Server无日志恢复数据库

    2009-02-20 17:07:00
  • 解决MySQL数据库中与优化器有关的问题

    2008-12-17 16:18:00
  • asp Response.flush 实时显示进度

    2011-04-14 10:31:00
  • 费茨法则在交互设计中的应用

    2009-07-09 19:02:00
  • Mysql Explain 详解

    2010-12-03 16:09:00
  • asp error对象基础

    2008-08-04 13:25:00
  • oracle学习笔记(二)

    2012-01-05 18:59:20
  • 解决Server对象 错误 'ASP 0178 : 80070005'

    2008-02-29 13:45:00
  • 在Oracle 8x实现自动断开后再连接

    2010-07-26 13:03:00
  • 用javascript来实现仿gogle动画导航

    2007-11-30 14:15:00
  • asp之家 网络编程 m.aspxhome.com