MySQL语句大总结

news2025/1/16 6:03:53

    • 基础语法
    • 数据库约束
    • 复杂语法
      • 1:聚合查询(所谓聚合计算聚合函数的结果)
      • 2:联合查询
      • 什么是内连接;什么是外连接?
      • 3:子查询(套娃,慎用)
      • 4:合并查询

基础语法

建库
create database liao;
create database if not exists liao charset utf8;
不设置;默认是拉丁文;不支持中文

create database if not exists charset utf8;
查库
show databases;

选库
use liao;

删库
drop database liao;

建表
create table tablename(ziduan1 varchar , ziduan2 int);

create table if not exists tablename( ziduan1 varchar(20), ziduan2 int);
查表
show tables

查表结构
desc tablename;

删表
drop table tablename

改表(问chatgpt)
alrer table tablename modify coumn password varchar(65)

插表数据
insert into tablename values(zhangsan,19),(lisi,18)
insert into tablename (ziduan2) values(19);
insert into tablename (ziduan1,ziduan2) values(wangwu,19);
insert into tablename1 select *from tablename2; 把查询的结果插入到另一个表中;得要求列数量和类型要匹配

查表数据
select *from tablename;
select ziduan1,ziduan2 from tablename;
select ziduan1,ziduan2+10 from tablename
select ziduan1 as newtablename from tablename
select distinct ziduan1 from tablename;对结果去重复

select *from tablename order by ziduan1;小到大;升序
select *from tablename order by ziduan1 desc;大到小;降序
select *from tablename order by ziduan1,ziduan2 desc;ziduan1也重复那么就用ziduan2进行降序排序

条件查询:条件放在表名的后面;这些条件同样能放到改和删除里
运算符
大于、小于、大于等于、小于等于;不必多言
where ziduan1<20;
等于 null不适合用;null=null =》null
<==> 这个用于null=null就安全
不等于
!=, <>
范围匹配
between 范围1 and 范围2 就是你的值是这个 【范围1】 -【范围2】
where ziduan1 between 60 and 100;

集合里匹配
where ziduan1 in(20,30,“123”,“456”);

是null吗
where ziduan1 is null;

是非空吗
where ziduan1 is not null

模糊匹配
where ziduan1=孙%;
1:孙% 只要是孙开头,无论几个字符都没问题。
2:%孙 以孙结尾的
3:%孙% 不管开头结尾,只要包含孙即可
4:_ 下划线匹配一个字符:
孙_%:孙开头,并且孙后面只有一个字符
孙_ _%:两个下划线代表孙后面两个字符
:肉夹馍的孙,前面一个字,后面一个字,中间夹着孙

注意:如果有别名的情况;where这里的条件不能用别名;因为是先执行条件,才看是否执行前面的表达式和别名

上面的还能搭配逻辑运算符:and、or、not。优先级就不去记了;有需要加括号呗。

限制查询数量:分页的时候能使用
select * from tablename limit n; 只能显示n个;如果超过n个具体显示哪n个?不确定
select *from tablename limit 5 offset 0; 从0的地方开始计数查5条
select *from tablename limit 0,5; 和上面等价;省略offset

各个部分的位置:select 需要查询的内容 from tablename 条件查询 限制查询 排序

改表数据
update tablename set ziduan2=22 where 1=1;

删表数据
delete from tablename where ziduan1=zhangsan

数据库约束

not null - 指示某列不能存储 NULL 值。(这一列必须得填)

unique - 保证某列的每行必须有唯一的值。(这列数据不能重复;会通过索引先查一下有没有重复再插入)

default -规定没有给列赋值时的默认值。
name varchar(20) default “太帅了”

primary key - (not null和 unique 的结合)。主键,非空且要唯一,例如身份证,学号;一个表主键只能有一个。
联合主键,把多个列放到一起作为共同主键;知道有这个东西
自增主键;作为主键的值(就是当我们指定id为主键,也就是id不为空也不重复,mysql自增主键会帮你生成符合的值);必须是数值型才能自增。id int primary key auto_increment。如果1-10你突然插入个101;下一个自增也会从101开始

