MySQL 基础+高级篇- 数据库 -sql -尚硅谷前49章学习笔记:

USE `myemployees`;
SELECT 
  last_name,
  `email`,
  `phone_number`,
  `salary`
FROM
  employees ;
#起别名
SELECT * FROM `employees`;
SELECT last_name ASFROM `employees`;
SELECT salary AS 'OUT put' FROM `employees`;
#去重
SELECT DISTINCT `department_id` FROM `employees`;
# +号的作用 在mysql钟只有一个功能运算符
#连接函数concat(string 1,string 2)
SELECT NULL+5;
#运算只要其中一方为null结果为null
SELECT 'aaa'+5 AS '和';
SELECT CONCAT(last_name,first_name) AS '姓名' FROM `employees`;
# IFNULL(a,b),如果不为NULL,则为啊,反则为b
SELECT 
  CONCAT(
    `first_name`,
    ',',
    `last_name`,
    ',' ,`job_id`,
    ',',
    IFNULL(`commission_pct`,0.5)
  ) 
FROM
  `employees` ;
# 模糊查询
ike
between and
in
is null
SELECT * FROM `employees`
WHERE salary>12000;
/*模糊查询的使用
通配符*/
SELECT last_name FROM `employees`;
SELECT * FROM `employees` 
WHERE last_name LIKE '%a%';
SELECT last_name,salary FROM `employees`
WHERE last_name LIKE '__e_a%';
# between and 等价于>= and <=
SELECT 
*
FROM `employees`
;

# in 的作用,查找一个集合
SELECT * FROM `employees` WHERE job_id NOT IN('ad_pres','ad_vp','fi_mgr');
#等于号不能判断Null值,需要用 is null或者is not null
SELECT COUNT(last_name) FROM `employees` WHERE `commission_pct` IS  NULL
;
# 安全等于<=>也可以判断Null,也可以判断普通数值
SELECT COUNT(last_name) FROM `employees` WHERE `commission_pct`<=>NULL;
# 查询每个人奖金的获得量
SELECT DISTINCT 
  CONCAT(first_name, last_name) AS 姓名,
  salary * 12 * (1+ IFNULL(`commission_pct`, 0)) 
  AS 年工资
  FROM `employees`;
  
  
  SELECT last_name,salary FROM `employees`
  WHERE salary<18000 AND `commission_pct` IS  NULL;
  DESC `employees`;
  # 模糊查询匹配不到null的记录
  /*数据库可以持久化数据到本地,
  可以实现结构化查询*/
  SELECT * FROM `employees`
  WHERE `employee_id`>=90 ORDER BY hiredate;
  
  SELECT *,salary*12*(1+IFNULL(`commission_pct`,0)) AS 年薪
  FROM `employees` ORDER BY 年薪 DESC;
  # 长度函数 length()
  # order by 支持结构体快排,按优先级排序
  SELECT * FROM `employees`
  ORDER BY salary ASC,`employee_id` DESC LIMIT 1,1;
  
SELECT 
  last_name,
  `department_id`,
  salary * 12*(1+IFNULL(`commission_pct`,0)) AS 年薪
  FROM `employees` ORDER BY 年薪 DESC,`department_id`;
 
 SELECT last_name,salary FROM `employees` WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC;
 
 SELECT *,LENGTH(`email`)FROM `employees` WHERE `email` LIKE '%e%'
 ORDER BY LENGTH(`email`) DESC,`department_id` ASC;
 /*
 字符函数
1: length()获取参数值的字节个数
2: concat()拼接字符串
3: upper(),lower() 大小写转换函数
4: substr(),substring 索引从1开始,不加第三个参数,从开始索引到最后
select substr('李莫愁爱上了陆展元',7) as output;
select substr('李莫愁爱上了陆展元',1,3) as output;
5:instr(string s1,string s2) 返回子串的一个位置,不存在返回0
6: trim(' ' from(' '))去掉前后指定字符
7: lpad(' ', ,' ')用指定的字符左填充或者右截取为指定的长度
8:rpad(' ', ,' ')
9: replace('母串','子串','替换串')
*/
SELECT LENGTH(TRIM('  张翠山  ')) AS output;
SELECT TRIM('a' FROM'aaaa张翠山aaaaa') AS output;
SELECT LPAD('殷素素',10,'a') AS put;
SELECT REPLACE('aaaaa','a','b');
/*
数学函数
1: round() 四舍五入
2: ceil() 向上取整
3: abs() 取绝对值函数
4: floor 向下取整
5: truncate(,) 截断 小数点后保留几位
*/
SELECT ROUND(1.5);
SELECT ROUND(-1.4);
SELECT CEIL(1.005);
SELECT ABS(-5);
SELECT FLOOR(9.99);
SELECT TRUNCATE(1.65,1);
/*
日期函数
1: now()返回系统时间+日期
2: curdate()返回当前日期,不包含时间
3: year(),month(),second(),month()返回日期中的指定值
4: str_to_date 将字符通过指定的格式转化为日期
5: data_format 将日期转为字符串模式
*/
SELECT NOW();
SELECT CURDATE();
SELECT YEAR(`hiredate`)ASFROM `employees`;
SELECT MONTHNAME(NOW());
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS PUT;
SELECT DATE_FORMAT(CURDATE(),'%Y年-%m月-%d日') AS put;
SELECT `hiredate` FROM `employees`;
SELECT last_name,DATE_FORMAT(`hiredate`,'%m月-%d日 %y年') AS 日期 FROM
`employees` WHERE `commission_pct` IS NOT NULL;

/*
其他函数
version()查看版本
user()
databases()
*/
SELECT USER();
/*流程控制函数
1: if()函数: if else效果 if(条件,true,false)
*/
SELECT IF(10>5,1,0)AS put;
SELECT last_name,`commission_pct`,IF(`commission_pct` IS NULL,'没奖','有奖')AS put FROM`employees` ;

猜你喜欢

转载自blog.csdn.net/yangzijiangac/article/details/106643158