命令
show databases //列出所有数据库
show tables //列出表
show columns from table //列出表里的列
4.4 检索所有列
- 通配符 使用省事,但是会降低索引和引用程序的性能
4.5 检索不同的行
distinct 不能部分使用distinct 指示mysql只返回不同的值,应用所有列,而不仅是前置他的列。
如果 select distinct v_id,price ,除非指定的两个列都不同,否则所有行都会被检索
4.6 限制结果
limit 第一个参数为位置,第二个数为要检索的行数
5 排序检索数据
5.1 排序数据
order by
5.2 按多个列排序
5.3 指定排序方向
asc desc
6 过滤数据
where
null
必须是 is null 才能筛选
7 数据过滤
7.1.3 计算次序
and 和 or 会优先执行 and
where id = 3 or age =10 and height > 9
会被解析为 height > 9 and id = 3 或者 age =10 的数据
7.2 in操作符
in执行速度>or
7.3 not
not 仅对in between 和 exists子句取反
8 用通配符进行过滤
8.1.2 下划线通配符
与%一样,但是只匹配单个字符而不是多个字符
9 正则表达式
Regexp
9.2.2 or匹配
|
regrexp ‘1 | 2’
9.2.3 匹配几个字符之一
[]
[123]ton
9.2.4 匹配范围
[a-z] [1-9]
9.2.5 匹配特殊字符
\
\. \.
10 创建计算字段
concat 拼接
11 使用数据处理函数
常用文本处理函数
left 返回串左边的字符
length 返回串的长度
locate 找出串的一个子串
lower 将串转为小写
ltrim 去掉串左边的空格
right 返回串右边的字符
rtrim 去掉串右边的空格
soundex 返回串的soundex值 是一个将任何文本串转换为描述其语言表示的字母数字模式的算法。比如Y.Lee 去搜Y Lie搜不到,可以尝试用 where soundex(name) = Soundex('Y Lie')
upper 将串转为大写
日期和时间函数
AddDate 增加一个日期(天,周等)
addtime 增加一个时间(时间,分等)
curdate 返回当前日期
curtime 返回当前时间
date 返回日期时间的日期部分
datediff 计算两个日期之差
date_add 高度灵活的日期运算函数
date_format 返回一个格式化的日期或者时间串
day 返回一个日期的天数部分
dayofweek 对于一个日期,反回对应星期几
hour 返回时间小时部分
minute
month
now 返回当前日期和时间
second
time 返回日期的时间部分
year 年部分
SELECT * FROM `bs_order_review` where YEAR(created_at)='2022' and MONTH(created_at)='1'; 查询2022年1月所有数据
数值处理函数
abs 绝对值
cos 余弦
exp 指数值
mod 返回余数
pi 圆周率
rand 随机数
sin 正弦
sqrt 平方根
Tan 正切
汇总数据
聚集函数
avg 返回列的平均值
count 行数 count(*)不管列中包含的是空值(null) 还是非空都会计数 count(field) 忽略null
max 最大值
min 最小值
sum 和 忽略值为null的行
分组数据
group by
必须在where后order by前
having 过滤分组 where是分组前过滤,having是分组后过滤
order by | groupby |
---|---|
排序产生的输出 | 分组行,但输出可能不是分组的顺序 |
任意列都可以使用(甚至非选择的列) | 只可能使用选择列或表达式列,而且必须使用每个选择列表达式 |
不一定需要 | 如果和聚集函数一起使用(或表达式)则必须使用 |
13.5 select 顺序
子句 | 说明 | 是否必须使用 |
---|---|---|
select | 要返回的列或表达式 | 是 |
from | 从中检索数据的表 | 仅在从表选择数据时使用 |
where | 行级过滤 | 否 |
group by | 分组 | 仅在按组计算聚集时使用 |
having | 组级过滤 | 否 |
order by | 输出排序顺序 | 否 |
limit | 检索的行 | 否 |