子查询
【注意】
1.必须用括号包起来
2.order by 不能用于子查询,可以一用group by
3.子查询返回多行的情况,只能用多数据操作符,比如in
4.between操作符不能连接子查询,但是可以在子查询语句里面使用between
第一类:select 语句嵌套select语句
select 列名或者表达式 from 表名
where 表达式 比较操作符 (子查询语句);
返回单值的子查询:
select 列名 from 表名1
where 表名1.列名 = (select 列名 from 表名2 where 筛选条件);
返回多值子查询:
select 列名 from 表名1
where 表名1.列名 in (select 列名 from 表名2 where 筛选条件);
子查询与聚合函数:
select 列名 from 表名
where 表名1.id =[in] (select 列名 from 表名 where 列名 = (select 聚合函数 from 表名));
[]表示选填
insert 语句嵌套select语句:
insert into 表名1
select 列名1, 列名2,列名n from 表2
where 条件;
delete 语句嵌套select语句:
delete from 表名1
where 列名 操作符
(select 列名 from 表名2 where 条件)
【注意】
delete 与 update语句嵌套子查询时,子查询中涉及的表不同于主句中的表
update 语句嵌套select语句
update 表名1
set 列名 操作符 新的值
where 列名 操作符
(select 列名 from 表名2 where 条件)
mid(列名,起始位置,长度)
substring(列名,起始位置,长度)
【注意】
起始位置为1
ucase():转为大写字母
lcase():转为小写字母
length():求长度
round(列名,位数):对某个数值字段进行指定小数的四舍五入
concat(列名1,列名2):合并两个或多个字符串,称为一个字符串
replace():搜索和替换一个字符串中的子字符串
update 表名
set 列名 = replace(列名, 需要被替换的子字符串,用来代替的新的子字符串)
where 条件;
trim():去掉字符串中不要的空字符
ltrim():去掉左边不要的空字符
rtrim():去掉右边不要的空字符
format(要格式化的数字,需要保留的小数点位置):格式化某个字段显示方式
SQL 时间,日期函数
curdate():返回当前时间
datediff():计算两日期相差天数
data_add(起始日期,interval 表达式 单位):添加一个时间值
例:select data_add(‘2018-05-21 00:55:55’ interval 1 second) result;
data_sub():减少一个时间值
例:select data_sub(‘2018-05-21 00:55:55’ interval 1 second) result;
str_to_date(日期,格式):将字符串转为日期类型
%Y 年 大写
%m 月
%d 日
%H 小时
% i 分
%T 时间
%W 星期