mysql 查询
2023-03-21 17:58:55 2 举报
AI智能生成
mysql 查询
作者其他创作
大纲/内容
分支主题
语法:case<br>-- when 条件1 then 结果1<br>-- when 条件2 then 结果2<br>-- when 条件3 then 结果3<br>-- else 结果4<br>-- end
例题
SELECT<br> SALARY,<br> case <br> when SALARY>12000 then 'A类'<br> when SALARY>8000 then 'B类'<br> when SALARY>5000 then 'C类'<br> when SALARY>3000 then 'D类'<br> ELSE 'E类'<br> END<br> FROM t_employees;
字符串函数
例题
请你将 hello word 拼接在一起<br>SELECT 'hello' + 'word'; -- 这是错的<br>-- CONCAT(str1,str2,...) 这就是拼接函数<br> SELECT CONCAT('hello','word');<br> <br> SELECT CONCAT('%','手机','%');<br> <br> -- 字符串 替换函数 INSERT(str,pos,len,newstr)参数1 是原始字符串 参数2 是起始位置 参数3是截取位置 参数4 替换的字符<br> SELECT INSERT('helloworld',6,0,'mysql')<br> -- 大小写函数<br> SELECT LOWER('HWDADASD');<br> SELECT UPPER('sdasda');<br> <br> -- 字符串截取函数<br> SELECT SUBSTRING('hello,java123',7,4)
条件查询
语法:select *from 表名 where 查询条件
-- 关系条件<br> -- -> < >= <= != <><br>-- 逻辑条件<br>-- -and or not<br>-- 区间条件<br>-- between 起始值 and 结束值<br>-- 枚 举条件<br>-- in(值1,值2) not in(值1,值2)<br>-- 非空条件 sql中的null不能使用=或者!=来进行判断<br>-- is null in not null<br>-- 模糊查询<br>-- like not like<br>-- 占位符:<br> -- %: 表示0个或者多个字符<br> -- _:表示一个字符
例题
-- 1.查询工资大于10000的员工信息<br>SELECT * FROM t_employees where salary >10000;<br>-- 2.查询不是销售的员工信息<br>SELECT *FROM t_employees where job_id <> 'sa_man';<br>SELECT *FROM t_employees where job_id != 'sa_man';<br>-- 3.查询姓名为Peter员工的信息<br>SELECT *FROM t_employees WHERE FIRST_NAME='peter' or LAST_NAME='peter';<br>-- 4.查询1998年以后入职的员工 且工资大于8000的员工信息<br>SELECT *FROM t_employees WHERE HIRE_DATE >1998 and SALARY>8000;<br>-- 5.查询不是30部门的员工信息<br>SELECT *FROM t_employees WHERE DEPARTMENT_ID>30 or DEPARTMENT_ID<30;<br>SELECT *FROM t_employees WHERE not DEPARTMENT_ID=30;<br>-- 6.查询 50 30 90 部分的信息<br>SELECT *FROM t_employees WHERE DEPARTMENT_ID=50 or DEPARTMENT_ID=30 OR DEPARTMENT_ID=90;<br>-- 7.查询员工工资在8000 到12000的员工信息<br>SELECT *FROM t_employees WHERE SALARY BETWEEN 8000 and 12000 ;<br>-- 8.查询员工 30 40 70部分信息 枚举用法<br>SELECT *FROM t_employees WHERE DEPARTMENT_ID in(30,40,70);<br>-- 9.查询没有绩效的员工信息<br>SELECT * FROM t_employees WHERE COMMISSION_PCT is null;<br>-- 10.查询有绩效的员工信息<br>SELECT *FROM t_employees WHERE COMMISSION_PCT is not null;<br>-- 11.查询名字中带有en的员工信息<br>SELECT *FROM t_employees WHERE LAST_NAME like '%en%';<br>-- 12.查询lastname 中 以la 开头的员工信息<br>SELECT * FROM t_employees WHERE LAST_NAME like 'la%';<br><br>-- 13查询lastname中 第二个和第三个字符为 in的员工信息<br>SELECT *FROM t_employees WHERE LAST_NAME like '_in%';<br>-- 14.查询last name 中带's'且长度大于6的员工信息;<br>SELECT *FROM t_employees WHERE LAST_NAME like '%s%' and LENGTH(LAST_NAME)>=6;<br><br><br><br><br><br><br><br>-- 查询Student表中的所有记录的STU_NAME、STU_SEX和CLASSES列<br>SELECT stu_name,stu_sex,classes FROM student;<br>-- 查询教师所有的单位即不重复的DEPART列<br>SELECT DISTINCT DEPART FROM teacher;<br>-- 查询Student表的所有记录<br>SELECT * FROM student;<br>-- 查询Score表中成绩在60到80之间的所有记录<br>SELECT * FROM score WHERE DEGREE BETWEEN 60 and 80;<br>-- 查询Score表中成绩为85,86或88的记录<br>SELECT * FROM score WHERE DEGREE IN(85,86,88);<br> -- 查询Student表中“95031”班或性别为“女”的同学记录<br>SELECT * FROM student WHERE CLASSES=95031 or STU_SEX = '女';<br>-- 以CLASSES降序查询Student表的所有记录<br>SELECT *FROM student ORDER BY CLASSES DESC;<br>-- 以COU_ID升序、DEGREE降序查询Score表的所有记录<br>SELECT *FROM score ORDER BY COU_ID;<br>SELECT *FROM score ORDER BY DEGREE desc;<br> -- 查询“95031”班的学生人数<br>SELECT count(CLASSES) '人数' FROM student WHERE CLASSES =95031;<br>
时间函数
语法:select 时间函数(参数列表)
例题
-- 获取当前的系统时间<br>SELECT SYSDATE();<br><br>-- 获取当前日期<br>SELECT NOW();<br><br>-- 获取系统当前日期(不包含时间)<br>SELECT CURDATE();<br><br>-- 获取系统的时间<br>SELECT CURTIME();<br><br>-- 获取指定日期中的年份<br>SELECT YEAR('2023-03-21');<br><br>-- 计算指定日期相隔天数<br>SELECT DATEDIFF('2022-1-23','2023-3-21')<br><br>-- 在指定日期基础上添加指定天数<br>SELECT ADDDATE(NOW(),20);
聚合函数
语法:select 聚合函数 (列名) from 表明
sum函数 求和<br> SELECT SUM(SALARY+SALARY*IFNULL(COMMISSION_PCT,0)) FROM t_employees;<br> <br> -- max 函数求最大值<br> SELECT MAX(SALARY) FROM t_employees;<br> <br> -- min 函数求最小值<br> SELECT MIN(SALARY) FROM t_employees;<br> <br> -- avg 求平均值<br> SELECT AVG(SALARY)FROM t_employees;<br> <br> -- count 函数求个数 *表示所有列 函数指挥统计不为NULL的数据<br> SELECT COUNT(*)FROM t_employees;<br> SELECT COUNT(1)FROM t_employees;<br> SELECT COUNT(COMMISSION_PCT)FROM t_employees;-- 为null的不统计<br> <br> <br> <br> <br> <br> <br> <br>-- 1.找出奖金高于工资的雇员<br>SELECT * FROM emp WHERE comm>sal;<br>-- 2.找出奖金高于工资60%的雇员<br>SELECT * FROM emp WHERE comm>(sal*0.6);<br>-- 3.找出部门10中所有经理和部门20中所有店员的信息<br>SELECT * FROM emp WHERE (deptno=10 and job='manager') OR (deptno=20 AND job='clerk');<br>-- 4.薪资大于或等于2000的所有员工的信息。<br>SELECT * FROM emp WHERE sal>=2000;<br>-- 5.查询没有奖金或者奖金低于100的员工信息<br>SELECT *FROM emp WHERE comm<100 OR comm IS NULL;<br>-- 6.查询姓名不带”R”的员工姓名<br>SELECT *FROM emp WHERE ename NOT LIKE '%r%';<br>-- 7.显示员工的姓名和入职时间,根据入职时间,将最老的员工排放在最前面。<br>SELECT ename,hiredate FROM emp ORDER BY hiredate;<br>-- 8.查询所有员工的月薪(工资+奖金)<br>SELECT ename,(sal+IFNULL(comm,0)) as '月薪' FROM emp ;<br><br><br><br>-- 1.查询学生平均分<br>SELECT AVG(score)FROM stuscore;<br>-- 2.查询姓名是张三的学生 成绩和<br>SELECT SUM(score)FROM stuscore WHERE sname = '张三';<br>-- 3.将学生信息按照 分数倒序<br>SELECT * FROM stuscore ORDER BY score;<br>-- 4.分别获取学生信息中 分数最低的学生姓名和分数最高的学生姓名<br>select sname,score as '最高分' from stuscore where score =(select max(score) from stuscore);<br>SELECT sname,score FROM stuscore ORDER BY score DESC LIMIT 1;<br>select sname,score as '最低分' from stuscore where score =(select min(score) from stuscore);<br>SELECT sname,score FROM stuscore ORDER BY score LIMIT 1;
0 条评论
下一页