foreign key - 多表关联,要求某个记录必须在另一个表里存在。
create table classid(id int primary key,name varchar(20)); 父表
create table student(id int primary key,name varchar(20),classID int,foreign key (classID) references classid(id)); 子表
学生表被关联的字段主不主键无所谓,主要是班级表的id要有主键。
第一个方面:我们得要判断插入的学生id是否在班级id出现,就需要提供索引查询(不然你默认情况要遍历表效率太低)
第二个方面:班级id主键没了,就说明他的班级都有重复的号,那我插入班级2,你有两个班级为2的号,我插入哪去;我不知道这个classID是谁的(子表引用的唯一性)
第三个方面:要想创建外键,要求父表对应的列得有primary key或者unique约束
为什么要约束:
父表对子表的约束力:插入(或修改update)的数据学生表里的classID得符合在班级表里id列存在。
子表对父表的约束力:当子表已经有创建数据的时候,你的父表或者父表的这列你是删除不了的。删库可以。其它就只能先删子表再删父表
不能两张表相互创建外键约束,因为你创建的时候得指定父表,两个都是子表,先创建的指定谁呢?
使用场景:
电商:商品表(id,名称,库存),订单表(订单数量id,商品id,购买时间); 订单表的商品id得在商品表存在
一个问题;当我要下架商品怎么办,商品表又不能删(外键约束父表)。
逻辑删除,做个标记,让其变无效。当我要重新上架的时候还能把这个标记改回来。

check - 保证列中的值符合指定的条件。(mysql5不支持,写了忽略掉)

约束组合使用:not null+unique=primary key;所以当按下面组合使用时;我们查询的表结构这列是PRI
create table tablename(id int not null unique,name varchar(20) not null unique);

复杂语法

1:聚合查询(所谓聚合计算聚合函数的结果)

针对列进行操作;我们之前的计数只是针对行进行操作;比如english+chinese
常见聚合函数
sum(求和):计算一列中所有值的总和。
avg(平均值):计算一列中所有值的平均值。
max(最大值):找到一列中的最大值。
min(最小值):找到一列中的最小值。
count(计数):计算一列中非空值的数量。
select count(ziduan1) from tablename;
select sum(ziduan2) from tablename;
select count(ziduan1),sum(ziduan2) from tablename;

聚合查询-分组查询
在聚合查询的时候把这个group by的列相同分为一组;然后进行聚合查询。
比如:
create table emp(
id int primary key auto_increment,
name varchar(20) not null,
role varchar(20) not null,
salary numeric(11,2)
);
insert into emp(name, role, salary) values
(‘马云’,‘服务员’, 1000.20),
(‘马化腾’,‘游戏陪玩’, 2000.99),
(‘孙悟空’,‘游戏角色’, 999.11),
(‘猪无能’,‘游戏角色’, 333.5),
(‘沙和尚’,‘游戏角色’, 700.33),
(‘隔壁老王’,‘董事长’, 12000.66);

select role,max(salary),min(salary),avg(salary) from emp group by role;

2:联合查询

select * from student ,class where studen.classId=class.classId; 可以直接写字段名即可;只是我们当前字段名重复了,只能这样子指定;这样写也是比较稳妥和可读。把两张表的信息都查在一起;项目里非常常用;我们选择需要的列查出来即可。

联合查询执行流程:
1:首先两张表
在这里插入图片描述
2:
在这里插入图片描述

3:把无意义去掉。这里有意义的全是他们的id是相同的(也就是班级对的上),这里筛选的条件where 就叫连接条件

联合查询另一种完成:
select *from tablename1 join tablename2 on studen.classId=class.classId;
这种写法有些区别;第一种的只能实现内连接,join on 内连接,外连接都能实现

什么是内连接;什么是外连接?

在这里插入图片描述
在这里插入图片描述

两者有啥区别吗?大多数情况下没区别;当表的数据是一 一对应就没有区别(就都是中间交集的一块);当不是一 一对应就有区别。
在这里插入图片描述
内连接:两种内连接查询的情况
在这里插入图片描述
外连接:
左外连接;前面加个left。会把左表的结果尽量列出来;哪部怕在右表中没有对应的记录,就使用 null填充
在这里插入图片描述

