快速掌握MySQL数据库中SELECT语句[1]

快速掌握MySQL数据库中SELECT语句[1],第1张

快速掌握MySQL数据库中SELECT语句[1],第2张

本文快速而精细地掌握了MySQL数据库中的SELECT语句。

MySQL中SELECT语句的基本语法是:

以下是引文:
Select[straight _ join][SQL _ small _ result]
[SQL _ big _ result][high _ priority]
[distinct row | ALL]
Select _ list
[INTO { OUTFILE | dump file } ' file _ name ' export _ options]
[FROM table _ references[WHERE _ definition]
[GROUP BY col...][HAVING where _ definition]
[ORDER BY { unsighed _ integer | col _ name | formura }[ASC | desc],...]
[限制[偏移量,]行][过程过程名称]]


从这个基本语法可以看出,最简单的SELECT语句是SELECT select_list。事实上,您也可以用这个最简单的SELECT语句完成许多您期望的功能。首先,你可以用它来执行MySQL支持的任何操作,比如:选择1+1,它会返回2;其次,你也可以用它给变量赋值。在PHP中,通过SELECT语句的函数,可以自由使用MySQL函数对PHP程序进行各种操作,给变量赋值。在很多情况下,你会发现MySQL有很多比PHP更强大的功能。

STRAIGHT_JOIN、SQL_SMALL_RESULT、SQL_BIG_RESULT和HIGH_PRIORITY是MySQL对ANSI SQL92的扩展。如果优化器没有按顺序连接表,使用STRAIGHT_JOIN可以加快查询速度。

SQL_SMALL_RESULT和SQL_BIG_RESULT是一组相对关键字。它们必须与GROUP BY、distinct或DISTINCT一起使用。SQL_SMALL_RESULT告诉优化器结果会很小,要求MySQL使用临时表存储最终表,而不是排序;相反,SQL_BIG_RESULT告诉优化器结果会很小,要求MySQL使用排序,而不是制作临时表。

HIGH_PRIORITY将赋予SELECT比更新表的语句更高的优先级,以便它可以进行第一次快速查询。

以上四个关键词的使用确实比较隐晦。幸运的是,在大多数情况下,我们可以选择在MySQL中不使用这四个关键字。

DISTINCT和DISTINCTROW为查询返回的结果集提供了一个基本但有用的过滤器。也就是说,结果集只包含不重复的行。这里需要注意的是,对于关键字distinct和DISTINCT,空的值都是相等的。不管有多少个空值,只选择一个。而全部的使用就像是画蛇添足。这对结果集没有影响。

into { outfile | dump file } ' file _ name ' export _ options,将结果集写入文件。该文件是在服务器主机上创建的,不能已经存在。该语句export_options部分的语法与load data import语句的FIELDS和LINES子句中使用的语法相同,我们将在MySQL Advanced _LOAD DATA中详细讨论。OUTFILE和DUMPFILE的关键字区别在于,前后只有一行被写入文件,没有任何列或行尾。

选择列表可以包含以下一项或多项:


1," * ",表示按创建表的顺序排列的所有列。

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,其中t1.name = T2.name完全等同于select t1.name,T2.salary from employee t1,info T2,其中t1.name = T2.name

对表的所有其他引用,如where子句和having子句中的引用,都应该使用别名,但不能以数字开头。

Where子句设置搜索条件,其在insert、update和delete语句中的应用方法与在select语句中完全相同。搜索条件紧跟在关键字where之后。如果用户希望在一个语句中使用多个搜索标准,他们可以使用and或or连接。搜索条件的基本语法是[not]表达式比较_运算符表达式;类似“match_string”的[not]表达式[not];[not]表达式为[not]null;【非】表达式【非】表达式与表达式之间;[not]column _ name join _ operator column _ name;[not]布尔表达式.

And:用于连接两个条件,并在两个条件都为真时返回结果。当在同一个语句中使用多个逻辑运算符时,and运算符总是排在第一位,除非用户用括号改变运算顺序。

Or:用于连接两个条件,并在两个条件之一为真时返回结果。当在同一语句中使用多个逻辑运算符时,or运算符通常在and运算符之后执行运算。当然,用户可以使用括号来改变操作的顺序。

