[TOC]
查询
1.查询常量值、表达式、函数
select 18,'jarvis',10*5,100+80,VERSION();
2.常用关键字
distinct
select distinct t.department_id,t.* from employees t;
mysql中 + 的作用
-- 只要其中一方为字符,试图将字符型数值转换成数值型
-- 转换成功,则继续做加法计算
select '10' + 20;
-- 如转换失败,则将字符型数字转换成0
select 'jiaw' + 20;
-- 只要有一方为null,结果肯定为null
select null + 10;
concat 实现链接
拼接
null和任何字段拼接,结果都为null
select concat(first_name,last_name,phone_number) AS 姓名号码 from employees;
DESCRIBE tablename 显示表结构
describe employees;
desc employees;
IFNULL(expr1,expr2)
select IFNULL(commission_pct,'空值'),commission_pct from employees;
3.分组函数
分组函数作用于一组数据,并对一组数据返回一个值。
AVG()
count(*)
COUNT(*) 返回表中记录总数,适用于任意数据类型
- COUNT(计数)函数
COUNT(expr) 返回expr不为空的记录总数
select count(*) from employees;
MAX()
MIN()
SUM()
4.GROUP BY
4.1 在SELECT列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中。
4.2 不能在 WHERE 子句中使用组函数。
4.3可以在 HAVING 子句中使用组函数
过滤分组: HAVING 子句
5.条件查询:
1.按条件表达式筛选
- 简单条件运算符
> < = != <> >= <=
2.按逻辑表达式筛选
&& || ! and or not
3.模糊查询
like
between and
in
is null
6、字符查询
sql的索引都是从1开始的。
length()
UPPER()
LOWER()
SUBSTR()
INSTR()
TRIM('')
去掉前后字符
LPAD(str,len,padstr)
用指定字符实现左填充指定长度
select RPAD(str,len,padstr)
用指定字符实现右填充指定长度
REPLACE(str,from_str,to_str)
-- length()方法
select length('wu家');
-- 查看当前字符格式
show VARIABLES like '%CHAR%'
select CONCAT(UPPER(first_name),LOWER(last_name)) as '姓 名' from employees;
-- 截取从指定索引处后面所有字符
select SUBSTR('小凉皮爱上老吴',6) as name;
-- 截取从指定索引处指定字符长度的字符
select SUBSTR('小凉皮爱吃面',1,3) as name;
SELECT INSTR('小凉皮爱吃面','皮');
-- 去掉前后空格
select TRIM(' 小凉皮 ');
-- 去掉前后a
select TRIM('a' from 'aaaa小凉aaa皮aaaaa');
select LPAD('万里长城永不倒',15,'*')
select LPAD('万里长城永不倒',2,'*')
select RPAD('万里长城永不倒',20,'+');
select REPLACE('周芷若爱上张无忌','周芷若','赵敏');
7.数学函数
ROUND(X)
CEIL(X)
向上取整,返回>=该函数的最小整数
FLOOR(X)
向下取整,返回<=该函数的最小整数
TRUNCATE();截断
MOD(a,b);取余
-- 四舍五入
select ROUND(-1.55);
-- 小数点都没保留两位
select ROUND(3.1415926,2);
-- 向上取整
select CEIL(-1.255)
-- 向下取整
select FLOOR(1.85)
select TRUNCATE(1.698,2);
-- MOD(a,b)
select MOD(-10,-3);
select MOD(10,-3);
select MOD(-10,3);
select 10&3;
8.日期函数
NOW();
CURDATE();
CURTIME();
YEAR(date);
MONTH(date);
MONTHNAME(data);
select NOW();
select CURDATE();
select CURTIME();
select YEAR(NOW());
select MONTH(NOW());
-- 英文月份
select MONTHNAME(NOW());