length():获取参数值的字节个数;
char_length()获取参数值的字符个数;
concat(str1,str2,.....):拼接字符串;
upper()/lower():将字符串变成大写/
小写;
substring(str,pos,length):截取字符串 位置从1
开始;
instr(str,指定字符)
:返回子串第一次出现的索引,如果找不到返回
0;
trim(str):去掉字符串前后的空格或子串,trim(指定子串 from
字符串
);
lpad(str,length,填充字符)
:用指定的字符实现左填充将
str
填充为指定长度;
rpad(str,length,填充字符)
:用指定的字符实现右填充将
str
填充为指定长度;
replace(str,old,new):替换,替换所有的子串;
②逻辑函数
case when 条件 then 结果1 else 结果2 end; 可以有多个when;
ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回原本的值;
if函数:if else的 效果 if(条件,结果1,结果2);
③数学函数
round(数值)
:四舍五入;
ceil(数值)
:向上取整,返回
>=
该参数的最小整数;
floor(数值)
:向下取整,返回
<=
该参数的最大整数;
truncate(数值,
保留小数的位数
)
:截断,小数点后截断到几位;
mod(被除数,
除数
)
:取余,被除数为正,则为正;被除数为负,则为负;
rand():获取随机数,返回0-1之间的小数;
④日期函数
now():返回当前系统日期+
时间;
curdate():返回当前系统日期,不包含时间;
curtime():返回当前时间,不包含日期 可以获取指定的部分,年、月、日、小时、分钟、秒;
YEAR(日期),MONTH(
日期
),DAY(
日期
) ,HOUR(
日期
) ,MINUTE(
日期
) SECOND(日期
);
str_to_date:将日期格式的字符转换成指定格式的日期;
date_format:将日期转换成字符串;
datediff(big,small):返回两个日期相差的天数;
⑤分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数;
分类:sum 求和、
avg
平均值、
max
最大值、
min
最小值、
count
计数;
1.sum,avg
一般用于处理数值型
max
,
min
,
count
可以处理任何类型。
2.以上分组函数都忽略null
值。
3.count函数的一般使用count
(
*
)用作统计行数。
4.和分组函数一同查询的字段要求是group by
后的字段。
条件查询
使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
语法:select <结果> from <表名> where <条件
>
模糊查询:
LIKE :是否匹配于一个模式 一般和通配符搭配使用,判断字符型数值 或数值型;
通配符: % 任意多个字符,包含0
个字符
_
任意单个字符;
between and 两者之间,包含临界值;
in 判断某字段的值是否属于in列表中的某一项;
IS NULL(为空的)或 IS NOT NULL(不为空的;
eg:SELECT * FROM student WHERE NAME LIKE '%三%'
SELECT * FROM student WHERE NAME LIKE '张__'
union语法:
UNION
[SQL 语句 1]
UNION
[SQL 语句 2]
UNION ALL
[SQL 语句 1]
UNION ALL
[SQL 语句 2]
当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all , mysql 会把所有的记录返回,且效率高于union。
查询结果排序:使用
ORDER BY
子句排序
order by
排序列
ASC/DESC
asc
代表的是升序,
desc
代表的是降序,如果不写,默认是升序。
数量限制:
limit子句:对查询的显示结果限制数目 (sql
语句最末尾位置
)。
eg:实现分页功能
SELECT * FROM student LIMIT 0,4 SELECT * FROM student LIMIT 4,4
分组查询:
eg: SELECT gender,COUNT(*),SUM(height) FROM student GROUP BY gender
SELECT birthday,COUNT(*) FROM student GROUP BY birthday
where 条件 对原始表中的数据进行条件筛选;
having 条件 对分组后的数据进行条件筛选;
子查询 出现在其他语句中的select语句 称为子查询/内查询
按子查询出现的为:
select 语句中子查询: 只支持标量查询
使用的较少 from 语句中子查询: 表子查询
where 语句中子查询:标量子查询,列子查询,行子查询
按功能、结果集的行列数不同: 标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)(较少)
表子查询(结果集一般为多行多列)
eg:
在select后面 使用子查询
SELECT NO,gender,(SELECT NAME FROM student st WHERE st.no = s.no ) FROM student s
在from后面使用子查询 把一个查询的结果可以当做一张表 继续作为数据源查询
SELECT * FROM (SELECT gender,COUNT(*)AS c FROM student GROUP BY gender)AS t WHERE t.c>2
在where后面使用子查询 标量子查询 -- 查询身高大于平均身高的学生 平均身高?
SELECT * FROM student WHERE height > (SELECT AVG(height) FROM student)
在where后面使用子查询 列子查询
SELECT * FROM student WHERE NO IN(SELECT NO FROM student WHERE height>1.60)
在where后面使用子查询 行子查询
SELECT * FROM student WHERE (NO,height) = (SELECT MAX(NO),MAX(height) FROM student)