• MySQL -- DQL


    1、select查询列和列名:
    1. --查询所有员工信息(*通配符,默认查询所有的列)
    2. select * from emp;
    3. --查询员工的姓名
    4. select ename from emp;
    5. --查询员工的薪资
    6. select sal from emp;
    7. --查询员工的姓名和薪资
    8. select ename , sal from emp;
    9. select ename sal from emp;
    10. select ename sal comm from emp;
    11. --查询员工的姓名和薪资,推荐使用单引号
    12. select ename '员工姓名', sal "薪资" from emp;
    13. --查询到的数据可以直接进行运算
    14. select ename ,sal ,sal * 12 from emp;
    15. select ename ,sal ,comm ,(sal+comm) * 12 from emp;
    2、select的条件查询,普通条件查询 => < != <> >= <=
    1. --查询员工编号为7369的员工
    2. select ename,sal from emp where empno = 7369;
    3. --查询员工姓名叫做SMITH
    4. select ename,deptno,job from emp where ename = 'SMITH';
    5. select ename,deptno,job from emp where ename = 'smith';
    6. --查询薪资大于2000的员工姓名
    7. select ename from emp where sal > 2000;
    8. --查询工作为SALESMAN
    9. select * from emp where job = 'SALESMAN';
    10. --查询部门在20的员工
    11. select * from emp where deptno = 20;
    12. --查询薪资不等于2000的员工
    13. select * from emp where sal != 2000;
    14. select * from emp where sal != 2000;
    3、in 在某个范围中查找
    1. --查询 员工编号为 7369 7788 7881的员工信息
    2. select * from emp where empno in (7369,7788,7881);
    3. --查询 员工编号除了 7369 7788 7881之外的所有员工信息
    4. select * from emp where empno not in(7369,7788,7881);
    5. --查询除了10,20部门之外的所有员工
    6. select * from emp where deptno not in (10,20);
    4、null值查询
    1. --查询不发放津贴的员工信息
    2. select * from emp where comm is null;
    3. --查询发放津贴的员工信息
    4. select * from emp where comm is not null;
    5、范围比较
    1. --查询薪资范围在1000-4000之间的员工信息 [1000.4000]
    2. select * from emp where sal between 1000 and 4000;
    6、模糊查询 % _
    1. --查询名字中有S的员工
    2. select * from emp where ename like '%S%';
    3. --查询名字最后一个字符是S
    4. select * from emp where ename like '%S';
    5. --查询名字第一个字符是S
    6. select * from emp where ename like 'S%';
    7. --查询名字第二个字符是A
    8. select * from emp where ename like '_A%';
    9. --查询名字中有%的员工
    10. select * from emp where ename like '%\%%';
    11. --查询名字第8 188个字符是A,这是需要一些特殊的手段-》函数
    12. -- % 代表任意字符的任意次数 _任意字符的一次
    7、 多条件联合查询 and or
    1. --and 必须前后同时满足条件才能返回结果
    2. --or前后有一个满足条件就能返回结果
    3. --查询在20部门并且薪资大于2000的员工
    4. select * from emp where deptno =20 and sal >2000;
    5. --查询在20部门或者薪资大于2000的员工
    6. select * from emp where deptno = 20 or sal >2000;
    7. --查询不在20部门并且薪资小于2000的员工
    8. select * from emp where deptno <> 20 and sal <2000;
    8、select结果排序 order by,使用asc是升序排列(默认),使用desc可以降序排序
            1、单列
    1. --按照薪资进行排序(默认升序)
    2. select * from emp order by sal;
    3. --按照薪资进行排序(降序)
    4. select * from emp order by sal desc;
    5. --按照薪资进行排序(升序)
    6. select * from emp order by sal asc;
    7. --按照津贴进行排序(null排在最前面)
    8. select * from emp order by comm;
            2、多列
    1. --多个排序的列
    2. select * from emp order by deptno,sal;
    3. --多个排序的列(部门升序 薪资降序)
    4. select * from emp order by deptno,sal desc;
    5. --多个排序的列(工作,薪资)
    6. select * from emp order by job,sal;
    9、select结果分页
    1. --每次查询前N行
    2. SELECT
    3. *
    4. FROM
    5. emp
    6. LIMIT 4;
    7. --查询第N页,每页显示M个
    8. select * from emp limit 0,3;
    9. select * from emp limit 3,3;
    10. select * from emp limit 6,3;
    11. select * from emp limit (n-1)*M,M;
    12. --查询薪资大于1000的逆序排列,然后显示前5条记录
    13. select * from emp where sal >1000 order by sal desc limit 0,5 ;
    1. 1、字符串函数:
    2. 1、计算字符串的长度:length
    3. select name ,length(name) from emp;
    4. 2、截取字符串的长度:截取的字段,下表是从1开始的。
    5. select name ,substr(name,1,2) from emp;
    6. 3、大小写的转化:
    7. select name ,upper(name),lower(name) from emp;
    8. 4、字符串做拼接:
    9. select comcat('word','hello');
    10. 5、字符串做替换:
    11. select replace (tom,'t',' ') from emp; 结果: t m
    1. 日期函数:
    2. 1、获取当前的时间:
    3. curdate、current_date
    4. select curdate
    5. ,current_date
    6. ,current_time;
    7. 2、日期格式的转换:
    8. - select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s')
    9. - select hiredate, date_format(now(),'%Y年%m月%d日 %H时%i分%s秒') from emp;
    10. 3、分别获取年、月、日、时、分、秒
    11. select year(curdate)
    12. ,month(curdate)
    13. ,day(curdate)
    14. ,hour(curdate)
    15. ,minute(curdate)
    16. ,second(curdate);
    17. 4、做日期的加减:
    18. select adddate(curdate,10);
    19. 5、将时间转成时间戳:
    20. unix_timestamp (curdate);
    21. 6、两个日期相减的函数:
    22. datediff(date1,date2):两个日期相减,date1减去date2得到相减之后的天数
    1. 数值函数:
    2. -- 向上取整 向下取整
    3. - select ceil(12.1),floor(12.9)
    4. -- mod abs pow PI rand round TRUNCATE(直接进行截取,不进行四舍五入)
    5. -- 保留多少位有效数字
    6. - select round(1.4999999,2),round(1.4999999),round(1.4999999,-1)
    7. - select TRUNCATE(1.4999999,2)
    1. 转换函数:
    2. -- 日期--》字符串
    3. - date_format(date,expr)
    4. - select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s');
    5. -- 字符串--》日期
    6. - 要注意字符串和格式的匹配
    7. - select STR_TO_DATE('2020-4-16 17:15:24','%Y-%c-%d %H:%i:%s');
    8. - select STR_TO_DATE('5月2022年4日','%m月%Y年%d日');
    1. -- 空值的处理
    2. if null(exp1,exp2) exp1!=null?exp1:exp2
    3. select IFNULL(comm,888) from emp;
    4. -- 加密算法
    5. select MD5('123456');
    6. select AES_ENCRYPT('123456','abcd'),AES_DECRYPT(AES_ENCRYPT('123456','abcd'),'abcd');
    1. case when 函数的使用:
    2. 1、简单的使用:
    3. case sex when '男' then true else false end;
    4. 2、例如基本的使用:
    5. 用例:
    6. 将不同的分数段进行分类:0-60 不及格、60-70 中等、70-80 良好 80-90 优秀
    7. select
    8. name,
    9. ( case when score < 60 then '不及格'
    10. when score >60 and score <70 then '中等'
    11. when score >70 and score <80 then '良好'
    12. else '优秀' end
    13. ) as rank;
    14. from
    15. score

    在M有SQL中的执行的顺序是:

    from  -- where -- group by -- select  --  having -- order by 

  • 相关阅读:
    【杂谈】-蓝牙低功耗数据传输模式比较
    【Python从入门到进阶】34、selenium基本概念及安装流程
    Linux入门之优化 systemd 以缩短开机时间
    C语言函数指针类型声明
    用ZeroTier搭建属于自己的虚拟局域网(VLAN)
    JVM原理(一):JVM运行时数据区域的分析
    OpenAI 创始人奥特曼:做你自己喜欢的事情
    【python画画】蘑菇云爱心
    Spring Cloud Feign 如何使用对象参数
    Python----break关键字对while...else结构的影响
  • 原文地址:https://blog.csdn.net/m0_62078954/article/details/134536509