MySql中常用的sql语句大全(工作常用篇)
1. DDL
1.1 操作数据库
--创建库
create database 库名;--创建库时判断库是否存在,不存在则创建
create database if no exists 库名;--查看所有数据库
show databases;--使用指定数据库
use 库名;--查看当前指定数据库包含的数据表
show tables;--查看数据库的结构定义信息
show create database 库名;--删除数据库
drop database 库名;--修改数据库的字符集为utf8
alter database 库名 character set utf8;
1.2 操作数据表
--创建表
create table 表名(字段1 类型1,字段2 类型2,字段3 类型3,......
);--查看表结构
desc 表名;--查看创建表的SQL语句
show create table 表名;--修改表名
alter table 表名 rename to 新的表名;--添加一个新的字段
alter table 表名 add 字段;字符类型;--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;--修改字段类型(注意类型修改前后数据是否兼容)
alter table 表名 modify column 字段名 新的字段类型;--删除一个字段
alter table 表名 drop 字段名;--删除表
drop table 表名;--删除表时判断表是否存在,若存在则删除
drop table 表名 if exists 表名;
2. DML
2.1 插入数据(insert into)
-
全字段插入数据(有两种方法,推荐第一种方法)
--有多少个字段,就要写多少个值,且是一一对应的 insert into 表名 values(值1,值2...值n);--此方法要写出所有字段,并一一对应插入值 insert into 表名(字段1,字段2...字段n) values(值1,值2...值n); -
部分字段插入数据
--部分字段插入数据,只写需要插入数据的字段名 insert into 表名(字段1,字段2...) values (值1,值2...);
2.2 删除数据(delete / truncate)
--删除表中所有数据
delete from 表名;--删除表中指定的数据
delete from 表名 where 字段 = 值;--删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)
truncate table 表名;
2.3 修改数据(update)
--无限制条件的修改,会修改整张表
update 表名 set 字段 = 值;--有限制条件的修改,只修改特定记录
update 表名 set 字段 = 值 where 条件(字段 = 值);
3. DCL
3.1 管理用户
-
添加用户
create user '用户名'@'主机名' identified by '密码'; -
删除用户
drop user '用户名'@'主机名';
3.2 权限管理
-
查询权限
show grants for '用户名'@'主机名'; -
授予权限
--语法 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';--授予faker用户所有权限,在任意数据库任意表上 grant all on *.* to 'faker'@'localhost'; -
撤销权限
--语法 revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';--撤销faker用户对test数据库中city数据表的权限 revoke update on test.city from 'faker'@'localhost';
4. DQL
4.1 无条件查询
--查询表中所有数据
select * from 表名;
4.2 查询在…到…之间(between and / && / and)
--查询users表中年龄在18~25岁之间的记录
--方式1 between..and..
select * from users where age between 18 and 25;--方式2 &&
select * from users where age>=18 && age<=25;--方式3 and
select * from users where age>=18 and age<=25;
4.3 指定条件查询
-
单个条件(or / in)
--查询users表中年龄为18,20,25岁的记录 --方式1 or select * from users where age=18 or age=20 or age=25;--方式2 in select * from users where age in (18,20,25); -
多个条件(and)
--查询users表中年龄为23,性别为女,名字为小楠的记录 select * from users where age=23 and gender='女' and name='小楠';
4.4 查询不为NULL值(is not null),为NULL值(is null)
--查询users表中序号不为空的记录
select * from users where id is not null;--查询user表中序号为空的记录
select * form users where id is null;
4.5 模糊查询(like)
_:单个任意字符
%:多个任意个字符
--查询users表中姓名第一个字为李的记录
select * from users where name = '李%';--查询users表中姓名第二个字为李的记录
select * from users where name = '_李%';--查询users表中姓名含有李字的记录
select * from users where name = '%李%';--查询users表中姓名是两个字的记录
select * from users where name = '__';
4.6 去除重复记录查询(distinct)
--查询users表中所在城市不相同的记录
--select distinct 字段 from 表名;select distinct city from users;
4.7 排序查询(order by)
-
单个条件
--查询users表中记录,并以年龄升序排序 select * from users order by age;--查询users表中记录,并以年龄降序排序 select * from users order by age desc; -
多个条件
注意:多个排序条件时,只有当第一个排序条件值一样,才会执行第二个排序条件,以此类推
--查询users表中记录,并体育成绩降序,年龄降序 select * from users order by PE desc, age desc;
4.8 聚合函数
-
计算和(sum)
select sum(字段) (as sumvalue) from 表名; -
计算最大值(max)
select max(字段) (as maxvalue) from 表名; -
计算最小值(min)
select min(字段) (as minvalue) from 表名; -
计算平均值(avg)
select avg(字段) (as avgvalue) from 表名; -
计算个数(count)
select count(字段)(as totalcout) from 表名;
4.9 分组查询(group by)
--查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分
select gender,avg(PE) from users group by gender;--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数
select gender,avg(PE),count(id) from users group by gender;--查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组
select gender,avg(PE),count(id) from users where PE>60 group by gender;--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人
select gender,avg(PE),count(id) from users where PE>60 group by gender having count(id)>2;
4.10 分页查询(limit)
注意:第一条记录的索引是0
--查询users表中的前10行条记录
select * from users limit 10;--查询users表中第2~11条记录 (从第2条记录开始累加10条记录)
select * from users limit 1,10;--查询users表中第5~17条记录 (从第5条记录开始累加13条记录)
select * from users limit 4,16;
4.11 内连接查询
如果查询数据的来源来自多张表,则必须对这些表进行连接查询,连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理,连接查询分为内连接和外连接
语法格式
--语法1 (隐式内连接)
select 字段1,字段2...
from 表1,表2...
where 过滤条件;--语法2 (显式内连接)
select 字段1,字段2...
from 表1 inner join 表2 ...
on 过滤条件;
e.g 有两张表:user表和city表
user表:
| id | name |
|---|---|
| 001 | 小红 |
| 002 | 小蓝 |
| 003 | 小白 |
| 004 | 小黄 |
| 005 | 小绿 |
| 006 | 小青 |
city表:
| id | address |
|---|---|
| 001 | 深圳 |
| 002 | 广州 |
| 003 | 北京 |
| 004 | 上海 |
| 005 | 汕头 |
| 006 | 潮州 |
| 007 | 揭阳 |
重合的部分就叫做内连接查询,例如下面过滤条件指的就是当两个表的id相等时才符合连接查询的条件
-
隐式内连接
select user.name,city.address from user,city where user.id = city.id;结果为:
name address 小红 深圳 小蓝 广州 小白 北京 小黄 上海 效率 汕头 小青 潮州 -
显式内连接
select user.name,city.address from user inner join city on user.id = city.id;
4.12 外连接查询
外连接查询分为左外连接查询和右外连接查询
语法
--左外连接
select 字段1,字段2..
from 表1 left outer join 表2 on 过滤条件;--右外连接
select 字段1,字段2..
from 表1 right outer join 表2 on 过滤条件;
左外连接和右外连接有一点区别:
左外连接:是表1和表2的交集再并上表1的其他数据
右外连接:是表1和表2的交集再并上表2的其他数据
e.g: 上面两张表的左外链接结果
select user.name,city.address
from city left outer join user
on user.id = city.id;
结果为:
| name | address |
|---|---|
| 小红 | 深圳 |
| 小蓝 | 广州 |
| 小白 | 北京 |
| 小黄 | 上海 |
| 效率 | 汕头 |
| 小青 | 潮州 |
| NULL | 揭阳 |
简单点说就是求交集之后并上city的其他数据,没有匹配的为NULL
右外连接结果:
select user.name,city.address
from city right outer join user
on user.id = city.id;
结果为:
| name | address |
|---|---|
| 小红 | 深圳 |
| 小蓝 | 广州 |
| 小白 | 北京 |
| 小黄 | 上海 |
| 效率 | 汕头 |
| 小青 | 潮州 |
简单点说就是求交集之后并上user的其他数据,没有匹配的为NULL
4.13 子查询
当我们进⾏语句查询的时候,总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏,就是说A 查询语句需要依赖B 查询语句的查询结果,B 查询就是⼦查询,A 查询语句就是主查询,⼀个SQL语句可以包含多个⼦查询。
语法
select username
from user
where age =(select avg(age)from userInfo
)
例如:要查询工资大于10号部门的平均工资的非10号部门的员工信息
查询10号部门的平均工资
select avg(sal) from emp where deptno = 10;
那么工资大于10号部门的平均工资的非10号部门的员工信息为
select * from emp
where deptno!=10 and sal>(select avg(sal)from empwhere deptno = 10;
)
一些子查询的实例
查询在2022年8月9日销售的产品信息
select *
from dbo.product
where pno in (select pno from dbo.prdwhere odate = '2022/'
)
相关文章:
MySql中常用的sql语句大全(工作常用篇)
1. DDL 1.1 操作数据库 --创建库 create database 库名;--创建库时判断库是否存在,不存在则创建 create database if no exists 库名;--查看所有数据库 show databases;--使用指定数据库 use 库名;--查看当前指定数据库包含的数据表 show tables;--查看数据库的结…...
React+Vis.js(03):vis.js设置节点形状
文章目录 Vis支持的形状类型代码实现完整代码实现效果Vis支持的形状类型 circle(圆形)box(盒子)dot(点)star(五角星)triangle(三角形)ellipse(椭圆形)triangleDown(倒三角形)diamond(菱形)代码实现 通过shape属性来定义每个节点的形状 const nodes = new vis…...
Pod和Deployment
一、pod Evicted状态: 在Kubernetes中,当节点资源紧张时,Kubelet可能会驱逐节点上的一些Pods以释放资源。当这种情况发生时,Pod的状态会被设置为"Evicted"。 1.pod的探针 1.就绪性探针: 一般用于探测容器…...
7. 数据结构—二叉树(链式存储)
1. 内容 包括链式存储二叉树的 递归与非递归实现的先序、中序以及后序遍历、层序遍历、创建二叉树、计算深度、总节点数。 2. 实现代码 注意:只是伪代码,如果想要运行的话在细节方面需要自己修正,栈和队列的方法实现需要引进或者使用其C自…...
AScript 的UI asui模板的导入
两种方案: 第一种直接在web端,右击UI文件夹 第二种在pycharm,也是右击UI文件夹 调用UI,在init类中直接调用即可...
Linux shell编程学习笔记75:sed命令——沧海横流任我行(下)
0 前言 在 Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)-CSDN博客文章浏览阅读684次,点赞32次,收藏24次。在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、…...
探索Scratch中的物理世界:碰撞与重力的编程之旅
标题:探索Scratch中的物理世界:碰撞与重力的编程之旅 Scratch是一款由麻省理工学院媒体实验室开发的编程教育工具,它以图形化编程界面为特色,让初学者能够轻松地学习编程基础。Scratch不仅支持基本的编程逻辑,如循环、…...
大模型重塑就医体验:医联MedGPT助力健康中国建设
来源:新华网 2024 08/22 11:24:15 【责任编辑:吴起龙】 随着“百模大战”的加速推进,AI大模型的应用逐渐成为各行业关注的焦点。在这一背景下,医疗行业也迎来了AI技术的深度渗透。自2023年起,百度、科大讯飞、百川智能、商汤…...
TOMCAT全解
目录 一 、WEB技术简介 HTTP协议 B/S 结构 前端三大核心技术简介 HTML CSS JavaScript 二 、WEB框架 web资源和访问 后台应用架构 三、tomacat的介绍 四、tomcat的部署 tomcat的反向代理 tomcat的负载均衡 memcached的安装与启动 tomcat的session会话保持 一 、WE…...
UDP+TCP
一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数:socket的fd; 保存数据的空间地址 ; 空间大小; 默认接收方式(默认阻塞…...
分页查询面试记录和面试详情
文章目录 1.分页查询面试记录1.req和vo1.InterviewHistoryReq.java2.InterviewHistoryVO.java 2.InterviewController.java3.service1.InterviewHistoryService.java2.InterviewHistoryServiceImpl.java 4.测试 2.查询面试详情1.InterviewQuestionHistoryVO.java2.InterviewCon…...
Oracle 同义词SYNONYM 的实战使用
Oracle中的同义词(SYNONYM)是一种数据库对象,它为其他数据库对象(如表、视图、序列、存储过程、函数等)提供了一个别名。这个别名可以在SQL语句中代替原始对象的名称,从而简化查询和引用,提高数…...
实验11-1-8 查找子串
本题要求实现一个字符串查找的简单函数。 函数接口定义: char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。 输入样例1: The C Programming Language ram输出样…...
Git存储库添加空目录-添加占位文件
Git本身并不会跟踪和管理空目录,它只会记录和管理文件的变化。因此,在操作空目录时,我们需要借助一些技巧来实现我们的需求。通过添加一个空的.gitignore或.gitkeep文件或添加一个占位文件,我们可以欺骗Git,并使其将空…...
基于x86 平台opencv的图像采集和seetaface6的人脸识别功能
目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸识别功能,opencv通过读取本地图像,将采集的本地图像送给seetaface6的人脸识别模块从而实现人脸识…...
Git 的基本使用
1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来,例如下面代码创建了gitcode_linux的文件夹,之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init ,…...
如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS
我认为,现在自动化任务越多,越能体现它们的价值,因此挑战也变得更加明显和困难。例如,Cloudflare 目前提供了强有力的安全措施来保护网站免受所有形式的自动化工具的侵扰。 但对于从事自动化项目(如网络爬虫、数据提取…...
笔记redis
Redis 介绍 Redis(Remote Dictionary Server)是用C语言开发的一个基于内存的键值对数据库 所有数据都在内存中,访问速度非常快:读的速度是110000次/s,写的速度是81000次/s适合存储热点数据(商品、新闻资…...
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱接入 🌟 手机短信与邮箱短信验证码的应用场景 在现代应用中,短信和邮箱验证码是用户验证和安全管理的关键组成部分。它们广泛应用于注册、登录、找回密码等场景…...
RAID 方案比较
RAID(Redundant Array of Independent Disks)技术用于将多个磁盘驱动器组合成一个逻辑单元,以提高性能、可靠性或两者兼顾。以下是常见 RAID 级别的比较: RAID 0(条带化) 磁盘数量:最少 2 块可…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
