Mysql 基础学习

-- 1 查询表中单个字段SELECT `last_name` FROM `employees`;-- 2 查询表中多个字段SELECT `last_name`,`email`,`department_id` FROM `employees`;# 3.查询表中所有字段SELECT * FROM `employees`;# 4. 查询表中的常量值SELECT 100;# 5. 查询表达式SELECT 100%98;# 6.查询函数SELECT VERSION();# 7.起别名SELECT 100%98 AS 结果;SELECT `last_name` AS 姓 FROM `employees`;# 8. 去重复--查询员工表中涉及到的部门编号SELECT DISTINCT `department_id` FROM `employees`;# 9.+号的作用--查询员工名和姓连接成一个字段,并显示为 姓名SELECT CONCAT(`last_name`,`first_name`) AS 姓名 FROM `employees`;# (二)条件查询/*语法 selcet 查询列表 from 表名 where 筛选条件分类 一、按条件表达式筛选 条件运算符:<;>;!=;<=;>=; 二、按逻辑运算符,与或非 and or not 用于连接条件表达式 三、模糊查询 like between and in is null*/# 按条件表达式筛选员工信息# 1。查询工作大于12000的员信息SELECT * FROM`employees` WHERE`salary`>12000;# 2.查询部门编号不等于90号员工名和部门编号SELECT CONCAT(`last_name`,`first_name`) AS 姓名,`department_id` FROM `employees` WHERE `department_id`!=90;# 3.查询工资在10000到12000之间的员工名,工资和奖金SELECT `first_name`,`salary`,`commission_pct`FROM`employees`WHERE `salary` >10000 AND`salary`<12000;# 4.查询部门编号不是在90到100之间,或者工资高于15000的员工信息SELECT *FROM`employees`WHERE`department_id`<90 OR `manager_id`>100 OR `salary`>15000;# 模糊查询-- like-- 和通配符搭配使用:% 表示任意多个字符-- _下划线表示任意单个字符-- 查询员工名中第三个字符为n,第5个字符为l的员工名和工资SELECT `last_name`,`salary` FROM `employees`WHERE `last_name`LIKE ‘__n_l%‘;-- 查询员工名中包含字符a的员工信息SELECT * FROM `employees`WHERE `last_name`LIKE ‘%a%‘;-- % 表示任意字符的通配符-- 查询员工名中第二个字符为_下划线的员工名SELECT `last_name` FROM `employees`WHERE `last_name`LIKE‘_\_%‘;-- \:表示转义字符-- ESCAPE:表示指定任意符号为转义字符SELECT `last_name` FROM `employees`WHERE `last_name`LIKE‘_$_%‘ ESCAPE ‘$‘;-- between and-- 闭区间-- 查询员工编号在90到100之间的员工信息SELECT * FROM `employees`WHERE `department_id` BETWEEN 90 AND 100;-- in 判断某字段的值是否属于in列表中某一个,值类型必须统一或兼容,列表值不支持通配符-- 查询员工工种编号是 AD_PRES,AD_VP 中的一个员工名和工种编号SELECT `last_name`,`job_id` FROM`employees`WHERE `job_id` IN (‘AD_PRES‘,‘AD_VP‘);-- is null-- 查询摩尔没有奖金的员工名和奖金率SELECT `last_name`,`commission_pct` FROM`employees`WHERE `commission_pct`IS NULL;-- 查询摩尔有奖金的员工名和奖金率SELECT `last_name`,`commission_pct` FROM`employees`WHERE `commission_pct`IS NOT NULL;# 安全等于<=>,是判断等于,用的较少-- 查询摩尔没有奖金的员工名和奖金率SELECT `last_name`,`commission_pct` FROM`employees`WHERE `commission_pct`<=> NULL;-- 查询员工号为176的员工的姓名和部门编号,年薪SELECT `last_name`,`department_id`,`salary`*12*(1+IFNULL(`commission_pct`,0)) AS 年薪 FROM `employees`;# 排序查询/*语法 select from[where]order by [asc, desc] order by 中可以支持单个字段,多个字段,表达式,函数,别名order by 一般是放在查询语句的最后面,limit字句除外*/-- 查询员工信息,要求工资从高到低SELECT* FROM`employees` ORDER BY`salary` DESC;-- 查询部门编号大于90的员工信息,要求按照入职先后排序SELECT * FROM `employees`WHERE`department_id`>90 ORDER BY `hiredate` ASC;-- [按表达式排序] 按年薪的高低显示员工的信息和年薪SELECT*,`salary`*12*(1+IFNULL(`commission_pct`,0)) AS 年薪 FROM`employees` ORDER BY 年薪 DESC;-- 按照姓名的长度显示员工的姓名和工资 [按函数排序]SELECT LENGTH(`last_name`) AS 姓名长度,`last_name`,`salary` FROM `employees` ORDER BY 姓名长度 DESC;-- 查询员工信息,要求先按照工资排序,在按照员工部门编号排序[按多个字段排序]SELECT *FROM `employees`ORDER BY `salary` ASC,`department_id` DESC;# 常见函数/*分类单行函数-- concat length 等分组函数-- 做统计用,*/-- 字符函数-- lengthSELECT LENGTH(‘john‘)-- 查看数据库的字符集SHOW VARIABLES LIKE‘%char%‘;-- concat -- 拼接字符串SELECT CONCAT(`last_name`,`first_name`) FROM `employees`;-- upper,lowerSELECT UPPER(‘john‘);SELECT LOWER(‘JOHN‘);-- substr,substring-- 索引从1开始,到结束SELECT SUBSTR(‘小龙女金庸‘,4);-- 金庸SELECT SUBSTR(‘小龙女金庸‘,1,3);-- 小龙女-- instr --子串在大串中的起索引[第一次]SELECT INSTR(‘小龙女金庸‘,‘金庸‘);-- 4-- trim -- 去空格[前后]SELECT TRIM(‘ 小龙女金庸 ‘);SELECT TRIM(‘a‘FROM‘aaaa 小龙aaaaaaa女金庸 ‘);-- lpad-- 左边填充指定长度的符号SELECT LPAD(‘张三丰‘,10,‘*‘);-- rpad-- 右边填充指定长度的符号SELECT RPAD(‘张三丰‘,12,‘*‘);-- replace-- 替换SELECT REPLACE(‘张无忌爱上了周芷若‘,‘周芷若‘,‘赵敏‘);# 数学函数 -- round:四舍五入SELECT ROUND(1.65);-- 2# ceil :向上取整SELECT CEIL(1.2);# floor :向下取整# truncate-- 截断SELECT TRUNCATE(1.69,1);# mod 取余数# 日期函数-- now 返回当前的日期SELECT NOW();-- curdate 返回当前系统日期,不包含时间SELECT CURDATE();SELECT CURTIME();-- 返回当前的时间,不包含日期# 可以获取指定的部分,年,月,日,时,分,秒;SELECT YEAR(NOW());SELECT MONTH(NOW());SELECT MONTHNAME(NOW());# str_to_date 将日期字符转换成指定日期格式SELECT STR_TO_DATE(‘1988-12-13‘,‘%Y-%c-%d‘);-- date_format 将日期转换成字符SELECT DATE_FORMAT(NOW(),‘%y年%m月%d 日‘);# 其他函数SELECT VERSION();SELECT DATABASE();SELECT USER();# 流程控制函数-- if函数:if else 的效果;SELECT `last_name`,`commission_pct`,IF(`commission_pct` IS NULL,‘hehe ‘,‘haha ‘)FROM`employees`;-- case 函数-- 使用1/*案例1.查询员工工资,要求 部门号=30,显示的工资为1.1倍;部门号=40,显示的工资为1.2倍;部门号=50,显示的工资为1.3倍;其他部门,显示的工资为原工资。*/SELECT `salary`原始工资,`department_id`,CASE `department_id`WHEN `department_id`=30 THEN `salary`*1.1WHEN `department_id`=40 THEN `salary`*1.2WHEN `department_id`=50 THEN `salary`*1.3ELSE `salary`END AS 新工资FROM `employees`;-- case 类似于多重if/*查询员工的工资请如果工资大于2000,显示A级别如果工资大于》15000,显示B级别如果工资大于10000,显示C级别否则,显示D级别*/SELECT `salary`,CASEWHEN `salary`>20000 THEN ‘A‘WHEN `salary`>15000 THEN ‘B‘WHEN `salary`>10000 THEN ‘C‘ELSE ‘D‘END AS 工资级别 FROM `employees`;# 分组函数-- sumSELECT SUM(`salary`)FROM `employees`;-- avgSELECT AVG(`salary`)FROM `employees`;-- maxSELECT MAX(`salary`)FROM `employees`;-- minSELECT MIN(`salary`)FROM `employees`;-- countSELECT COUNT(`salary`)FROM `employees`;

  

相关文章