1. mysql基本介绍和使用

 

二 可以查询常量,表达式,函数

基础查询

SELECT 'tom';
SELECT 100*100;
SELECT VERSION();

3. 可以使用distinct关键字去重

SELECT DISTINCT department_id FROM employees;

4. select ‘Tom’ + null  :只要有一方为null,结果为null

select  ‘Tom’ + 90 :常量为0,再去做运算

5. SELECT CONCAT(last_name,first_name) AS '姓名' FROM employees; 可以使用concat关键字来连接字段

6. IFnull 函数,如果函数中的第一个字段为空,那么就将其替换为0,或者你指定的特定值

SELECT IFNULL(`commission_pct`,0) AS 奖金率, `commission_pct` FROM employees


进阶查询-条件查询

1. 条件运算符 < >  =  !=   >=  <=

2. 逻辑运算符  and  or   not

① and:表示两个条件都满足

3. 模糊查询   like     between and(包含临界值)      in    not  null   

select * from employees where last_name like '_\_%'

_是匹配单子字符,%匹配的是多个字符,如果需要匹配的字符中有_,要用转义符\

4. is null 而非 = null,=和!=不能用于判断null值,只能使用is null 或者 is not  null

SELECT * FROM employees WHERE `commission_pct` IS NULL  查询奖金率为0的员工信息


进阶查询——排序查询

1. 查询员工信息按照工资进行排序

SELECT * FROM employees ORDER BY salary DESC
2. 查询部门编号大于90的员工信息,按照入职时间的先后顺序进行排序

SELECT * FROM employees WHERE department_id>90 ORDER BY hiredate DESC
3. 按照年薪排序显示员工的信息和年薪(表达式排序)

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC
Note:排序可以用表达式也可以用别名,都可以实现排序

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees ORDER BY 年薪 DESC

4. 按照姓名的长度显示员工的姓名和工资(函数排序)

SELECT  first_name,salary FROM employees ORDER BY LENGTH(first_name)

5. 先按照姓名长度排序,再按照工资进行排序(可以按照多个字段进行排序,并没有限制,用逗号隔开即可)

SELECT * FROM employees ORDER BY LENGTH(first_name),salary 
6. order by子句一般是放在SQL语句的最后面,只有limit子句是放在order by子句后面的!

进阶查询——常见函数

字符 数学 日期 其他及流程控制函数

1. 字符函数(处理字符串),utf8编码的中文占3个字节,GBK编码的中文占2个字节(10):讲了10个,回去看下

① SELECT LENGTH('Teemo')

② SELECT CONCAT(first_name,'-',last_name) 姓名 FROM employees

③ upper()  lower() - 将字符串改写为大写或者小写

SELECT UPPER(first_name) FROM employees
 

2. 数学函数

1. ROUND 四舍五入,如果是复数,先把绝对值四舍五入,然后加上符号
SELECT ROUND(1.65)
2. SELECT ROUND(3.1415925,3) 保留3位小数
3. ceil:向上取整,返回>=该参数的最小整数
SELECT CEIL(1.02)
4. FLOOR:向下取整,返回<=该参数的最大整数
5. truncate:截断,第二个参数为保留几位小数
SELECT TRUNCATE(2.3345,3)
6. MOD 取余
 

3. 日期函数

① now 返回当前的系统日期+时间

select now()

② curdate 返回当前系统日期,不包含时间

select curdate()

③ 返回当前系统时间,不包含日期
SELECT CURTIME();
④ 获取指定的部分 年 月 日 时 分 秒
SELECT YEAR(NOW()); 
SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());
⑤ 将字符串通过指定的格式转换为日期 STR_TO_DATE
如-查询入职日期为1992-4-3的员工信息,前台一般用户输入一个4-3 1992 这样的不符合格式的日期,我们对应为日期,所以需要将其转为符合查询格式的日期
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');
⑥ DATE_FORMAT: 将日期转为合适格式的字符串
如-查询有奖金的员工姓名和 入职日期,要求日期格式为(XX月/XX日  XX年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %y年') AS 入职日期 FROM employees WHERE commission_pct IS NOT NULL;

4. 流程控制函数

① if : if else的效果
SELECT IF(10>5,'大','小')  类似于三元运算符

② case函数(多用于等值判断)

如:查询员工的工资,要求

部门号=30,显示的工资为1.1倍

部门号=40,显示的工资为1.2倍

部门号=50,显示的工资为1.3倍

其他部门,显示的工资为原工资

SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 60 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;

③ 查询员工的工资情况,如果工资大于20000,A级别,如果工资大于15000,B级别,如果工资大于10000,C级别,否则,显示D级别
SELECT salary, 
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>20000 THEN 'B'
WHEN salary>20000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值