Between:用于标识下限范围的关键字,后跟上限范围的值。x和y之间的@val包含开始值和结束值的范围。如果在between之后指定的第一个值大于第二个值,则查询不返回任何行。

Column_name:比较中使用的列的名称。如果有歧义,一定要指出列所在的表名。

比较操作符:比较操作符。请参见下表:

下面是一段引文:
象征意义
=等于
>大于
<小于
>=大于或等于
!=不等于
不等于


比较char和varchar数据时,“”表示更接近字母表的末尾。一般来说,小写字母大于大写字母,大写字母大于数字,但这可能取决于服务器上操作系统的比较顺序。

相比之下,末尾的空框被忽略。比如“德克”等于“德克”。

比较日期时,“”表示晚于。

用比较运算符比较字符和日期时间数据时,所有数据都应该用引号括起来。

表达式:它可以是列名、常数、函数或列名和常数的任意组合,也可以是由算术运算符或位运算符连接的函数。算术运算符如下表所示:

以下是引用:
象征意义
+加号
-减号
*乘号
/除法号


is NULL:在搜索空值时使用。


like:关键字。可以对char、varchar和datetime使用like(秒和毫秒除外)。在MySQL中,like也可以用在数字的表达式中。

当搜索日期时间数据时,用户使用关键字like,因为完整的日期时间记录包含各种日期成分。例如,用户将值“9:20”添加到列arrival_time中,但是子句where arrival _ time = "9: 20 "找不到它,因为MySQL将输入的数据转换为“Jan 1,1900 9:20AM”。但是,arrival _ time类似“%9: 20%”的子句可以找到。

Boolean_expression:返回值为“真”或“假”的表达式。

Match_string:由字符和通配符组成的字符串,用单引号或双引号括起来,是一种匹配模式。下表显示了通配符:

word-wrap:break-word " bgcolor = # f3f 3 f 3 >以下为引号:
符号意义
% 0或多字符字符串
_任何单个字符
not:拒绝任何逻辑表达式,或关键字,
如like。
在select语句中使用了group by和having子句。
您可以将表分组,并返回符合having子句条件的组。
语法:select语句的开头
group by[all]aggregate _ free _ expression[,aggregate _ free _ expression]*
[having search _ conditions]


select语句的结尾

分组依据:指定表格将被划分到的组。如果选择表条目包含聚合函数,将为每个组计算总值。这些总计的结果显示在新列中,而不是新行中。用户可以在having子句中引用这些新的总计列。在group by之前,可以在select_list中使用avg、count、max、min和sum等集合函数。表格可以按列的任意组合进行分组。

All: Transact-SQL扩展,包括结果中的所有组,这里的所有组甚至包括那些被where子句排除的组。如果同时使用having子句,那么all的意义就会被否定。

Aggregate_free_expression:没有聚合函数的表达式。Transact-SQL扩展允许按列名和表达式分组,而不使用聚合函数。

Having:为group by子句设置条件,类似于为select语句设置条件的方法。具有的搜索条件可以包括集合函数表达式。否则,其搜索条件与where搜索条件相同。

排序依据:按列排列结果。select输出的列可以由列名、列别名或列位置引用。比如这三句话完全等价:从我的表组按id选择id作为我的id,从我的表组按id选择id作为我的名字,从我的表组按id选择id作为我的id,从我的表组按1选择name作为我的名字。当然,我们不赞成第三种用法,这样会对程序的可读性造成不好的影响。若要按降序排序,请在order by子句中将desc关键字添加到要排序的列名中。缺省值是升序,也可以用ASC关键字显式指定。

Limit子句:用于限制select语句返回的行数。Limit接受一个或两个数字参数。如果给定两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定返回的行数。初始行的偏移量是0(不是1)。如果给定一个参数,它指示偏移量为0的返回行数。也就是说极限5和极限0,5是完全等价的。

至于procedure关键字的含义,我不太清楚。好像支持存储过程,而MySQL本身不支持存储过程。好像是留作以后扩展用的。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 快速掌握MySQL数据库中SELECT语句[1]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情