MySql SELECT 语法

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 [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE ‘file_name‘
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE ‘file_name‘
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

select被使用来得到从一个或者多个表中挑选出来的行,可以包含union语句和子查询。

select最常见的子句如下:

  • 每一个select_expr表明想要获取的一个列。必须至少有一个select_expr。
  • table_references表明从哪个表或者哪些表来获取行。语法会在join语法中描述。
  • 从mysql 5.6.2开始,select支持明确的分区查询,在一个table_reference中接着表名后,使用有一个分区或者子分区的列表的partition关键字。在这种情况下,只有分区列表中的行会被查询,而表的其他分区会被忽略。

   在mysql 5.6.6和之后,select ... partition from table使用会执行表级别的锁(因此分区锁)的存储引擎如myisam会只锁partition选项中指定的分区或者子分区。

  • where子句,如果给出的话,表明行为了被选择必须满足的条件。where_condition是一个表达式,每一个被选择的行会得到true。如果没有where子句,语句会查询出所有的行。

   在where表达式里,可以使用mysql提供的除了聚合函数外的所有的函数和操作符。

select也可以使用来获取行计算,而且不使用任何表。

例如:select 1 + 1;2

当没有使用任何表时,也允许使用dual作为一个虚假的表名。

例如:select 1 + 1 from dual;2

dual纯粹为了需要所有的查询语句都包含from和其它可能的子句时方便。mysql可能忽略这个子句。mysql不需要from dual,如果没有使用任何表的话。

一般来讲,子句必须严格按照语法描述中显示的顺序使用。例如,having子句必须在任意的group by子句之后,和任意的order by之后。例外是into子句,into子句可以像语法描述中显示的一样显示,也可以立即跟随在select_expr列表后。

select_expr术语列表包含了表明获取哪些列的查询列表。术语指定一个列或者表达式或者使用*缩写。

  • 只有一个没有限制的*的查询列表当做查询所有表的所有列的缩写。

   select * from t1 inner join t2 ...

  • tbl_name.*可以使用作为一个有限制的缩写,来从这个定义的表中查询所有列。

   select t1.*, t2.* from t1 inner join t2 ...

  • 在查询列表里使用没有限制的*和其它项可能会产生语法错误。为了避免这个问题,可以使用tbl_name.*来引用。

    select avg(score), t1.* from t1 ...

时间: 2024-11-09 01:27:36

MySql SELECT 语法的相关文章

MySql基本语法及练习(4)

1.创建一个员工表(并指明字符集为UTF8) drop table if exists employee; create table employee( id int, name varchar(20), gender varchar(6), birthday date, entry_date date, job varchar(30), salary float(5,1), resume text ); 2.插入数据: insert into employee(id,name,gender,b

Mysql Join语法解析与性能分析详解

一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表:table2:右表. JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录. LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录. RIGHT JOIN(右连接):与 LEF

Mysql Join语法解析与性能分析

一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表:table2:右表. JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录. LEFT JOIN(左连接):取得左表(table1)完全记录,即使右表(table2)并无对应匹配记录. RIGHT JOIN(右连接):与 LEF

mysql基本语法

MySql一些基本语法 3.3.5 直接在数据库目录中创建或删除 用上述方法创建数据库,只是MySQL数据目录下面创建一个与数据库同名目录,同样删除数据库是把这个目录删除. 所以,你可以直接这么做,创建或删除数据库,或者给数据库更名.这对备份和恢复备份有一定意义. 3.3.6 用USE选用数据库 句法:USE db_name USE db_name语句告诉MySQL使用db_name数据库作为随后的查询的缺省数据库.数据库保持到会话结束,或发出另外一个USE语句: mysql> USE db1;

mysql存储过程语法及实例

存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程create procedure sp_name()begin.........end 二.调用存储过程1.基本语法:call sp_name()注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三.删除存储过程1.基本语法:drop procedure sp_name// 2.注意事项(1

MySQL 常用语法总结

一.SQL命令 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵. 1.创建表 表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下: create table table_name (column_name data无效 {identity |null|not null}, -) 其中参数table_name和column_name必须满足用户数据库中的识别器(identif

SQLserver 转换Mysql 一些语法使用的区别

1.存储过程的语法各式eg:DELIMITER $$ CREATE PROCEDURE test_p_add9( p_name VARCHAR(100), p_test VARCHAR(100), p_age INT, OUT o_newid INT) BEGIN INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (p_name,p_test,p_age,NOW()); SET o_newid=LAST_INSERT_ID();

MySql基本语法(学习笔记)

MySQL语法大全_自己整理的学习笔记 select * from emp;  #注释 #--------------------------- #----命令行连接MySql--------- #启动mysql服务器 net start mysql #关闭 net stop mysql #进入 mysql -h 主机地址 -u 用户名 -p 用户密码 #退出 exit #--------------------------- #----MySql用户管理--------- #修改密码:首先在D

Mysql Join语法以及性能优化

引言 内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则保留其中部分.外左联结与外右联结的区别在于如果用A左联结B则A中所有记录都会保留在结果中,此时B中只有符合联结条件的记录,而右联结相反,这样也就不会混淆了. 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: 代码如下: FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表:table2:右表. JOIN 按照功能大致分为如下三类: IN