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

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...
from1,2...
where 过滤条件;--语法2 (显式内连接)
select 字段1,字段2...
from1 inner join2 ...
on 过滤条件;

e.g 有两张表:user表和city表

user表:

idname
001小红
002小蓝
003小白
004小黄
005小绿
006小青

city表:

idaddress
001深圳
002广州
003北京
004上海
005汕头
006潮州
007揭阳

重合的部分就叫做内连接查询,例如下面过滤条件指的就是当两个表的id相等时才符合连接查询的条件

  • 隐式内连接

    select user.name,city.address
    from user,city
    where user.id = city.id;
    

    结果为:

    nameaddress
    小红深圳
    小蓝广州
    小白北京
    小黄上海
    效率汕头
    小青潮州
  • 显式内连接

    select user.name,city.address
    from user inner join city
    on user.id = city.id;
    

4.12 外连接查询

外连接查询分为左外连接查询和右外连接查询

语法

--左外连接
select 字段1,字段2..
from1 left outer join2 on 过滤条件;--右外连接
select 字段1,字段2..
from1 right outer join2 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;

结果为:

nameaddress
小红深圳
小蓝广州
小白北京
小黄上海
效率汕头
小青潮州
NULL揭阳

简单点说就是求交集之后并上city的其他数据,没有匹配的为NULL

右外连接结果:

select user.name,city.address
from city right outer join user
on user.id = city.id;

结果为:

nameaddress
小红深圳
小蓝广州
小白北京
小黄上海
效率汕头
小青潮州

简单点说就是求交集之后并上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 库名;--创建库时判断库是否存在&#xff0c;不存在则创建 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状态&#xff1a; 在Kubernetes中&#xff0c;当节点资源紧张时&#xff0c;Kubelet可能会驱逐节点上的一些Pods以释放资源。当这种情况发生时&#xff0c;Pod的状态会被设置为"Evicted"。 1.pod的探针 1.就绪性探针&#xff1a; 一般用于探测容器…...

7. 数据结构—二叉树(链式存储)

1. 内容 包括链式存储二叉树的 递归与非递归实现的先序、中序以及后序遍历、层序遍历、创建二叉树、计算深度、总节点数。 2. 实现代码 注意&#xff1a;只是伪代码&#xff0c;如果想要运行的话在细节方面需要自己修正&#xff0c;栈和队列的方法实现需要引进或者使用其C自…...

AScript 的UI asui模板的导入

两种方案&#xff1a; 第一种直接在web端&#xff0c;右击UI文件夹 第二种在pycharm&#xff0c;也是右击UI文件夹 调用UI&#xff0c;在init类中直接调用即可...

Linux shell编程学习笔记75:sed命令——沧海横流任我行(下)

0 前言 在 Linux shell编程学习笔记73&#xff1a;sed命令——沧海横流任我行&#xff08;上&#xff09;-CSDN博客文章浏览阅读684次&#xff0c;点赞32次&#xff0c;收藏24次。在大数据时代&#xff0c;我们要面对大量数据&#xff0c;有时需要对数据进行替换、删除、新增、…...

探索Scratch中的物理世界:碰撞与重力的编程之旅

标题&#xff1a;探索Scratch中的物理世界&#xff1a;碰撞与重力的编程之旅 Scratch是一款由麻省理工学院媒体实验室开发的编程教育工具&#xff0c;它以图形化编程界面为特色&#xff0c;让初学者能够轻松地学习编程基础。Scratch不仅支持基本的编程逻辑&#xff0c;如循环、…...

大模型重塑就医体验:医联MedGPT助力健康中国建设

来源&#xff1a;新华网 2024 08/22 11:24:15 【责任编辑:吴起龙】 随着“百模大战”的加速推进&#xff0c;AI大模型的应用逐渐成为各行业关注的焦点。在这一背景下&#xff0c;医疗行业也迎来了AI技术的深度渗透。自2023年起&#xff0c;百度、科大讯飞、百川智能、商汤…...

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); 参数&#xff1a;socket的fd; 保存数据的空间地址 &#xff1b; 空间大小&#xff1b; 默认接收方式&#xff08;默认阻塞&#xf…...

分页查询面试记录和面试详情

文章目录 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中的同义词&#xff08;SYNONYM&#xff09;是一种数据库对象&#xff0c;它为其他数据库对象&#xff08;如表、视图、序列、存储过程、函数等&#xff09;提供了一个别名。这个别名可以在SQL语句中代替原始对象的名称&#xff0c;从而简化查询和引用&#xff0c;提高数…...

实验11-1-8 查找子串

本题要求实现一个字符串查找的简单函数。 函数接口定义&#xff1a; char *search( char *s, char *t );函数search在字符串s中查找子串t&#xff0c;返回子串t在s中的首地址。若未找到&#xff0c;则返回NULL。 输入样例1&#xff1a; The C Programming Language ram输出样…...

Git存储库添加空目录-添加占位文件

Git本身并不会跟踪和管理空目录&#xff0c;它只会记录和管理文件的变化。因此&#xff0c;在操作空目录时&#xff0c;我们需要借助一些技巧来实现我们的需求。通过添加一个空的.gitignore或.gitkeep文件或添加一个占位文件&#xff0c;我们可以欺骗Git&#xff0c;并使其将空…...

基于x86 平台opencv的图像采集和seetaface6的人脸识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸识别功能,opencv通过读取本地图像,将采集的本地图像送给seetaface6的人脸识别模块从而实现人脸识…...

Git 的基本使用

1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制&#xff0c;就必须先创建⼀个仓库出来&#xff0c;例如下面代码创建了gitcode_linux的文件夹&#xff0c;之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c…...

如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS

我认为&#xff0c;现在自动化任务越多&#xff0c;越能体现它们的价值&#xff0c;因此挑战也变得更加明显和困难。例如&#xff0c;Cloudflare 目前提供了强有力的安全措施来保护网站免受所有形式的自动化工具的侵扰。 但对于从事自动化项目&#xff08;如网络爬虫、数据提取…...

笔记redis

Redis 介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是用C语言开发的一个基于内存的键值对数据库 所有数据都在内存中&#xff0c;访问速度非常快&#xff1a;读的速度是110000次/s&#xff0c;写的速度是81000次/s适合存储热点数据&#xff08;商品、新闻资…...

Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱

Django 后端架构开发&#xff1a;手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱接入 &#x1f31f; 手机短信与邮箱短信验证码的应用场景 在现代应用中&#xff0c;短信和邮箱验证码是用户验证和安全管理的关键组成部分。它们广泛应用于注册、登录、找回密码等场景&#xf…...

RAID 方案比较

RAID&#xff08;Redundant Array of Independent Disks&#xff09;技术用于将多个磁盘驱动器组合成一个逻辑单元&#xff0c;以提高性能、可靠性或两者兼顾。以下是常见 RAID 级别的比较&#xff1a; RAID 0&#xff08;条带化&#xff09; 磁盘数量&#xff1a;最少 2 块可…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...