MySQL SELECT陈述式范例

SQL SELECT语句语法

它是最常用的SQL命令,具有以下常规语法

选择[DISTINCT | ALL] {* | [fieldExpression [AS newName]} FROM tableName [别名] [WHERE条件] [GROUP BY fieldName(s)] [HAVING条件] ORDER BY fieldName(s)

这里

  • SELECT是使数据库知道您要检索数据的SQL关键字。
  • [DISTINCT | ALL]是可选关键字,可用于微调从SQL SELECT语句返回的结果。如果未指定任何内容,则将ALL假定为默认值。
  • {* | [fieldExpression [AS newName]}必须至少指定一部分,“ *”从指定的表名中选择所有字段,fieldExpression对指定的字段执行一些计算,例如加数字或将两个字符串字段放在一起。
  • FROM tableName是强制性的,必须至少包含一个表,多个表必须使用逗号分隔或使用JOIN关键字联接。
  • WHERE条件是可选的,它可以用于在查询返回的结果集中指定条件。
  • GROUP BY用于将具有相同字段值的记录放在一起。
  • 使用GROUP BY关键字时,HAVING条件用于指定条件。
  • ORDER BY用于指定结果集的排序顺序。

 

*

星号用于选择表中的所有列。一个简单的SELECT语句的示例如下所示。

SELECT * FROM`成员`;

上面的语句从成员表中选择所有字段。分号是语句终止。这不是强制性的,但被认为是结束此类声明的一种好习惯。

实际例子

单击以下载用于实际示例的myflix数据库。

您可以学习将.sql文件导入MySQL WorkBench

在以下两个表上执行示例

表1:成员

会员号码全名性别出生日期实际地址邮寄地址序号电子邮件
1个

珍妮特·琼斯(Janet Jones) 1980年7月21日 第一街地块4 私人包 0759 253 542 janetjones@yagoo.cm
2

珍妮特·史密斯·琼斯 1980年6月23日 梅尔罗斯123

空值 空值 jj@fstreet.com
3

罗伯特·菲尔 1989年12月7日 第三街34

空值 12345 rm@tstreet.com
4

格洛丽亚·威廉姆斯 1984年2月14日 第二街23

空值 空值 空值

表2:电影

movie_id标题导向器year_releasedcategory_id
1个 加勒比海盗4 罗伯·马歇尔 2011年 1个
2 忘记莎拉元帅 尼古拉斯·斯托勒 2008年 2
3 X战警 空值 2008年 空值
4 代号黑色 埃德加·吉姆兹(Edgar Jimz) 2010 空值
5 爸爸的小女孩 空值 2007年 8
6 天使与魔鬼 空值 2007年 6
7 达芬奇密码 空值 2007年 6
9 亲爱的月亮 约翰·舒尔茨 2005年 8
16 67%有罪 空值 2012年 空值

获取会员列表

假设我们要从数据库中获取所有已注册库成员的列表,我们将使用下面显示的脚本来执行此操作。

 
SELECT * FROM`成员`;

在MySQL工作台中执行上述脚本会产生以下结果。

会员号码全名性别出生日期实际地址邮寄地址序号电子邮件
1个

珍妮特·琼斯(Janet Jones) 1980年7月21日 第一街地块4 私人包 0759 253 542 janetjones@yagoo.cm
2

珍妮特·史密斯·琼斯 1980年6月23日 梅尔罗斯123

空值 空值 jj@fstreet.com
3

罗伯特·菲尔 1989年12月7日 第三街34

空值 12345 rm@tstreet.com
4

格洛丽亚·威廉姆斯 1984年2月14日 第二街23

空值 空值 空值

 

我们上面的查询返回了member表中的所有行和列。

假设我们只对只获取全名,性别,实际地址和电子邮件字段感兴趣。以下脚本将帮助我们实现这一目标。

从“成员”中选择“全名”,“性别”,“物理地址”,“电子邮件”;

在MySQL工作台中执行上述脚本会产生以下结果。

全名性别实际地址电子邮件
珍妮特·琼斯(Janet Jones) 第一街地块4 janetjones@yagoo.cm
珍妮特·史密斯·琼斯 梅尔罗斯123 jj@fstreet.com
罗伯特·菲尔 第三街34 rm@tstreet.com
格洛丽亚·威廉姆斯 第二街23 空值

获取电影列表

请记住,在上面的讨论中,我们提到了SELECT语句中使用的表达式。假设我们要从数据库中获取电影列表。我们希望在一个字段中包含电影标题和电影导演的姓名。电影导演的姓名应放在方括号中。我们也想获得电影上映的年份。以下脚本可以帮助我们做到这一点。

SELECT Concat(`title`,'(',`director`,')'),`year_released` from`movies`;

这里

  • Concat()MySQL函数用于将列值连接在一起。
  • 行“ Concat(`title`,'(',`director`,')')获得标题,在开头加上导演名称,然后在结尾加上括号。

字符串部分在Concat()函数中使用逗号分隔。

在MySQL工作台中执行上述脚本会产生以下结果集。

Concat(`title`,'(',`director`,')')year_released
加勒比海盗4(Rob Marshall) 2011年
忘记莎拉·元帅(尼古拉斯·斯托勒) 2008年
空值 2008年
代号黑色(Edgar Jimz) 2010
空值 2007年
空值 2007年
空值 2007年
蜜月徒(John Schultz) 2005年
空值 2012年

 

别名字段名称

上面的示例返回连接代码作为结果的字段名称。假设我们要在结果集中使用更具描述性的字段名称。我们将使用列别名来实现。以下是列别名的基本语法

SELECT`column_name | value | expression` [AS]`alias_name`;

这里

  • “ SELECT`column_name | value | expression`”是常规的SELECT语句,可以是列名,值或表达式。
  • “ [AS]”是别名名称之前的可选关键字,该别名表示表达式,值或字段名称将作为返回值。
  • “`alias_name`”是我们要在结果集中作为字段名称返回的别名。

上面的查询带有更有意义的列名

选择Concat(`title`,'(',`director`,')')AS'Concat',`year_released` from`movies`;

我们得到以下结果

康卡特year_released
加勒比海盗4(Rob Marshall) 2011年
忘记莎拉·元帅(尼古拉斯·斯托勒) 2008年
空值 2008年
代号黑色(Edgar Jimz) 2010
空值 2007年
空值 2007年
空值 2007年
蜜月徒(John Schultz) 2005年
空值 2012年

获取会员列表以显示出生年份

假设我们要获取一个显示成员编号,全名和出生年份的所有成员的列表,我们可以使用LEFT字符串函数从出生日期字段中提取出生年份。下面显示的脚本可以帮助我们做到这一点。

从成员中选择`membership_number`,`full_names`,LEFT(`date_of_birth`,4)作为`year_of_birth`;

这里

  • “LEFT(`date_of_birth`,4)” LEFT字符串函数接受出生日期作为参数,只有从左边返回4个字符。
  • “ AS`year_of_birth`”将在我们的结果中返回列别名注意, AS关键字是可选的,您可以将其省略,查询仍然可以使用。

在MySQL工作台中针对myflixdb执行上述查询,即可得出以下结果。

会员号码全名出生年份
1个

珍妮特·琼斯(Janet Jones) 1980
2

珍妮特·史密斯·琼斯 1980
3

罗伯特·菲尔 1989年
4

格洛丽亚·威廉姆斯 1984年

使用MySQL Workbench的SQL

现在,我们将使用MySQL工作台生成脚本,该脚本将显示类别表中的所有字段名称。

1.右键单击类别表。点击“选择行-限制1000”

2. MySQL工作台将自动创建一个SQL查询并粘贴到编辑器中。

3.显示查询结果

MySQL SELECT陈述式范例

注意,我们不是自己编写SELECT语句的。MySQL工作台为我们生成了它。

 

当我们拥有MySQL Workbench时,为什么要使用SELECT SQL命令?

现在,您可能会想为什么在不使用SQL语言而仅使用MySQL工作台之类的工具来获得相同结果的情况下,为什么要学习SQL SELECT命令以从数据库查询数据。当然可以,但是学习如何使用SELECT命令可以为您提供更大的灵活性控制您的SQL SELECT语句

MySQL工作台属于“ 示例查询 ” QBE工具类别它旨在帮助更快地生成SQL语句,以提高用户的工作效率。

 

学习SQL SELECT命令可以使您创建复杂的查询,而这些查询无法使用“示例查询”实用程序(例如MySQL工作台)轻松生成。

为了提高生产率,您可以使用MySQL工作台生成代码,然后对其进行自定义满足您的要求这只有在您了解SQL语句的工作原理时才能发生!

posted @ 2020-04-20 16:12  Xiao_野猪  阅读(383)  评论(0编辑  收藏  举报