MySQL数据表查询语句
MySQL 数据表查询语句
在 MySQL 中,使⽤ SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使⽤不同的查询⽅式来获取不同的数据,是使⽤频率最⾼、最重要的操作。
SELECT 的语法格式如下:
SELECT
{* | <;字段列名>}
[
FROM <;表 1>, <;表 2>…
[WHERE <;表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
其中,各条⼦句的含义如下:
{*|<;字段列名>}包含星号通配符的字段列表,表⽰所要查询字段的名称。
<;表 1>,<;表 2>…,表 1 和表 2 表⽰查询数据的来源,可以是单个或多个。
WHERE <;表达式>是可选项,如果选择该项,将限定查询数据必须满⾜该查询条件。
GROUP BY< 字段 >,该⼦句告诉 MySQL 如何显⽰查询出来的数据,并按照指定的字段分组。
[ORDER BY< 字段 >],该⼦句告诉 MySQL 按什么样的顺序显⽰查询出来的数据,可以进⾏的排序有升序(ASC)和降序(DESC),默认情况下是升序。
[LIMIT[<offset>,]<row count>],该⼦句告诉 MySQL 每次显⽰查询出来的数据条数
查询表中所有字段
广州疫情发布会使⽤“*”通配符查询所有字段
列出表的所有字段
SELECT * FROM 表名;
使⽤“*”查询时,只能按照数据表中字段的顺序进⾏排列,不能改变字段的排列顺序。
mysql语句分类注意:⼀般情况下,除⾮需要使⽤表中所有的字段数据,否则最好不要使⽤通配符“ * ”。虽然使⽤通配符可以节省输⼊查询语句的时间,但是获取不需要的列数据通常会降低查询和所使⽤的应⽤程序的效率。使⽤“ * ”的优势是,当不知道所需列的名称时,可以通过“ * ”获取它们。
查询表中指定的字段
查询表中的某⼀个字段的语法格式为:
SELECT < 列名 > FROM < 表名 >;
使⽤ SELECT 声明可以获取多个字段下的数据,只需要在关键字 SELECT 后⾯指定要查的字段名称,不同字段名称之间⽤逗号“,”分隔开,最后⼀个字段后⾯不需要加逗号,语法格式如下:
SELECT <;字段名1>,<;字段名2>,…,<;字段名n> FROM <;表名>;
MySQL过滤重复数据wheelers
为了实现查询不重复的数据,MySQL 提供了 DISTINCT 关键字。
DISTINCT 关键字的主要作⽤就是对数据表中⼀个或多个字段重复的数据进⾏过滤,只返回其中的⼀条数据给⽤户。
DISTINCT 关键字的语法格式为:
SELECT DISTINCT <;字段名> FROM <;表名>;dos的内部命令
其中,“字段名”为需要消除重复记录的字段名称,多个字段时⽤逗号隔开。
使⽤ DISTINCT 关键字时需要注意以下⼏点:
DISTINCT 关键字只能在 SELECT 语句中使⽤。
在对⼀个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前⾯。
oracle分页查询的原理如果 DISTINCT 关键字后有多个字段,则会对多个字段进⾏组合去重,也就是说,只有多个字段组合起来完全是⼀样的情况下才会被去重。
设置别名
为了查询⽅便,MySQL 提供了 AS 关键字来为表和字段指定别名
为表指定别名
当表名很长或者执⾏⼀些特殊查询的时候,为了⽅便操作,可以为表指定⼀个别名,⽤这个别名代替表原来的名称。
为表指定别名的基本语法格式为:
<;表名> [AS] <;别名>
其中各⼦句的含义如下:
<;表名>:数据库中存储的数据表的名称。
<;别名>:查询时指定的表的新名称。
AS关键字可以省略,省略后需要将表名和别名⽤空格隔开。
注意:表的别名不能与该数据库的其它表同名。字段的别名不能与该表的其它字段同名。在条件表达式中不能使⽤字段的别名,否则会出现“ERROR 1054 (42S22): Unknown column”这样的错误提⽰信息。
为字段指定别名
在使⽤ SELECT 语句查询数据时,MySQL 会显⽰每个 SELECT 后⾯指定输出的字段。有时为了显⽰结果更加直观,我们可以为字段指定⼀个别名。
为字段指定别名的基本语法格式为:
<;字段名> [AS] <;别名>
其中,各⼦句的语法含义如下:
<;字段名>:为数据表中字段定义的名称。
<;字段别名>:字段新的名称。
AS关键字可以省略,省略后需要将字段名和别名⽤空格隔开。
注意:表别名只在执⾏查询时使⽤,并不在返回结果中显⽰。⽽字段定义别名之后,会返回给客户端显⽰,显⽰的字段为字段的别名。
限制查询条数
当数据表中有上万条数据时,⼀次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很⼤的压⼒。这时就可以⽤LIMIT 关键字来限制查询结果返回的条数。
LIMIT 是 MySQL 中的⼀个特殊关键字,⽤于指定查询结果从哪条记录开始显⽰,⼀共显⽰多少条记录。
LIMIT 关键字有 3 种使⽤⽅式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使⽤
指定初始位置
LIMIT 关键字可以指定查询结果从哪条记录开始显⽰,显⽰多少条记录。
LIMIT 指定初始位置的基本语法格式如下:
LIMIT 初始位置,记录数
其中,“初始位置”表⽰从哪条记录开始显⽰;“记录数”表⽰显⽰记录的条数。第⼀条记录的位置是 0,第⼆条记录的位置是 1。后⾯的记录依次类推。
注意:LIMIT 后的两个参数必须都是正整数。
不指定初始位置
LIMIT 关键字不指定初始位置时,记录从第⼀条记录开始显⽰。显⽰记录的条数由 LIMIT 关键字指定。
LIMIT 不指定初始位置的基本语法格式如下:
LIMIT 记录数
其中,“记录数”表⽰显⽰记录的条数。如果“记录数”的值⼩于查询结果的总数,则会从第⼀条记录开始,显⽰指定条数的记录。如
果“记录数”的值⼤于查询结果的总数,则会直接显⽰查询出来的所有记录。
LIMIT和OFFSET组合使⽤
LIMIT 可以和 OFFSET 组合使⽤,语法格式如下:
LIMIT 记录数 OFFSET 初始位置
参数和 LIMIT 语法中参数含义相同,“初始位置”指定从哪条记录开始显⽰;“记录数”表⽰显⽰记录的条数。
对查询结果排序
通过条件查询语句可以查询到符合⽤户需求的数据,但是查询到的数据⼀般都是按照数据最初被添加到表中的顺序来显⽰。为了使查询结果的顺序满⾜⽤户的要求,MySQL 提供了 ORDER BY 关键字来对查询结果进⾏排序。
在实际应⽤中经常需要对查询结果进⾏排序,⽐如,在⽹上购物时,可以将商品按照价格进⾏排序;在医院的挂号系统中,可以按照挂号的先后顺序进⾏排序等。
ORDER BY 关键字主要⽤来将查询结果中的数据按照⼀定的顺序进⾏排序。其语法格式如下:
ORDER BY <;字段名> [ASC|DESC]
语法说明如下:
字段名:表⽰需要排序的字段名称,多个字段时⽤逗号隔开。
ASC|DESC:ASC表⽰字段按升序排序;DESC表⽰字段按降序排序。其中ASC为默认值。
使⽤ ORDER BY 关键字应该注意以下⼏个⽅⾯:
ORDER BY 关键字后可以跟⼦查询(关于⼦查询后⾯教程会详细讲解,这⾥了解即可)。
当排序的字段中存在空值时,ORDER BY 会将该空值作为最⼩值来对待。
ORDER BY 指定多个字段进⾏排序时,MySQL 会按照字段的顺序从左到右依次进⾏排序。
注意:在对多个字段进⾏排序时,排序的第⼀个字段必须有相同的值,才会对第⼆个字段进⾏排序。如果第⼀个字段数据中所有的值都是唯⼀的,MySQL 将不再对第⼆个字段进⾏排序。
默认情况下,查询数据按字母升序进⾏排序(A~Z),但数据的排序并不仅限于此,还可以使⽤ ORDER BY 中的 DESC 对查询结果进⾏降序排序(Z~A)
条件查询数据
在 MySQL 中,如果需要有条件的从数据表中查询数据,可以使⽤ WHERE 关键字来指定查询条件。
使⽤ WHERE 关键字的语法格式如下:
WHERE 查询条件
查询条件可以是:
带⽐较运算符和逻辑运算符的查询条件
带 BETWEEN AND 关键字的查询条件
带 IS NULL 关键字的查询条件
弹窗公告代码带 IN 关键字的查询条件
带 LIKE 关键字的查询条件
单⼀条件的查询语句
单⼀条件指的是在 WHERE 关键字后只有⼀个查询条件。
多条件的查询语句
在 WHERE 关键词后可以有多个查询条件,这样能够使查询结果更加精确。多个查询条件时⽤逻辑运算符 AND(&&)、OR(||)或XOR 隔开。
AND:记录满⾜所有查询条件时,才会被查询出来。
OR:记录满⾜任意⼀个查询条件时,才会被查询出来。
XOR:记录满⾜其中⼀个条件,并且不满⾜另⼀个条件时,才会被查询出来。
OR、AND 和 XOR 可以⼀起使⽤,但是在使⽤时要注意运算符的优先级
查询条件越多,查询出来的记录就会越少。因为,设置的条件越多,查询语句的限制就更多,能够满⾜所有条件的记录就更少。为了使查询出来的记录正是⾃⼰想要的,可以在 WHERE 语句中将查询条件设置的更加具体
模糊查询
在 MySQL 中,LIKE 关键字主要⽤于搜索匹配字段中的指定内容。其语法格式如下:
[NOT] LIKE '字符串'
其中:
NOT :可选参数,字段中的内容与指定的字符串不匹配时满⾜条件。
字符串:指定⽤来匹配的字符串。“字符串”可以是⼀个很完整的字符串,也可以包含通配符。
LIKE 关键字⽀持百分号“%”和下划线“_”通配符
通配符是⼀种特殊语句,主要⽤来模糊查询。当不知道真正字符或者懒得输⼊完整名称时,可以使⽤通配符来代替⼀个或多个真正的字符
使⽤通配符的注意事项和技巧
下⾯是使⽤通配符的⼀些注意事项:
注意⼤⼩写。MySQL 默认是不区分⼤⼩写的。如果区分⼤⼩写,像“Tom”这样的数据就不能被“t%”所匹配到。
注意尾部空格,尾部空格会⼲扰通配符的匹配。例如,“T% ”就不能匹配到“Tom”。
注意 NULL。“%”通配符可以到匹配任意字符,但是不能匹配 NULL。也就是说 “%”匹配不到 tb_students_info 数据表中值为NULL 的记录。
下⾯是⼀些使⽤通配符要记住的技巧。
不要过度使⽤通配符,如果其它操作符能达到相同的⽬的,应该使⽤其它操作符。因为 MySQL 对通配符的处理⼀般会⽐其他操作符花费更长的时间。
在确定使⽤通配符后,除⾮绝对有必要,否则不要把它们⽤在字符串的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
仔细注意通配符的位置。如果放错地⽅,可能不会返回想要的数据。
注意:如果查询内容中包含通配符,可以使⽤“\”转义符。
范围查询
MySQL 提供了 BETWEEN AND 关键字,⽤来判断字段的数值是否在指定范围内。
BETWEEN AND 需要两个参数,即范围的起始值和终⽌值。如果字段值在指定的范围内,则这些记录被返回。如果不在指定范围内,则不会被返回。
使⽤ BETWEEN AND 的基本语法格式如下:
[NOT] BETWEEN 取值1 AND 取值2
其中:
NOT:可选参数,表⽰指定范围之外的值。如果字段值不满⾜指定范围内的值,则这些记录被返回。
取值1:表⽰范围的起始值。
取值2:表⽰范围的终⽌值。
BETWEEN AND 和 NOT BETWEEN AND 关键字在查询指定范围内的记录时很有⽤。例如,查询学⽣的年龄段、出⽣⽇期,员⼯的⼯资⽔平等
在 MySQL 中,BETWEEN AND 能匹配指定范围内的所有值,包括起始值和终⽌值
空值查询
MySQL 提供了 IS NULL 关键字,⽤来判断字段的值是否为空值(NULL)。空值不同于 0,也不同于空字符串。
如果字段的值是空值,则满⾜查询条件,该记录将被查询出来。如果字段的值不是空值,则不满⾜查询条件。
使⽤ IS NULL 的基本语法格式如下:
IS [NOT] NULL
其中,“NOT”是可选参数,表⽰字段值不是空值时满⾜条件。
注意:IS NULL 是⼀个整体,不能将 IS 换成“=”。如果将 IS 换成“=”将不能查询出任何结果,数据库系统会出现“Empty set(0.00 sec)”这样的提⽰。同理,IS NOT NULL 中的 IS NOT 不能换成“!=”或“<>”。
IS NOT NULL 表⽰查询字段值不为空的记录
分组查询
在 MySQL 中,GROUP BY 关键字可以根据⼀个或多个字段对查询结果进⾏分组。
使⽤ GROUP BY 关键字的语法格式如下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。