01:select 查询语句
- MySQL 使用select语句查询数据
- select语句的作用是从一个或多个表中查询信息
- 使用select语句,必须至少给出两条信息:
- 选择什么
- 从什么地方选择
- 注意:SQL语言中,不区分大小写,每一的SQL语句,使用分号‘;’表示结尾
02:查询特定列
- 格式:select 列名 from 表名
- 例子:select cust_id from crash;
注意:如果在from后面直接使用表名的话,需要先指定使用的是哪个数据库
- 例子:select cust_id from crashcourse.customers;
03:查询多列
- 格式:select 列1,列2,....from 表名
04:查询所有列
- 格式:select * from 表名
05:避免查询到重复的内容
- 如果查询到的两列内容一样,默认情况下, MySQL是会显示这些重复的行,如果需要相同的行只显示一次,可以使用distinct关键字
- 格式:select distinct 列名 from 表名;
06:设定查询结果返回的行数
- 如果一个表的行非常多,可以使用limit关键字,指定需要返回多少行
- 格式1:select 列名 from 表名 limit n,例如:limit 3 是指前三行
说明:n是限定的行数
- select 列名 from 表名 limit n,m;只显示从第n行开始的后面m行
- 说明:mysql中的行号是从0开始计算的,limit2,3 是从第3行开始往后3行,也就是3,4,5行
- 例子:select cust_id from crashcourse,customers limit 1,3;
07:查询结果排序
- 为了明确地排序用select语句查询出的数据,可以使用order by 语句
- order by 语句取一个或多个列的名字,根据这些列进行排序
- 格式:
select 列名 from 表名 order by 列名;
select 列表 from 表名 order by 列名1,列名2;
08:指定排序方向
- order by 语句默认是按照升序排序(从A到Z),关键字是ASC
- 可以给order by 语句指定降序(从Z到A)顺序排序,使用关键字DESC
- 说明:DESC关键字之应用到直接位于其前面的列名
- 例子:
09:order by 与limit组合
- 使用order by 和limit的组合,能够找出一个列中最高或者最低的值
- 例1:找出最贵的物品价格
- 说明:order by 子句位于from 字句之后,如果使用limit,那么它必须位于order by之后
10:Where语句实例
- 从products表中查询两列,只返回prod_price 值为2.5的行
- 注意:在同时使用order by 和where 子句时,order by 应位于where 之后,否则将会产生错误
11:where 语句支持的操作符
12:where 支持的操作符实例
13:AND 操作符
- MySQL 支持在where字句中给出多个条件,这些条件可以使用and字句表示条件都满足时返回指定的行
- 格式:
select 列名 from 表 where 列1满足条件 AND 列2满足条件;
- 实例:
14:OR操作符
- MySQL支持在where子句中给出多个条件,这些条件可以使用OR子句表示条件中只需要有一个满足时返回指定的行
- 格式:select 列名 from where 列1满足条件OR列2满足的条件
15:AND和OR条件组合中的顺序
- AND/OR 条件组合中的顺序
- AND的优先级高于OR 当AND/OR 中有个条件的时候,需要使用()把各个条件明确的分组,防止条件的错误组合导致返回的结果不正确
- 例1:圆括号具有比AND/OR 更高的优先级,MySQL首先执行圆括号内的条件
- 注意:在使用AND/OR 操作符的where子句中,都应该使用圆括号明确地分组操作符以达到期望的查询目的
16:IN操作符
- IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取值包含在原括号中,以逗号分隔
- 格式:select 列 from 表 where 列 in (value1,value2,...)
- 实例
17:IN操作符特点
- IN操作符的语法清晰直观
- 计算次序容易管理
- IN操作符一般比OR操作符执行速度更快
- IN可以包含其他select语句,使得能够动态地建立where子句
18:NOT操作符
- where子句的NOT操作符只有一个功能,即否定它之后所跟的任何条件
- 使用NOT很容易找出与条件列表不匹配的行
- 例1:NOT 否定跟在它之后的条件,因此,MySQL不匹配1002和1003的vend_id,而是匹配1002和1003之外的vend_id
19:NOT操作符(实例)
- 例1:NOT否定跟在它之后的条件,因此,MySQL不匹配1002和1003的vend_ id
- 注意:MySQL只支持使用NOT对IN,BETWEEN和EXISTS子句取反
20:LIKE操作符
- 通配符是用来匹配值的一部分的特殊字符
- 为了在查找子句中使用通配符,必须使用LIKE操作符,LIKE只是MySQL后跟的查找模式利用通配符匹配而不是直接相等匹配进行比较
21:百分号(%)通配符
- 百分号(%)在查处串中,%表示任何字符出现任意次数,但是不能匹配null
- 例:找出所有以jet开头的产品
22:下划线(_)通配符
- 下划线的用户与%一样,但是下划线只匹配单个字符而不是多个字符
- 例1:查找的字符串前面包含1个字符和空格,该匹配字符串用单引号括起来:
23:通配符特点:
- 与%不一样,_总是匹配一个字符,不能多也不能少
- 使用通配符会比没有通配符更消耗数据库执行查询的时间,应该在需要使用通配符的地方使用