数据库的查询

原创 2011年01月13日 10:37:00

数据库的查询

一、语法格式

         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、计算列值

 

数据库中的日期格式化查询

数据库中的日期格式化查询 不要时间    String sql = " select  DATE_FORMAT(a.opt_time,'%Y-%m-%d') as date,system_name ...
  • wanglj7525
  • wanglj7525
  • 2015年02月02日 15:08
  • 784

数据库时间段查询

在数据库中定义日期类型字段,然后按此字段查询某时间段内的记录。在C++builder中用:select * from datatable where datefield between #2016-7...
  • chinayu2007
  • chinayu2007
  • 2016年07月19日 08:17
  • 698

数据库常用查询

1、查询表结构 SQLServer sp_help [table_name]; sp_columns [table_name]; MySQL desc [table_name]; SHOW C...
  • u011983531
  • u011983531
  • 2017年03月25日 00:12
  • 297

数据库查询不同关键字的执行顺序

标准查询关键字执行顺序为 : from->where->group by->having->order by 注意:连表查询 : LEFT JOIN XXXX ON .. AND .. 在from...
  • csxueyuan
  • csxueyuan
  • 2015年08月27日 17:58
  • 783

复杂的sql数据库查询

遇到复杂的数据库查询,可使用中间表的方式连接查询查出正确的数据: SELECT d.id, c.* FROM diz_reply AS d INNER JOIN ( SELECT ta...
  • u010890857
  • u010890857
  • 2015年01月20日 16:05
  • 468

数据库的查询与视图

第4章 数据库的查询和视图 4.1.1 选择列 通过SELECT语句的项组成结果表的列。 ::= SELECT [ ALL |DISTINCT ] [ TOP n [ PERCENT ] [ ...
  • qxs965266509
  • qxs965266509
  • 2012年05月28日 20:13
  • 13778

数据库的总体结构

  • tianya0609
  • tianya0609
  • 2009年09月01日 13:01
  • 958

数据库查询的基本运算,关系代数

1.关系属性的指定——投影运算 这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。 “п”为投影运算符,表示按照i1,i2,…,in的顺序从关系R中取出n列,并删除结果中的...
  • young____
  • young____
  • 2015年10月15日 20:35
  • 1885

数据库的内联,外联查询

连接类型        定义内连接        只连接匹配的行左外连接        包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接        包含...
  • u013282523
  • u013282523
  • 2014年01月11日 10:30
  • 1393

数据库查询语句面试

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表...
  • u013700340
  • u013700340
  • 2014年05月05日 18:00
  • 1750
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库的查询
举报原因:
原因补充:

(最多只允许输入30个字)