数据库的查询

来源:互联网 发布:南京直销软件 编辑:程序博客网 时间:2024/06/05 19:58

数据库的查询

一、语法格式

         SELECT

                 [ALL|DISTINCT|DISTINCTROW]

                 [HIGH_PRIORITY]

                 [STRAIGHT_JOIN]

                 [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

                 [SQL_CACHE|SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

                 select_expr,...

                 [INTO OUTFILE 'file_name' export_options|INTO DUMPFILE 'file_name']

                 [FROM table_reference [,table_reference]...]                                             /*FROM 子句*/

                 [WHERE where_definition]                                                                        /*WHERE 子句*/

                 [GROUP BY {col_name|expr|position} [ASC|DESC], ... [WITH ROLLUP]}  /*GROUP BY 子句*/

                 [HAVING where_definition]                                                                       /*HAVING 子句*/

                 [ORDER BY {col_name|expr|position}         [ASC|DESC],...]                    /*ORDER BY子句*/

                 [LIMIT {[offset,] row_count|row_count OFFSET offset}]                         /*LIMIT 子句*/

       说明:

       可见,最简单的SELECT语句就是SELECT select_expr。可进行任何MySQL支持的运算,例如,SELECT 1+1,它将返回2

       选项解释:

       ALL|DISTINCT|DISTINCTROW:这几个选项指定是否重复行应该被返回。若没有给定,则默认值为ALL(所有匹配行被返回)。DISTINCTDISTINCTROW是同义词,用于消除结果集合中的重复行。

       HIGH_PRIORITYSTTAIGHT_JOIN和以SQL_为开头的选项都是MySQL相对于标准SQL的扩展,一般可不用.

      1、 HIGH_PRIORITY:给予SELECT更高的优先权,使查询立刻执行,加快查询速度

      2、 STRAIGHT_JOIN:用于促使MySQL优化器把表联合在一起,加快查询速度

      3、SQL_SMALL_RESULT:可以于GROUP BY或DISTINCT同时使用,来告知MySQL优化器结果集合是较小的。在此情况下,MySQL使用快速临时表来存储生成的表,不使用分类。

      4、SQL_BUFFER_RESULT:促使结果被放入一个临时表中。这可以帮助MySQL提前解开表锁定,在需要花费较长时间的情况下,也可以帮助把结果集合发送到客户端中。

      5、SQL_BIG_RESULT:可以与GROUP BY 或 DISTINCT 同时使用,来告知MySQL优化器结果集合有很多行。在这种情况下,MySQL会优先进行分类,不优先使用临时表。

      6、SQL_CACHE:告知MySQL把查询结果存储在查询缓存中。对于使用UNION的查询或子查询,本选项会影响查询中的所有SELECT。

      7、SQL_NO_CACHE:告知MySQL不要把查询结果存储在查询缓存中。

      8、SQL_CALC_FOUND_ROWS:告知MySQL计算有多少行应位于结果集合中,不考虑任何LIMIT子句。

      9、SELECT...INTO OUTFILE ‘file_name':这个语句可以将表中的行导出到一个文件中。

注意:所有被使用的子句必须按语法说明中显示的顺序严格的排序

二、选择列

SELECT语句中的select_expr用来指定需要查询的列

1、选择指定的列

    用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。

    例:

    USE XSCJ

    SELECT 姓名,专业名,总学分

         FROM XS;

2、定义列别名

    当希望查询结果使用自己所选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列别名

    SELECT column_name [AS] column_alias

    例:

    SELECT 学号 AS number,姓名 AS name,总学分 AS mark

         FROM XS

         WHERE 专业名='计算机';

    特别注意,当自定义的列标题中含有空格时,必须使用引号将标题括起来,例如:

    SELECT 学号 AS 'Student Number',姓名 AS 'Student Name',总学分 AS mark

         FROM XS

         WHERE 专业名='计算机'

 3、替换查询结果中的数据

      需要使用查询中的CASE表达式 

      CASE

              WHEN 条件1 THEN 表达式1

              WHEN 条件2 THEN 表达式2

              。。。。。。

              ELSE 表达式

      END

      例:

      SELECT 学号,姓名

                   CASE

                   WHEN 总学分 IS NULL THEN ‘尚未选课'

                   WHEN 总学分 <50 THEN '不及格'

                   WHEN 总学分 >=50 and 总学分<=52 THEN '合格'

                   ELSE '优秀'

                   END AS 等级

      FROM XS

      WHERE 专业名='计算机';

 4、计算列值