1.mysql--常用sql(2)

20、条件查询
(1)条件表达式:< , > ,=, !=,<>
(2)逻辑运算符:&& ,||, ! , and ,or, not
(3)模糊查询:like between and,in,is null,is not null
21、通配符

% 任意多个字符
_ 任意单个字符

//查询员工表中,姓名中第三个字符为e,第五个字符为a的员工信息和工资
select lastname,salary from employees where last_name like '__e_a%';

//查询员工表中,姓名中带有“明”字的信息
select * from employees where last_name like '%明%';

//查询员工表中,姓名中带有“明”字的信息
select * from employees where last_name like '%明%';
22、转义字符

转义字符:\ -可以把_由通配符转换为其本身代表的下划线,escape也可以表示转义,
escape ' ′ 表示把 ' 表示把 表示把表示为转义的意思。
例如:查询某个字段中带有下划线,查询时需要查询下换线为条件

select * from employees where late_name='ssk\_sss';
select * from employees where last_name='ssk$_sss' escape '$'; #两句效果等同,escape '$'表示把$用作转义字符,字符自主选择。
23、数据库种执行脚本
 source  /home/xxx.sql
24、查看数据库版本
mysql> select version();[root@host1 ~]# mysql --version
25、查询常量值和表达式
mysql> select 100;
mysql> select '100';
26、查询表达式
mysql> select 100*98; #结果显示9800,sql语句支持表达式查询,包括+,-,\*,%
27、查询函数
mysql> select VERSION();  #查询函数version()的返回值
28、sql起别名
mysql> select last_name as 性,first _name as 名 from table1;
mysql> select last_name 姓 from table1; #可省略as
有特殊符号时,需要加" "或者' '
mysql> seclet last_name as "out name" from table1; #空格和out属于特殊字符,不加" ",sql无法辨认
29、去重查询
mysql> select distinct last_name from table1;
mysql> select distinct iden_str,capturetime,devicecode from trs_kp_elefence; #多个字段为条件去重
mysql> select count(*) from (select distinct iden_str,capturetime,devicecode from trs_kp_elefence;); #计算去重后的总数量,select distinct count(*) 是错误的,该命令无法执行。
30、字段拼接查询

concat()函数

mysql> select concat(last_name,first_name) as name from table1; #如果拼接字段存在NULL,会造成拼接值为NULL

IFNULL()可判断字段是否为NULL,例如IFNULL(devicecode,0)即判断devicecoad字段是否为NULL,如果为NULL则置为0.

mysql> select concat(last_name,first_name,IFNULL(device_code,0)) as name from table1;
31、in模糊查询
mysql> select * from employes where  job_id in('IT_PORT','AD_VP','AD_PRES');
#查询表中的员工工种是T_PORT,AD_VP,AD_PRES的员工信息
32、<=> 安全等于

判断是否等于,IS NULL 仅可以判断NULL值,<=>既可以判断NULL,也可以判断具体值。

33、排序

**group by:**asc代表升序,desc代表降序,不写代表升序,order by 支持单个字段,多个字段,表达式,函数,别名,order by放在语句最后,limit除外

mysql> select * from employees order by salary desc; #按照salary的大小降序排列

mysql> select * from employees order by salary;#升序排列,默认升序,desc表降序,也可以加asc表升序

mysql> select * ,salary*12*(1+IFNULL(commission_pct,0)) 年薪 from employees order by 年薪 desc;
#计算员工年薪(年薪等于月薪*12*(1+奖金比例,奖金为null时置为0)),并降序排序。order by即可以选择别名年薪,也可以选择表达式,salary*12*(1+IFNULL(commission_pct,0))

mysql> select length(last_name) 字节长度,last_name,salary from employees order by length(last_name); #按字节长度排序

mysql> select * from employees order by salary asc,employees_id desc; #按照员工工资和员工编号降序,规则是先按照员工工资排序升序排序,工资相同时按照员工编号降序排序
34、函数及常见函数

1.单行函数
concat,length,ifnull等
2.分组函数(统计函数或聚合函数)