右外连接;前面加个right。会把右表的结果尽量列出来;哪部怕在左表中没有对应的记录,就使用 null填充
在这里插入图片描述
自连接:
自己和自己迪卡尔积,( 特殊问题的特殊处理手段,代价不小);可以把行转成列.sql无法行与行使用条件比较,只能列与列比较(但是有些需求就要这种效果)
比如:如下的表;同一个同学的两门成绩70.5和98.5怎么比较;好像还真没办法比较;我们之前都是行的字段进行比较。
在这里插入图片描述
进行自连接会产生大量无效数据;我们要条件筛选进行精简一下;两张表是一样的;我们取一个别名方便进行引用其中的字段。
select *from tablename1 as s1, tablename1 as s2 where s1.student_id=s2.student_id;
在这里插入图片描述

3:子查询(套娃,慎用)

把多个sql合成一个;比如一个查询的结果作为另一个查询的条件一部分

4:合并查询

比如把两个查询的结果集合并成一个;得这两个结果集的列相同才能合并
查询A union 查询B 这种写法两个查询的结果可以来自不同的表;只要查询的列匹配即可
union all两者差不多(union会去重复,把重复的只保留一份,其它的一样)

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

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

相关文章

如何使用 Hotshot 通过文字生成 GIF 动画

Hotshot 是一个基于人工智能的工具&#xff0c;可用于通过文字生成 GIF 动画。该工具使用最新的图像生成技术来创建逼真的动画&#xff0c;即使是复杂的文字描述也能做到。 hotshot访问地址 使用 Hotshot 生成 GIF 动画 要使用 Hotshot 生成 GIF 动画&#xff0c;您需要首先…

吃鸡高手亲授:玩转绝地求生,分享顶级游戏干货!

绝地求生&#xff08;PUBG&#xff09;自上线以来&#xff0c;成为了全球热门游戏。作为吃鸡行家&#xff0c;我将分享一些独家技巧和干货&#xff0c;帮助您提高游戏战斗力&#xff0c;享受顶级游戏作战体验&#xff01; 首先&#xff0c;让我们谈一谈战斗力升级。想要在吃鸡游…

卷积网络的发展历史-LeNet

简介 LeNet是CNN结构的开山鼻祖&#xff0c;第一次定义了卷积神经网络的结构。 LeNet模型包含了多个卷积层和池化层&#xff0c;以及最后的全连接层用于分类。其中&#xff0c;每个卷积层都包含了一个卷积操作和一个非线性激活函数&#xff0c;用于提取输入图像的特征。池化层…

FreeRTOS入门教程(队列详细使用示例)

文章目录 前言一、队列基本使用二、如何分辨数据源三、传输大块数据总结 前言 上篇文章我们已经讲解了队列的概念和队列相关的API函数&#xff0c;那么本篇文章的话就开始带大家来学习使用队列。 一、队列基本使用 这个例子将会创建三个任务&#xff0c;其中两个任务用来发送…

Netty(四)NIO-优化与源码

Netty优化与源码 1. 优化 1.1 扩展序列化算法 序列化&#xff0c;反序列化主要用于消息正文的转换。 序列化&#xff1a;将java对象转为要传输对象(byte[]或json&#xff0c;最终都是byte[]) 反序列化&#xff1a;将正文还原成java对象。 //java自带的序列化 // 反序列化 b…

互联网Java工程师面试题·Memcached 篇·第二弹

目录 10、memcached 如何实现冗余机制&#xff1f; 11、memcached 如何处理容错的&#xff1f; 12、如何将 memcached 中 item 批量导入导出&#xff1f; 13、如果缓存数据在导出导入之间过期了&#xff0c;您又怎么处理这些数据呢&#xff1f; 14、memcached 是如何做身份…

3. 安装lombok maven镜像设置

安装lombok & maven镜像设置 一、maven镜像设置 Maven:负责进行项目管理、依赖工具管理的 软件。 快捷解决方案&#xff1a; 1.方法一 直接配置系统默认的文件 各个人因为登录的用户名不同&#xff0c;所以目录名不同。 2.方法二 自定义本地仓库的位置 完成之后重新打…

混合优化算法(optimtool.hybrid)

import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.5.0混合优化算法&#xff08;optimtool.hybrid&#xff09; import optimtool.hybrid as oh oh.[方法名].[函数名]([目标函数], [参数表], [初始迭代点], [正则化参数], [邻近算子名…

