本文主要是介绍MySQL[笔记][基础部分1-4小节回顾],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1-4小节回顾
排序
1语法
SELECT 查询列表
FROM 表
WHERE 筛选条件
ORDER BY 排序列表【ASC|DESC】
2特点
1、asc:升序,如果不写默认升序
DESC:降序
2、排序列表支持 单个字段、多个字段、函数、表达式、别名
3、order by的位置一般放在查询语句的最后(除limit语句之外)
函数
一、概述 功能:类似java中的方法 好处:提高重用性和隐藏实现细节 调用:SELECT 函数名(实参列表);
二单行函数
1、字符函数
concat;连接
SELECT CONCAT(last_name,’,’,first_name) 姓名
substr;截取子串
SELECT SUBSTR(‘李莫愁爱上了陆展元’,7) out_put;
SELECT SUBSTR(‘李莫愁爱上了陆湛远’,1,3) out_put;
upper:变大写
lower:变小写
replace:替换
select replace(‘abcd’,‘a’,‘c’);
length
trim:去前后空格
SELECT TRIM(‘A’ FROM ‘AAVVVVVVVBBBBBAA’);
lpad:左填充
rpad:右填充
SELECT RPAD(‘11–22’,10,’*’);
instr:获取子串第一次出现的索引
SELECT INSTR(‘129213123’,9);
2、数学函数
ceil:向上取整
SELECT CEIL(1.2);
round:四舍五入
SELECT ROUND(12.7,2);
MOD:取模
floor:向下取整
truncate:截断
SELECT TRUNCATE(122.3333,2);
RAND:获取随机数,返回0-1之间的小数,无线接近1
SELECT RAND();
3、日期函数
now:返回当前日期+时间
year;返回年
month:返回月
day:返回日
date_format:将日期转换成字符
SELECT date_format(NOW(),’%y年%m月%d日’)AS out_put;
curdate:返回当前日期
str_to_date:将字符转换成日期
SELECT STR_TO_DATE(‘2020-1-18’,’%Y-%c-%d’)as out_put;
curtime:返回当前时间
SELECT CURTIME( );
hour:小时
minute:分钟
second:秒
datediff:返回两个日期相差天数
monthname:以英文形式返回月
4、其他函数
version:当前数据库服务器的版本
database:当前打开的数据库
user:当前用户
password(‘字符’):返回该字符的密码形式
SELECT PASSWORD(‘123’);
md5(‘字符’):返回该字符的md5加密形式
5、流程控制函数
1 if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2
2 case情况1
case 变量或表达式或字段
when 常量1 then 值1 when 常量2 then 值2 … else 值n end EG1: SELECT
salary 原始工资 ,department_id,case department_id WHEN 30 THEN salary1.1 WHEN 40 THEN salary1.2
WHEN 50 THEN salary*1.3 ELSE salary END AS 新工资 FROM employees;case情况2 CASE WHEN 条件1 then 值1 WHEN 条件2 then 值2 。。。 else 值n end
EG2: SELECT salary, case WHEN salary>20000 THEN ‘A’ WHEN salary>15000
THEN ‘B’ WHEN salary>10000 THEN ‘C’ ELSE ‘D’ END AS 工资级别 FROM
employees;
三、分组函数
1、分类
max最大值
min最小值
sum和
avg平均值
count计算个数
2、特点
1语法
SELECT MAX(字段) from 表名;
2支持类型
sum和avg一般用于处理数值型
max、min、count可以处理任何数值类型
3以上分组函数都忽略null
4都可以搭配distinct使用,实现去重的统计
select count(distinct 字段) from 表;
5count函数
count(字段):统计该字段非空值的个数
count(*):统计结果集的行数
案例;查询每个部门的员工个数
SELECT COUNT(*)
FROM EMPLOYEES E,DEPARTMENT
GROUP BY DEPARTMENT;
语法
SELECT 分组函数,分组后的字段 - 5
from 表 - 1
where 筛选条件 - 2
group by 分组的字段 - 3
having 分组后的筛选 - 4
order by 排序列表 - 6
连接查询
一、含义 当查询中涉及到了多个表的字段,需要使用多表连接
SELECT 字段1,字段2
from 表1,表2,…;
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接
二、分类
按年代分类:
sql92
等值
非等值
自连接
也支持一部分外连接(用于oracle、sqlserver,mysql不支持)
sql99【推荐使用】
内连接
等值
非等值
自连接
外连接
左外
右外
全外(mysql不支持)
交叉连接
三、SQL92语法
1、等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key
【and筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
特点: 1 一般为表起别名 2 多表顺序可以调换 3 n表连接至少需要n-1个连接条件 4 等值连接的结果时多表的交集部分
2、非等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 非等值的连接条件
【and筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
3、自连接
语法:
select 查询列表
from 表 别名1,表 别名2
where 非等值的连接条件
【and筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
|使用关键字 |筛选的表| 位置|
|分组前筛选| where |原始表 |group by的后面|
| 分组后筛选 |having | 分组后的结果 |group by 的后面|
这篇关于MySQL[笔记][基础部分1-4小节回顾]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!