当前位置: 首页 > news >正文

MySQL -- DQL

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

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

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

相关文章:

  • 麻雀搜索优化算法MATLAB实现,SSA-BP网络
  • 开发仿抖音APP遇到的问题和解决方案
  • 记华为荣耀手机调试H5
  • 4D毫米波雷达和3D雷达、激光雷达全面对比
  • JVM对象创建与内存分配
  • String类常用方法总结
  • Spring依赖注入之@autowire注解详解
  • 拼多多官方开放平台接口app商品详情接口获取实时商品详情数据演示
  • 数据结构-快速排序“人红是非多”?看我见招拆招
  • uniapp+vue3使用pinia,安卓端报错白屏
  • 基于JSP的音乐网站的设计与实现【附源码】
  • 邦芒支招:利用自荐电话求职的七大技巧
  • 整套数字化招采平台安全防御体系
  • SQL优化——如何写出高效率SQL
  • 如何查看笔记本电池健康度?(超级详细)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 2019.2.20 c++ 知识梳理
  • Centos6.8 使用rpm安装mysql5.7
  • C学习-枚举(九)
  • C语言笔记(第一章:C语言编程)
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Python socket服务器端、客户端传送信息
  • Redux 中间件分析
  • vue的全局变量和全局拦截请求器
  • Webpack 4x 之路 ( 四 )
  • 观察者模式实现非直接耦合
  • 猴子数据域名防封接口降低小说被封的风险
  • 前端面试题总结
  • 前端学习笔记之观察者模式
  • 使用putty远程连接linux
  • 思维导图—你不知道的JavaScript中卷
  • 再谈express与koa的对比
  • 7行Python代码的人脸识别
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • $L^p$ 调和函数恒为零
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二十四)Flask之flask-session组件
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (南京观海微电子)——I3C协议介绍
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (算法)N皇后问题
  • (转)EXC_BREAKPOINT僵尸错误
  • .net 反编译_.net反编译的相关问题
  • .NET 中的轻量级线程安全
  • .NET关于 跳过SSL中遇到的问题
  • .net快速开发框架源码分享
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @Mapper作用
  • [ C++ ] STL---string类的使用指南
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [BZOJ3223]文艺平衡树
  • [cb]UIGrid+UIStretch的自适应
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [GN] Vue3.2 快速上手 ---- 核心语法2