T4-1select基本结构
语法:
select <字段名1,字段名2,字段名3...>
from <表名>
[where<条件表达式>]
[group by 字段名1,字段名2,字段名3... having<条件表达式>]
[order by<字段名1,字段名2,字段吗3...>[ASC(升序,默认)]DESC(降序)]
T4-1~4-2所有例子和数据库:
数据库:bus.sql
1.选择所有列
select from line
**代表所有列
2.查询部分列
select lineNo from line
lineNo代表查询的字段名
3.列标题
select 字段名1 (空格)列标题1,字段名2 as 列标题 2
4.DISTINCT关键字过滤重复行
select distinct 字段名 from 表名
DISTINCT写在select from 之间
!注意:
(1)ceil(num)为Mysql内置的数学函数,其功能是对数值型num进行向上取整,例如ceil(12.4)=13
(2)floor(num)为Mysql内置的数学函数,其功能是对数值型num进行向下取整,例如floor(12.7)=12
(3)round(num)为Mysql内置的数学函数,其功能是对数值型num进行向四舍五入**取整,例如round(12.7)=13
4-2Mysql运算符
运算符 | 含 义 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算,返回商 |
% | 求余运算,返回余数 |
!注意:
除数不能为0,为0没有意义返回NULL
Mysql比较运算符
运算符 | 含义 |
---|---|
= | 等于 |
<=> | 安全等于,可以比较null |
<>或!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
is null | 判断一个值是否为null |
is not null | 判断一个值是否不为null |
Mysql逻辑运算符
运算符 | 含义 |
---|---|
AND或者&& | 逻辑与,含义并且,在两边都不为null的情况下,需要两边表达式同时为1(真)返回1否则返回0 |
OR或者|| | 逻辑或,含义或者,在两边都不为null的情况下,有一边为1返回值为,如果两边都为null时返回null |
NOT或者 ! | 逻辑非,含义取反,只有一个表达式,当表达式为0时返回值为1,反之为0,当表达式为null时返回值则为null |
XOR | 逻辑异常,当任意一个操作数为null时,返回值为null。其余与or相似,01取1,00取0 |
4-3定制查询结果
4-3-1查询结果排序
1)单列排序:即order by子句后只有一个列名
例:select from line order by miles asc
说明:对miles字段进行升序排序,默认为升序排序可以省略 asc 降序为:desc
2)多列排序:即从左到右以此排序,当第一个字段值一样时,则比较下一个字段的值
例:select lineNo ,company,from_station,end_station,miles,number from line order by miles,number desc
*说明:先按miles字段进行升序排序,当遇到miles的值一致时,则按照number的值进行降序排序
4-3-2 使用limit限制查询结果数量
语法:select * from 表名 limit[offset,]rows
- 标红的参数必须为整数,offset可以省略
- offset 表示从第几个记录数开始,rows代表有几行
limit一般配合order by使用 用来查询第几名冠亚军
4-4模糊查询
4-4-1:LIKE运算符
!注意:只有对字符类型的数据才能使用LIKE运算符和通配符
1.%通配符可以匹配0到多个任意字符
例子:select name,phone from driver where name like ‘张%’
说明:查询姓名中性张的人的记录
2.“”通配符
*“”通配符与“%”相似,但只能代表任意一个字符,如需匹配两个字符。则用“_ ”
例子:select name,phone from driver where name like’林_ 一’
说明:查询名字开头为林结尾一的人的手机号
4-4-2:IN运算符
in也称“成员条件运算符”用于查询值是不是在一个指定的集合里:
例子:select lineNo,from_startion,edn_station from line where company in(‘公交一公司’,’公交三公司’)
恒等于:select lineNo,from_startion,edn_station from line where company=‘公交一公司’or company=‘公交三公司’
说明:查询公司为一公司和三公司的数据
经验:IN运算符与OR运算符相比,其优点是:当选择条件很多时,采用IN运算符运行效率更高
4-4-3:between…and运算符
在where子句中,可以采用between…and运算符选取介于两个值之间的数据,可以时数字,日期类型(范围取值包括边界值) 恒等于:>= or <=
1)比较数字类型的数据
例子:select lineNo,from_station,end_station,miles from line where miles between 20 and 50
说明:查询长度为20-25千米线路的信息
2)比较日期类型的数据
例子:select * from employee where birthday between ‘1970-01-01’ and ‘1980-01-01’
说明:查询生日在:’1970-01-01’ 到 ‘1980-01-01’之间员工的日期