【5G PHY】5G BWP(BandWidth Part)介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

1.Window10 JDK8安装与配置(更新版)

Window10 JDK8安装与配置(更新版) 1&#xff0c;JDK安装 版本知识 注意&#xff1a;安装目录绝对不能出现中文及特殊符号&#xff0c;不能以数字开头。一定要以管理员身份打开。 具体下载步骤可参考&#xff1a;Window10 JDK8安装与配置详细步骤 安装尽量不要到系统盘&…

如何一步步优化负载均衡策略

发展到一定阶段后&#xff0c;Web 应用程序就会增长到单服务器部署无法承受的地步。这时候企业要么提升可用性&#xff0c;要么提升可扩展性&#xff0c;甚至两者兼而有之。为此&#xff0c;他们会将应用程序部署在多台服务器上&#xff0c;并在服务器之前使用负载均衡器来分配…

C++设计模式-抽象工厂(Abstract Factory)

目录 C设计模式-抽象工厂&#xff08;Abstract Factory&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-抽象工厂&#xff08;Abstract Factory&#xff09; 一、意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们…

unity脚本_生命周期函数 c#

帧&#xff1a;fps 即每秒钟跑的游戏帧数 游戏的本质 是一个死循环 每一次循环处理游戏逻辑就会更新一次画面 之所以能看到画面在动 是因为切换画面的速度达到一定时人眼就认为画面时流畅的 一帧就是执行一次循环 人眼舒适放松时可视帧数 24帧/s 游戏卡顿的原因&#xff1a; …

C 语言的标识符,保留标识符,关键字

C99 和 C11 允许使用更长的标识符&#xff08;identifier&#xff09;&#xff0c;但是编译器只能识别前 63 个字符&#xff0c;对于外部标识符&#xff0c;只允许使用 31 个字符。 实际上&#xff0c;可以使用更长的字符&#xff0c;但是编译器会忽略超出部分的字符。 如果两…

Stack和quque

102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 如图&#xff1a;层序遍历即一层一层遍历&#xff0c;从左到右。 先遍历第一层&#xff0c;把第一层的节点放到队列里面&#xff0c;levesizeq.size()&#xff0c;即代表队列里面有多少个值。 然后现在把队里里…

笔试编程ACM模式JS(V8)、JS(Node)框架、输入输出初始化处理、常用方法、技巧

目录 考试注意事项 先审完题意&#xff0c;再动手 在本地编辑器&#xff08;有提示&#xff09; 简单题515min 通过率0%&#xff0c;有额外log 常见输入处理 str-> num arr&#xff1a;line.split( ).map(val>Number(val)) 初始化数组 new Array(length).fill(v…

windows terminal终端美化

1&#xff0c;安装Windows terminal 可以选择window商店安装或者GitHub安装&#xff0c;安装步骤省略。 2.oh my posh 安装 安装步骤可以选择window 商店或者GitHub安装&#xff0c;步骤省略 3.安装字体 nerd font[官网链接] 4.配置 oh my posh ####第一次要输入以下命…

视频号规则改动,不再支持拍单,传统无货源模式已行不通!

视频号小店批量铺货行不通了&#xff0c;大家好我是派大星&#xff0c;这两天视频号发布了一个公告&#xff0c; 核心信息呢就是10月7号&#xff0c;视频号小店&#xff0c;将无法直接查看消费者的详细下单信息&#xff0c;只能通过电子面单的形式&#xff0c;打单发货。每个店…

RDP协议流程详解(二)Basic Settings Exchange 阶段

RDP连接建立过程&#xff0c;在Connection Initiation后&#xff0c;RDP客户端和服务端将进行双方基础配置信息交换&#xff0c;也就是basic settings exchange阶段。在此阶段&#xff0c;将包含两条消息Client MCS Connect Initial PDU和Server MCS Connect Response PDU&…

vulnhub靶机doubletrouble

下载地址&#xff1a;doubletrouble: 1 ~ VulnHub 主机发现 arp-scan -l 端口扫描 nmap --min-rate 1000 -p- 192.168.21.151 端口服务扫描 nmap -sV -sT -O -p22,80 192.168.21.151 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.151 先去看看web页面 这里使用的是qdpm …