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模式,适用于等值判断
/*casewhen ... then ...when ... then ...else ...
end*/
select salary 原始工资,department_id
case department_idwhen 30 then salary*1.1when 40 then salary*1.2when 50 then salary*1.3else salary*1end as 加权工资from employees;#当department_id=30时,工资*1.1倍,为40时,工资*1.2倍,为50时,工资*1.3倍,否者维持原技术不变,最终得到加权工资,显示原始工资,depart_id,加权工资三列。
#2.类似多重if模式,适用于区间判断
/*casewhen 条件 then 显示的结果when 条件 then 显示的结果....else*/
select salary,
casewhen 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.mzph.cn/news/828987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vite和webpacke的常规配置

文章目录 1、vite和webpacke的区分2、vite的常规配置介绍主要部分介绍vite基本配置示例 3、webpacke的常规配置介绍主要部分介绍Webpack 基本配置示例 1、vite和webpacke的区分 相同点&#xff1a; 都是构建工具&#xff0c;用于资源打包 &#xff1b; 都有应用到摇树原理 tre…

[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录 核心总结符号定义第一套&#xff0c;快速简单讲清采样方法继续分析&#xff0c;待定系数法求解图示理解关于参数sigma 本文是观看以下视频的笔记&#xff0c;强烈推荐观看最后的图示理解&#xff1a; https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from333.788 论…

路由重分布的概念与配置

路由重分布的概念 l 路由重分布是指连接不同路由域&#xff08;自治系统&#xff09;的边界路由器&#xff0c;它在路由协议之间交换和通告路由信息 从一种协议&#xff08;含静态/直连路由&#xff09;到另一种协议 同一种协议的多个实例 路由重分布的背景 网络出口位置…

时间序列预测:基于PyTorch框架的循环神经网络(RNN)实现销量预测

之前随手一写&#xff0c;没想到做预测的同学还挺多&#xff0c;但是之前那个效果并不好&#xff0c;于是在之前的基础上重新修改完善&#xff0c;到了现在这一步才感觉预测算是初步能应用。 上文地址&#xff1a;LSTM模型预测时间序列&#xff1a;根据历史销量数据预测商品未…

AI预测福彩3D第9套算法实战化测试第4弹2024年4月26日第4次测试

今天继续进行新算法的测试&#xff0c;今天是第4次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月26日福彩3D预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;4、5、7、8、3、9 十位&#xff1a;6、9、5、4、1、2 个位&#xff1a;7、8、5、…

光明的未来:光分路器在现代通信中的角色

光分路器又叫分光器&#xff0c;是一种集成波导光功率分配器件&#xff0c;作用是实现光信号的分路。例如&#xff0c;一个1x4光分路器可以将一路输入光信号等比分成四路输出光信号&#xff0c;并在四个不同的通道内进行传输。如今&#xff0c;光分路器广泛应用在无源光网络&am…

从 RAG 1.0到RAG 2.0,这次做对了什么?

RAG是目前最流行的补充生成式人工智能模型的方式&#xff0c;最近 RAG 的开创者提出了新的上下文语言模型 (CLM) &#xff0c;他们称之为“ RAG 2.0 ”。 今天让我们一块来从RAG目前的原理和缺点出发&#xff0c;看看他们所提出的RAG2.0是否能够为行业带来新的希望。 LLM的时间…

提交链码-编辑前后端,调用链码功能

一 . 链码介绍 1.什么链码&#xff1f; • 链码是一段用 Go、Node.js 或者 Java 实现了规定接口的程序。链码在安全的Docker容器中运行&#xff0c; 与背书节点的进程隔离。通过应用程序提交的交易&#xff0c;链码初始化和管理账本状态。• 链码通常处理网络成员协商达成的业…

若依文件下载

后端自带工具controller package com.ruoyi.web.controller.common;import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.Logger…

docker常用基本命令

把jar包和 dockerfile文件放到同一目录下#构建Docker镜像 注意后面的 . 不能省略 docker build -t your-image-name .#运行并创建一个容器 docker run -d -p 8080:8080 --name container_name your-image-name# 停止容器 767fce4cb990 容器ID (容器名也可以) docker stop 767f…

HarmonyOS开发案例:【rating组件】

介绍 将引导开发者使用rating组件实现星级打分功能。 相关概念 [rating组件]&#xff1a;评分条&#xff0c;可根据用户判断进行打分。 环境搭建 软件要求 [DevEco Studio]版本&#xff1a;DevEco Studio 3.1 Release及以上版本。OpenHarmony SDK版本&#xff1a;API vers…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能&#xff01; 请访问 https://runes.scrypt.io/ 或点击阅读原文体验&#xff01; 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约&#xff0c;但是用原生Script编…

宁盾LDAP统一用户认证与单点登录:构建高效安全的企业身份认证

在信息化时代&#xff0c;企业面临着众多的应用系统和数据资源&#xff0c;如何有效地管理和保护这些资源&#xff0c;确保信息安全和高效利用&#xff0c;成为了企业信息化建设的核心问题。LDAP统一用户认证和单点登录&#xff08;SSO&#xff09;作为一种高效、安全的身份验证…

Quarto Dashboards 教程 2:Dashboard Layout

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度&#xff0c;分享官方文档的中文教程。软件可能随时更新&#xff0c;建议配合官方文档一起阅读。推荐先按顺序阅读往期内容&#xff1a; 1.quarto 教程 1&#xff1a;Hello, Quarto 2.qu…

srpingMVC基本使用

文章目录 1. springMVC基本功能(1) maven坐标导入(2) 编写表现层(3) springMVC配置类编写(4) 部署tomcat访问 2. 各种请求方法get请求post请求put请求delete请求请求参数提取 3. 请求参数接收(1) param参数接受封装到对象中 (2) 路劲参数接收集合接受时间类型接收json参数接收m…

1.C++入门(上)

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字&#xff0c;C语言有32个关键字&#xff0c;存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量&#xff0c;函数和类的名称都存在于全…

java 词法分析练习

import parser.Parser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arrays.asList("int","String…

鸿蒙APP开发页面组件之间的属性关系

我们将对于多页面以及更多有趣的功能展开叙述&#xff0c;这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式&#xff08;UiAbility&#xff09;&#xff0c;样式的书写、状态管理以及动画等方面进行探讨 页面之间…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①&#xff1a;计算协方差矩阵2.6 特…