当前位置:  数据库>mysql

MySQL进阶SELECT语法篇

    来源: 互联网  发布时间:2014-09-06

    本文导语:  MySQL中SELECT语句的基本语法是:  SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT|DISTINCTROW|ALL] select_list [INTO {OUTFILE|DUMPFILE} 'file_name' export_options] [FROM table_references [WHERE where_definition] [GROUP BY col_name,.....

MySQL中SELECT语句的基本语法是: 
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT|DISTINCTROW|ALL] select_list [INTO {OUTFILE|DUMPFILE} 'file_name' export_options] [FROM table_references [WHERE where_definition] [GROUP BY col_name,...] [HAVING where_definition] [ORDER BY {unsighed_integer|col_name|formura} [ASC|DESC],...] [LIMIT [offset,] rows] [PROCEDURE procedure_name]]  

STRAIGHT_JOIN、SQL_SMALL_RESULT、SQL_BIG_RESULT、HIGH_PRIORITY是MySQL对ANSI SQL92的扩展。如果优化器以非最佳次序联结表,使用STRAIGHT_JOIN可以加快查询。 
SQL_SMALL_RESULT和SQL_BIG_RESULT是一组相对的关键词。它们必须与GROUP BY、DISTINCT或DISTINCTROW一起使用。SQL_SMALL_RESULT告知优化器结果会很小,要求MySQL使用临时表存储最终的表而不是使用排序;反之,SQL_BIG_RESULT告知优化器结果会很小,要求MySQL使用排序而不是做临时表。 
HIGH_PRIORITY将赋予SELECT比一个更新表的语句更高的优先级,使之可以进行一次优先的快速的查询。 
以上四个关键词的使用方法的确比较晦涩。幸运的是,在绝大多数情况下,在MySQL中我们完全可以选择不使用这四个关键词。 
DISTINCT、DISTINCTROW对查询返回的结果集提供了一个最基本但是很有用的过滤。那就是结果集中只含非重复行。在这里要注意的是,对关键词DISTINCT、DISTINCTROW来说,空值都是相等的,无论有多少NULL值,只选择一个。而ALL的用法就有画蛇添足之嫌了。它对结果集的产生没有任何影响。 
INTO {OUTFILE|DUMPFILE} 'file_name' export_options,将结果集写入一个文件。文件在服务器主机上被创建,并且不能是已经存在的。语句中的export_options部分的语法与用在LOAD DATAINFILE语句中的FIELDS和LINES子句中的相同,我们将在MySQL进阶_LOAD DATA篇中详细讨论它。而OUTFILE与DUMPFILE的关键字的区别是:后前只写一行到文件,并没有任何列或行结束。 
select list:其中可以包含一项或多项下列内容: 
1、“*”,表示按照create table的顺序排列的所有列。 
2、按照用户所需顺序排列的列名的清单。 
3、可以使用别名取代列名,形式如下:column name as column_heading。 
4、表达式(列名、常量、函数,或以算术或逐位运算符连接的列名、常量和函数的任何组合)。 
5、内部函数或集合函数。 
6、上述各项的任何一种组合。 
FROM:决定SELECT命令中使用哪些表。一般都要求有此项,除非select_list中不含列名(例如,只有常量、算术表达式等)。如果表项中有多个表,用逗号将之分开。在关键词FROM后面的表的顺序不影响结果。 
表名可以给出相关别名,以便使表达清晰。这里的语法是tbl_name [AS] alias_name。例如: 
select t1.name,t2.salary from employee as t1,info as t2 where t1.name=t2.name与select t1.name,t2.salary from employee t1,info t2 where t1.name=t2.name是完全等价的。 
所有对该表的其他引用,例如在where子句和having子句中,都要用别名,别名不能以数字开头。 
where子句设置了搜索条件,它在insert,update,delete语句中的应用方法也与在select语句中的应用方法完全相同。搜索条件紧跟在关键词where的后面。如果用户要在语句中使用多个搜索条件,则可用and或or连接。搜索条件的基本语法是[not] expression comparison_operator expression;[not] expression [not] like “match_string”;[not] expression is [not] null;[not] expression [not] between expression and expression;[not] column_name join_operator column_name;[not] boolean_expression。 
and:用来联结两个条件,并在两个条件都是TRUE的时候返回结果。当在同一语句中使用多个逻辑运算符时,and运算符总是最优先,除非用户用括号改变了运算顺序。 
or:用来联结两个条件,当两个条件中有任一条件是TRUE的时候返回结果。当在同一语句中使用多个逻辑运算符时,运算符or通常在运算符and之后进行运算。当然用户可以使用括号改变运算的顺序。 
between:用来标识范围下限的关键词,and后面跟范围上限的值。范围where @val between x and y包含首尾值。如果between后面指定的第一个值大于第二个值,则该查询不返回任何行。 
column_name:在比较中使用的列名。在会产生歧义时,一定要指明列所在的表名。 
comparison_operator:比较运算符。见下表: 
符号 意义 
=  等于 
>  大于 
=  大于等于 

    
 
 

您可能感兴趣的文章:

  • mysql 存储过程实例和基本语法
  • mysql_real_query报语法错
  • MySQL的SQL语法解析器 DBIx-MyParse
  • MYSQL 批量替换之replace语法的使用详解
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • 浅析一个MYSQL语法(在查询中使用count)的兼容性问题
  • MySQL ALTER语法的运用方法
  • 解析在MYSQL语法中使用trim函数删除两侧字符
  • SQL查询前10条记录(SqlServer/mysql/oracle)的语法分析
  • MySQL Order By语法介绍
  • 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
  • MySQL 关于表复制 insert into 语法的详细介绍
  • 与MSSQL对比学习MYSQL的心得(一)--基本语法
  • MySQL DELETE语法使用详细解析
  • MySQL union 语法代码示例分析
  • MySQL prepare语句的SQL语法
  • MySQL的语法及其使用指南
  • MySQL与Oracle的语法区别详细对比
  • 浅析Mysql Join语法以及性能优化
  • MySQL 最基本的SQL语法/语句
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Mysql Select查询执行流程介绍及实例
  • 在MySQL如何实现如:select top 2 * from board; 这样的提取前N条记的功能?
  • Mysql select in 按id排序实现方法
  • php下巧用select语句实现mysql分页查询
  • 单个select语句实现MySQL查询统计次数
  • mysql SELECT语句去除某个字段的重复信息
  • mysql技巧之select count的区别分析
  • Mysql select语句设置默认值的方法
  • mysql中insert与select的嵌套使用方法
  • mysql中insert与select的嵌套使用解决组合字段插入问题
  • PHP MySQL Select查询示例
  • 解析MySQL中INSERT INTO SELECT的使用
  • java/j2ee iis7站长之家
  • MySQL SELECT同时UPDATE同一张表问题发生及解决
  • 10个mysql中select语句的简单用法
  • UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE noteexists
  • mysql SELECT FOR UPDATE语句使用示例
  • 请教 mysql jdbc select 中文问题?
  • MySQL中SELECT+UPDATE处理并发更新问题解决方案分享
  • MySQL中select语句介绍及使用示例
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3