SQL语言的基本操作学习(三)

1,聚合函数

SQL提供了下列聚合函数:

   COUNT(*)           计算元组的个数

   COUNT(<列名>) 对一列中的值计算个数

   SUM      (<列名>) 求某一列值的总和(此列的值必须时数值型)

   AVG      (<列名>) 求某一列值的平均值(此列的值必须时数值型)

   MAX      (<列名>) 求某一列的最大值

   MIN      (<列名>) 求某一列值的最小值

[例]对教学数据库中基本表T,C,S,SC的数据进行查询和计算.

(1)求男学生的总人数和平均年龄.

   SELECT   COUNT(*),    AVG(AGE)

           FROM    S

           WHERE     SEX='M'

  (2)统计选修了课程的学生人数.

  SELECT   COUNT   (DISTINCT   S#)

        FROM   SC;

  此处关键字DISTINCT表示要去掉重复的S#值,否则查询结果中可能有重复的S#值

2.SELECT子句的规定

SELECT子句用于描述查询输出的表格结构,即输出值的列名或表达式 .其形式如下:

  SELECT  [ALL |  DISTINCT]   <列名或列表达式序列> | *

(1)DISTINCT选项保证重复的行从结果中去除;而ALL选项是默认的,将保证重复的行留在

结果中,一般就不必写出.

(2)星号*是对于在FROM子句中命名表中所有列的简写.

(3)列表达式是对于一个单列求聚合值的表达式

(4)允许表达式中出现包含+,-,*和/以及列名,常熟的算术表达式

[例]对基本表T,C,S,SC进行查询

(1)在基本表SC中检索男同学选修的课程的课程号

     SELECT  DISTINCT   C#

                   FROM      S,SC

                   WHERE    S.S#=SC.S#     AND     SEX='M';

(2)检索每个学生的出生年份

     SELECT  S#,SNAME,2006-AGE

                   FROM     S;

   这里"2006-AGE"不是列名,而是一个表达式

[例]在基本表S中检索每个学生的姓名和出生年份,输出列名为STUDENT_NAME和BIRTH_YEAR

            SELECT   SNAME  AS    STUDENT_NAME,2006-AGE   AS   BIRTH_YEAR

             FROM     S;

在实际使用时,AS字样可省略

3.集合的并,交,差操作

当两个子查询结果的结构完全一致时,可以让这两个子查询执行并,交,差操作.并,交,差的

运算符为UNION,INTERSECT和EXCEPT.

     ( SELECT  查询语句1)

  UNION  [ALL]

        (SELECT  查询语句2)


 ( SELECT  查询语句1)

  INTERSECT  [ALL]

        (SELECT  查询语句2)


  ( SELECT  查询语句1)

     EXCEPT  [ALL]

          (SELECT  查询语句2)

上述操作中不带关键字ALL时,返回结果消除了重复元组,而带ALL时,返回结果中为消除重复元组

3,条件表达式中的比较操作

条件表达式可以用各种运算符组合而成.

(1)算术比较操作

条件表达式中可以出现算术比较运算符(<,<=,>,>=,=,!=),也可以用"BETWEEN...AND..."比较运算符限定一个值的

范围.

[例]在基本表S中检索18~20岁的学生姓名,可以用下列语句实现:

  SELECT   SNAME

        FROM   S

        WHERE     AGE>=18    AND   AGE<=20;

若使用"BETWEEN...AND....",就更容易理解了:

  SELECT    SNAME

       FROM        S

       WHERE      AGE    BETWEEN     18   AND   20;

类似地,不在某个范围可以使用"NOT  BETWEEN.....AND...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值