一.字符函数
#(1)length():计算字节长度字符
mysql> select length('john'); #输出为4,显示john占用的字节数
mysql> select last_name,length(last_name) from employees; #查询员工表中last_name列的字段长度

#(2)concat():拼接函数
mysql> select concat(last_name,first_name) as name from table1; #如果拼接字段存在NULL,会造成拼接值为NULL

#(3)upper()将字符转换为大写,lower()将字符转化为小写
mysql> select upper('john');#显示JOHN
mysql> select lower('joHn');#显示john
mysql> select concat(upper(last_name),lower(first_name)) as 姓名 from employees; #将姓都转化为大写,将名字都转化为小写并拼接成一个字段,显示为名字。#函数支持嵌套查询

#(4)substr,sunstring() 截取字符串
mysql> select substr('last_name',1,5) from employees;#截取员工表中last_name字段的第1个-第7个字符
mysql> select substr('last_name',3) from employees;#截取员工表中last_name字段第3个字符之后的字符串
mysql> select concat(upper(substr(last_name,1,1),'_',lower(sunstr(last_name,2)) as name from employees; #将员工表中last_name字段中,第一位大写,后面显示小写并用_进行拼接显示
        
#(5)instr() 显示后面字符串在前面字符中第一次出现的索引位置
      
#(6)trim() 去掉字段的前后的空格,也可以去掉指定字符
 mysql> select length(trim(last_name)) from employees;#显示员工表中last_name去除前后空格以后的字符长度
 mysql> select length(trim('a',last_name) from employees;#显示员工表中last_name去除前后字符a以后的字符长度,仅去除指定字段的前后,中间的为有效字符
                
#(7)lpad() 左填充 rpad() 又填充
mysql> select lpad(last_name,10,*) from employees;#显示员工表中last_name字段,如果不足10个字符则左侧用*号填充,长度超过了10会从左侧进行截断
mysql> select rpad(last_name,10,*) from employees;#显示员工表中last_name字段,如果不足10个字符则右侧用*号填充,长度超过了10会从右侧进行截断
   
#(8)replace() 替换
mysql> select repalce(last_name,'a','e')as name from employees;#将last_name字段中的字符a全部替换为e
二.数学函数
#round():四舍五入
mysql> select round(-1.55);#-2
mysql> select round(1.567,2);#1.57 四舍五入,小数点后保留两位

#ceil():向上取整,返回大于等于改参数的最小整数
mysql> select cell(1.23) #数据2

#floor():向下取整
mysql> select floor(9.99) #输出9

#truncate() :截断
mysql> select truncate(1.697,1); #输出1.6,小数点后保留一位

#mod取余
mysql> select mod(10,3);#输出为1
三.日期函数
#now() 当前时间(日期+时间)
mysql> select now();#获取当前系统时间,例如2020-07-18 21:32:30

#curdate() 返回当前系统日期
#curtime() 返回当前系统时间

#year(),month(), month,date(),hour(),minute(),second()
mysql> select year(now());#返回2020
mysql> select month(now());#返回7月,select monthname(now()) 可返回英文版7月

#str_to_date() 把日期格式按照指定的格式转化为字符
str_to_date('2019-03-09','%Y-%m-%d');#2019-03-09
mysql> select * from employees where hiredate = str_to_date('4-3,2019','%c-%d %Y');#查询hire_date为2019-04-03的员工信息,主要针对日期格式输入不规范,实际hire_date的时间格式为2019-04-03,但是web输入可能时字符串形式的4-3,2019,通过转换成时间格式,也可以对应查到2019-04-03

#date_format():将日期转换成字符
date_format('2019/07/01','%Y年%m月%d日')#2019年7月1日

时间格式

%Y  //四位的年份 
%y //两位的年份
%m //月份(01,02,03,....)
%c //月份(1,2,3,4,....)
%d //日 (01,02,03,....)
%H //小时(24小时制)
%h //小时(12小时制)
%i //分钟(01,02,03,....)
%s //秒 (01,02,....
四.其它函数
mysql> select version()
mysql> select database()#查看当前数据库
mysql> select user() #查看当前用户
五.流程控制函数
#(1)if():if else效果
mysql> select if(10>5,'true','false');#显示true
mysql> select if(10<5,'true','false');#显示false

#(2)case(): 
#1.switch case模式,适用于等值判断
/*case
    when ... then ...
    when ... then ...
    else ...
end*/
select salary 原始工资,department_id
case department_id
   when 30 then salary*1.1
   when 40 then salary*1.2
   when 50 then salary*1.3
   else salary*1
   end as 加权工资
   from employees;#当department_id=30时,工资*1.1倍,为40时,工资*1.2倍,为50时,工资*1.3倍,否者维持原技术不变,最终得到加权工资,显示原始工资,depart_id,加权工资三列。
#2.类似多重if模式,适用于区间判断
/*case
  when 条件 then 显示的结果
  when 条件 then 显示的结果
  ....
  else*/
select salary,
case
 when salary>15000 then 'A'
 when salary>12000 then 'B'
 when salary>10000 then 'C'
 else 'C'
 end as 薪资等级
 from employees;#显示工资salary>15000的员工工资级别为A,15000>=salary>12000的为B,小于12000>=salary>10000的为C,10000>=salary的为D
六.聚合函数(分组函数,统计函数)

sum,ave适合处理处理数值型,忽略null值
max,min,count适合处理任何类型,忽略null值

#sum():求和函数

#avg():平均值

#max():最大值

#min():最小值

#count():计算非空值个数
mysql> select count(salary) from employees;
mysql> select count(*) from employees;#count(*)中的*可以改成常量值或字段,效果相同,都是实现对行的计数,只是在统计时加了一行,内容全部置为常量,计算常量的数量
效率:
myisam存储引擎下,counnt(*)的效率高
innodb存储引擎下,count(*)和count(1)等效率相同

分组函数与distinct配合使用
mysql> select count(distinct salary)from employees;

配合分组函数使用的一般使用 group by,即分组查询
mysql> select max(salary),job_id from empolyees group by job_id;#查询每个工种的最高工资
#41号部门的平均工资
mysql> select  dept_id,avg(salary) from s_emp group by dept_id having dept_41;
#having相当于where条件语句,其存在弥补了where关键字不能与聚合函数联合使用的不足。having和where可以同时使用。having一般针对分组后的数据进行查询,where针对原始表进行查询
#计算平均工资比41号部门高的部门
mysql> select dept_id,avg(salary) from s_emp group by dept_id having avg(salary) > (select avg(salary) from s_emp group by dept_id having dept_id=41);
#查询那个部门的员工数大于2
mysql> select count(*),department_id from employees group by department_id having count(*)>2;
#按多个字段分组
mysql> select AVG(salary),department_id,job_id from employees group by department_id,job_id;#查询每个部门每个工种的平均工资,department_id和job_id相同的被划分为一个分组

mysql> select count(*) 个数,city from departments d,locations l where d.location_id=d.location_id group by city;
#查询每个城市的部分数

mysql> select department_num,d.manager_id,min(salary) from departments d,employees e where d.department_id=e.department_id and commission_pct is not null group by department_name,
d.manger_id; #查询有奖金的每个部门的部门的部门名和部门领导编号和部门最低工资
35、查看当前数据库使用的字符集
mysql> show variables like '%char%'; 显示当前使用的字符集
36、连接查询

连接查询又叫多表连接,根据有效的连接条件实现连接
连接按功能分:
内连接:等值连接,非等值连接,自连接
外连接:左外连接,右外连接,全外连接
交叉连接:

等值连接:多表连接的结果为多表的交集部分
mysql> select name1,name2 from table1,tale2 where table1.name_id=table2.name_id;
#tale1和table2都有name_id字段,可以作为连接条件,时间连接查询,最终返回表1name1列,表2的name2列,并根据name_id 相等一一对应

mysql> select last_name,e.job_id,job_title from employees as e,jobs as j where e.job_id=j.job_id;
#当两张表都有job_id字段时,字段前需要加表名进行指定,另外,针对表名过长,可以给表起别名,起了别名以后,查询的字段就不能使用原来的表名去限定了。

mysql> select last_name ,department_name,commission_pct from employees e,department d where e.department_id=d.department_id and commissin_pct is not null;
#连接查询可以加筛选分组分组条件
mysql> seletc job_title,count(*) from employees e,jobs j where e.jobid=j.jobid group by job_title order by count(*) desc;
#查询每个工种的工种名和员工个数

非等值连接
37、查看当前锁状态
mysql> show status like 'table_lock%';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575936.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下基本指令-掌握

目录 为什么要学命令行 Linux下基本指令-掌握 ls 指令 pwd命令 cd 指令 touch指令 mkdir指令&#xff08;重要&#xff09;&#xff1a; rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a; man指令&#xff08;重要&#xff09;&#xff1a; cp指…

微信黑名单怎么恢复?一招迅速搞定

“求助&#xff01;微信拉黑后&#xff0c;怎样找到并解除黑名单&#xff1f;我不知道具体的操作&#xff0c;希望可以分析给我详细的图文解说&#xff0c;感谢&#xff01;” 微信的黑名单功能允许用户将某人加入黑名单&#xff0c;从而屏蔽其发送消息、查看朋友圈等行为。然…

7天入门Android开发之第1天——初识Android

一、Android系统 1.Linux内核层&#xff1a; 这是安卓系统的底层&#xff0c;它提供了基本的系统功能&#xff0c;如内存管理、进程管理、驱动程序模型等。安卓系统构建在Linux内核之上&#xff0c;借助于Linux的稳定性和安全性。 2.系统运行库层&#xff1a; 这一层包括了安卓…

最新windows版本erlang26.0和rabbitmq3.13下载

Erlang下载 官网下载&#xff1a;https://www.erlang.org/patches/otp-26.0 百度网盘&#xff1a;https://pan.baidu.com/s/1xU4syn14Bh7QR-skjm_hOg 提取码&#xff1a;az1t RabbtitMQ下载 官网下载&#xff1a;https://www.rabbitmq.com/docs/install-windows 百度网盘…

一文解读:阿里云 AI 基础设施的演进与挑战

云布道师 2024 年 4 月 18-19 日&#xff0c;2024 中国生成式 AI 大会在北京 JW 万豪酒店举行&#xff0c;阿里云高级技术专家、阿里云异构计算 AI 推理团队负责人李鹏受邀在【AI Infra】专场发表题为《AI 基础设施的演进与挑战》的主题演讲。李鹏从 AIGC 对云基础设施的挑战、…

echarts利用graphic属性给饼图添加内圈图片及外圈图片(可自适应宽度位于饼图中心)

最终效果图&#xff1a; 目录 前言资源主要部分graphic介绍style介绍代码 加载饼图方法&#xff08;option所有的配置&#xff09; 前言 思路是看到这个博客启发的&#xff1a;点击跳转查看博客&#xff0c;然后在graphic属性里改了我的实际需求&#xff0c;譬如图片的宽高、…

【笔试强训】除2!

登录—专业IT笔试面试备考平台_牛客网牛客网是互联网求职神器&#xff0c;C、Java、前端、产品、运营技能学习/备考/求职题库&#xff0c;在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://ac.nowcoder.com/acm/…

如何安装sbt(sbt在ubuntu上的安装与配置)(有详细安装网站和图解)

sbt下载官网 选择对应的版本和安装程序 Download | sbt (scala-sbt.org) 安装 解压 将sbt-1.9.0.tgz上传到xshell&#xff0c;并解压 解压&#xff1a; tar -zxvf sbt-1.9.0.tgz 配置 1、在/home/hadoop/sbt中创建sbt脚本 /home/hadoop/sbt 注意要改成自己的地址 cd …

16 JavaScript学习: 类型转换

JavaScript 类型转换 Number() 转换为数字&#xff0c; String() 转换为字符串&#xff0c; Boolean() 转换为布尔值。 JavaScript 数据类型 在 JavaScript 中有 6 种不同的数据类型&#xff1a; stringnumberbooleanobjectfunctionsymbol 3 种对象类型&#xff1a; Obje…

Springboot多数据源及事务实现方案

Springboot多数据源及事务实现方案 文章目录 Springboot多数据源及事务实现方案背景问题分析实现原理1. 数据源抽象与动态路由2. 线程本地存储&#xff08;ThreadLocal&#xff09;3. 面向切面编程&#xff08;AOP&#xff09;4. 自定义注解 实现流程1. 设置数据源标识2. 开始数…

Godot3D学习笔记1——界面布局简介

创建完成项目之后可以看到如下界面&#xff1a; Godot引擎也是场景式编程&#xff0c;这里的一个场景相当于一个关卡。 这里我们点击左侧“3D场景”按钮创建一个3D场景&#xff0c;现在在中间的画面中会出现一个球。在左侧节点视图中选中“Node3D”&#xff0c;右键创建子节点…

医院手术室麻醉信息管理系统源码 自动生成麻醉的各种医疗文书(手术风险评估表、手术安全核查表)

目录 手术风险评估表 一、患者基本信息 二、既往病史 三、手术相关信息 四、风险评估因素 五、风险评估结果 手术安全核查表 一、患者身份与手术信息核对 二、术前准备核查 三、手术团队与职责确认 四、手术物品与设备核查 五、术中关键步骤核查 六、术后核查 七…

STM32中断实现旋转编码器计数

系列文章目录 STM32单片机系列专栏 C语言理论和实践总结专栏 文章目录 1. 旋转编码器 2. 中断代码编写 2.1 Interrupt.c 2.2 Interrupt.h 2.3 完整工程文件 1. 旋转编码器 旋转编码器主要用于测量轴的旋转位置、速度或者是角度的变化&#xff0c;它能够将转动的角度或者…

新兴游戏引擎Godot vs. 主流游戏引擎Unity和虚幻引擎,以及版本控制工具Perforce Helix Core如何与其高效集成

游戏行业出现一个新生事物——Godot&#xff0c;一个免费且开源的2D和3D游戏引擎。曾经由Unity和虚幻引擎&#xff08;Unreal Engine&#xff09;等巨头主导的领域如今迎来了竞争对手。随着最近“独特”定价模式的变化&#xff0c;越来越多的独立开发者和小型开发团队倾向于选择…

【数据结构】反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 Definition for singly-linked list.struct ListNode {int val;struct ListNode *next;};typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {i…

JavaEE初阶——文件操作和IO

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享文件操作及IO的内容 如果有不足的或者错误的请您指出! 目录 *1.解释IO**2.关于文件的基本知识*2.1路径2.1.1绝对路径2.1.2相对路径 2.2文件分类 *3.通过Java代码操作文件*3.1针…

Arcpy入门笔记(三):数据属性的读取

Arcpy入门笔记&#xff08;三&#xff09;&#xff1a;数据属性的获取 文章目录 Arcpy入门笔记&#xff08;三&#xff09;&#xff1a;数据属性的获取常用的属性Describe对象属性&#xff08;部分&#xff09;数据集属性&#xff08;部分&#xff09;表属性&#xff08;部分&a…

python 脚本头(PyCharm+python头部信息、py头部信息、python头信息、py头信息、py文件头部)

文章目录 参考PyCharm设置脚本头头部信息 参考 https://developer.aliyun.com/article/1166544 https://blog.csdn.net/Dontla/article/details/131743495 https://blog.csdn.net/dongyouyuan/article/details/54408413 PyCharm设置脚本头 打开pycharm&#xff0c;点击file–…

5G赋能 扬帆未来|AGV无人仓成黑科技“顶流”

AGV 近年来&#xff0c;无人化这个概念逐渐被运用到了社会中的各个行业&#xff0c;而跟物流有关的就有无人分拣机器人、无人驾驶卡车、和无人叉车&#xff0c;越来越多的新装备也开始投入到实际运用中。 仓储管理在物流管理中占据着核心地位。传统的仓储管理中存在诸多的弊端…

怎样选购内衣洗衣机?2024年5款最新推荐机型种草

随着科技的不断发展&#xff0c;内衣洗衣机成为了家家户户必备的小家电之一&#xff0c;为我们的生活带来了极大的便利。但面对市场上众多的内衣洗衣机品牌&#xff0c;如何选择一款质量好的内衣洗衣机呢&#xff1f;本文将为您推荐5款最新的内衣洗衣机品牌&#xff0c;从而帮助…