本系列(MySQL学习笔记)是我基于B站上很是受欢迎的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所作的笔记,方便你们学习和掌握MySQL。mysql
1.这个系列基本包含了视频中老师讲课的全部内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)web
@黎曼的猜测:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (能够直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号sql
3.SQLyog的安装(来自B站评论区)数据库
@江左萌粽猪 连接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuzide
MySQL学习笔记1:select查询(一) 基本用法
MySQL学习笔记2:select查询(二) 条件查询
MySQL学习笔记3:select查询(三) 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数svg
函数功能:将逻辑语句封装在方法体中,对外暴露方法名 调用:select 函数名(实参列表) [from 表]; 特色: 函数名,函数功能 分类: 单行函数(ifnull ,concat, length) 输入一个值返回一个值 分组函数,作统计使用 又称为统计函数、聚合函数、组函数 常见单行函数: 字符函数:length,concat,substr,instr,upper,lower,lpad,rpad,replace 数学函数:round,ceil,floor,truncate,mod 日期函数:now,curdate,curtime,year,monthname,str_to_date,date_format 其余函数:version,database,user 控制函数:if,case 分组函数见MySQL学习笔记5:常见函数(二)
USE myemployees;
SELECT LENGTH('john');、 SHOW VARIABLES LIKE '%char%'; # utf8 SELECT LENGTH('张三丰'); #9 一个汉字占3个字节
SELECT CONCAT(last_name,'_',first_name) AS 姓名 FROM employees;
SELECT LOWER(UPPER('john')); SELECT CONCAT(UPPER(last_name),LOWER(first_name)) FROM employees;
SQL 索引从1开始 截取从指定索引7开始全部字符,这里是字符的长度,不是字节的长度 SELECT SUBSTR('李莫愁爱上了陆展元',7) AS out_put; #‘陆展元’
截取从指定索引处指定长度的字符 SELECT SUBSTR('李莫愁爱上了陆展元',1,3) AS out_put; # '李莫愁'
姓名首字符大写,其余字符小写,而后下划线拼接显示 SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) FROM employees;
SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put; #7 SELECT INSTR('杨殷六侠不悔爱上了殷六侠','殷六侠') AS out_put; #2 SELECT INSTR('杨不悔爱上了','殷六侠') AS out_put; #0
SELECT LENGTH(TRIM(' 张翠山 ')) AS out_put; #9 SELECT TRIM('a' FROM 'aaaaaaaaaaaaaaa张aa翠a山aaaaaaaaaa') AS out_put; #张aa翠a山
SELECT LPAD('殷素素',10,'*') AS out_put; #*******殷素素 SELECT LPAD('殷素素',2,'*') AS out_put; #殷素
SELECT RPAD('殷素素',12,'ab') AS out_put; SELECT RPAD('殷素素',2,'ab') AS out_put; #殷素
SELECT REPLACE('张无忌周芷若爱周芷若上了周芷若','周芷若','赵敏') AS out_put;
SELECT ROUND(-23.45); #-23 SELECT ROUND(23.4333,2); #23.43 小数点后保留两位
SELECT CEIL(-23.24); #-23
SELECT FLOOR(-2.03); #-3
SELECT TRUNCATE(1.65,1) #1.6 小数点后保留1位
SELECT MOD(-10,-3); # -1 被除数为负,结果为负 SELECT MOD(10,-3); # 1 SELECT MOD(-10,3); # -1
SELECT NOW();
SELECT CURDATE();
SELECT CURTIME();
SELECT YEAR(NOW()); SELECT MONTH('2011-05-01'); SELECT YEAR(hiredate) FROM employees; SELECT MONTHNAME('2011-05-01'); # 返回May SELECT DAY(NOW());
%Y 四位年份 %y 二位年份 %m 二位月份(01,02,03) %c 月份 (1,2,3) %d 日 %H 小时(24小时制) %h 小时(12小时制) %i 分钟 %s 秒
SELECT STR_TO_DATE('5-1-2011','%m-%d-%Y'); SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d');
查询入职日期为1992-4-3的员工信息 SELECT * FROM employees WHERE hiredate=STR_TO_DATE('4-3 1992','%m-%d %Y');
SELECT DATE_FORMAT(NOW(),'%y %m %d');
查询有奖金的员工的名和入职日期,格式为xx月/xx日/xx年 SELECT last_name,DATE_FORMAT(hiredate,'%m/%d/%y') FROM employees WHERE commission_pct IS NOT NULL;
SELECT VERSION(); SELECT DATABASE(); # 查看当前数据库 SELECT USER();
SELECT IF (10>5,'big','small'); SELECT last_name,commission_pct,IF(commission_pct IS NULL,'无奖金','有奖金') AS 备注 FROM employees;
使用1:switch case的效果 能够单独当语句用 case 要判断的字段、表达式 when 常量1 then 要显示的值1或语句1; # 值不加分号,语句加分号 when 常量2 then 要显示的值2或语句2; else 要显示的值n或语句n; end
/*查询员工的工资,部门编号,新工资, 要求部门号=30 显示的工资为1.1倍, 要求部门号=40 显示的工资为1.2倍, 要求部门号=40 显示的工资为1.3倍, 其余为原工资 */ SELECT salary,department_id, CASE department_id WHEN 30 THEN salary*1.1 WHEN 40 THEN salary*1.2 WHEN 50 THEN salary*1.3 ELSE salary END AS 新工资 FROM employees;
case 使用2:相似于多重if case when 条件1 then 要显示的值1或语句1; when 条件2 then 要显示的值2或语句2; when 条件3 then 要显示的值3或语句3; else 要显示的值n或语句n end
/*查询员工工资, 若是工资大于20000,显示A级别, 大于15000显示B级别, 大于10000,显示C级别, 不然显示D级别 */ SELECT salary, CASE WHEN salary>20000 THEN 'A' WHEN salary>15000 THEN 'B' WHEN salary>10000 THEN 'C' ELSE 'D' END AS 级别 FROM employees ORDER BY salary DESC; # 降序排序
将员工姓名按首字母排序,显示姓名的长度,姓名 SELECT LENGTH(last_name),last_name FROM employees ORDER BY SUBSTR(last_name,1,1); SELECT CONCAT(last_name,' earns ',salary, ' monthly but wants ',salary*3) FROM employees WHERE salary=24000; 使用case-when 按照条件 /* job grade AD_PRES A ST_MAN B IT_PROG C SA_REP D */ SELECT last_name,job_id, CASE job_id WHEN 'AD_PRES' THEN 'A' WHEN 'ST_MAN' THEN 'B' WHEN 'IT_PROG' THEN 'C' WHEN 'SA_REP' THEN 'D' ELSE 'E' END AS 'grade' FROM employees;