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_released | category_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.显示查询结果
注意,我们不是自己编写SELECT语句的。MySQL工作台为我们生成了它。
当我们拥有MySQL Workbench时,为什么要使用SELECT SQL命令?
现在,您可能会想为什么在不使用SQL语言而仅使用MySQL工作台之类的工具来获得相同结果的情况下,为什么要学习SQL SELECT命令以从数据库查询数据。当然可以,但是学习如何使用SELECT命令可以为您提供更大的灵活性并控制您的SQL SELECT语句。
MySQL工作台属于“ 示例查询 ” QBE工具类别。它旨在帮助更快地生成SQL语句,以提高用户的工作效率。
学习SQL SELECT命令可以使您创建复杂的查询,而这些查询无法使用“示例查询”实用程序(例如MySQL工作台)轻松生成。
为了提高生产率,您可以使用MySQL工作台生成代码,然后对其进行自定义以满足您的要求。这只有在您了解SQL语句的工作原理时才能发生!