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 块可…...

零成本搭建个人 APP 和小程序后台
前言 前面也说了,通过 GitHub PagesGitHub Actions 只是解决了动态数据展示,但是要零成本得完成将用户信息存储下来,并实现数据交互呢? 我开始是想用云文档,种种原因,我还是希望有个自己能二次修改的后台…...

LCP 633 平方数之和 [leetcode - 8]
最近是在研究双指针啊,leetcode刷的题都是这方面的。都记录在最近的文章里,大家有兴趣可以去我主页看看 LCP633 平方数之和 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入&…...

c语言试题及答案
1. 一个C程序的组成部分可以是( )。 A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数 C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序 2. 一个C程序的执行是从( )。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函…...

python实现链表
什么是链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接最终串联成一个链表。 python实现一个简单链表 我们可以用python实现一个超级简单的链表 class node:# 初始化数据def __init_…...

Linux Shell 编程基础入门(一)
😀前言 本篇博文是关于自动化工具Shell 编程的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...

大白话讲微服务的灾难性雪崩效应
讲在前面,为什么微服务需要有熔断等策略呢?今天我们用大白话来讲讲微服务的灾难性雪崩效应,熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应? 假设我们有两个访问量比较大的服务A和B,这两个服务分别依…...

配置 K3s 访问私有镜像仓库
1.修改 K3s 配置文件 1)对于较新的 K3s 版本,你可以通过编辑 K3s 的配置文件来指定镜像仓库。编辑 /etc/rancher/k3s/config.yaml 文件(如果不存在则需要创建),添加或修改以下配置: # /etc/rancher/k3s/config.yaml …...

数学建模之数据分析【七】:对Pandas DataFrame 进行切片
文章目录 一、切片简介二、创建Pandas数据框三、使用iloc进行切片3.1 对行进行切片3.2 对列进行切片3.3 Dataframe选中特定单元格 四、使用loc创建切片4.1 使用Python对Dataframe中的行进行切片4.2 指定单元格 五、在Python中使用布尔条件六、结论 对 Pandas DataFrames 进行切…...

删除 Docker 容器的日志文件
删除 Docker 容器的日志文件可以帮助释放磁盘空间。以下是步骤: 1、查找日志文件路径: Docker 容器的日志通常存储在 /var/lib/docker/containers/<container_id>/ 目录下。日志文件通常名为 container_id-json.log。 通过以下命令找到日志文件的位置: docker ins…...

DevOps入门(上)
1: DevOps概念 DevOps: Development 和 Operations 的组合 DevOps 看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。 突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使…...