sql知识梳理(超全,超详细,自用)
目录
通识
查询的基本语法
数据库(database)操作
表(table)的操作
表中列的操作
索引操作
表中行的操作
insert into语句
update语句
删除语句
select语句
表与表之间的关系
连接查询
子查询
视图
数据备份与还原
事务安全
触发器
通识
1.SQL 对大小写不敏感:SELECT 与 select 是相同的
2.分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句,故在运行两条及以上SQL语句时需要在每条SQL语句末端添加分号。
3.SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
4.约束类型:主键,非空,唯一,默认值,外键等
5.数据类型:整数,小数,字符串,日期,枚举等
查询的基本语法
语句 | 备注 |
select | 投影数据表中的列,存储到一个结果集中 (distinct关键词用于返回唯一不同的值) |
from | |
where | 设置元组筛选条件,返回那些满足指定条件的记录 (运算符:=,<>,>,<,>=,<=,and,or,between,like,in,is,()) |
group by | |
having | |
order by | 对结果集按照一列或者多列进行排序 (asc升序(默认),desc降序) |
limit |
数据库(database)操作
#创建数据库:
create database 数据库名;
create database 数据库名 character set 字符集;#创建之后修改数据库编码
alter database 数据库名 character set 字符集;#查看所有的数据库:
show databases;#查看某个数据库的定义的信息:
show create database 数据库名;#删除数据库:
drop database 数据库名称;#切换数据库:
use 数据库名;#查看正使用的数据库
select database();
表(table)的操作
#创建表:
create table 表名(字段名 类型(长度) 约束,字段名 类型(长度) 约束
);#查看所有表:
show tables;#查看表的结构:
1) desc 表名;
2) show columns from 表名;#删除表:
drop table 表名;#修改表名
rename table 表名 to 新表名;#修改表达字符集:
alter table 表名 character set 字符集;
表中列的操作
#添加列
1)添加一个字段
alter table 表名 add 列名 类型约束 (after 某个字段);
2)添加多个字段
alter table 表名 add (列名1 类型约束1,列名2 类型约束2)#修改列的类型约束:
alter table 表名 modify 列名 类型约束#修改列名
alter table 表名 change 列名 类型约束#删除列
alter table 表名 drop 列名;
索引操作
#已存在的表#普通索引:
1)CREATE INDEX 索引名称 ON 表名(字段);
2)ALTER TABLE 表名 ADD INDEX 索引名称(字段); #唯一索引:
CREATE UNIQUE INDEX 索引名称 ON 表名(字段)#联合索引:
CREATE INDEX 索引名称 ON 表名(字段1,字段2...)#删除索引
DROP INDEX 索引名称 ON 表名;
表中行的操作
insert into语句
#第一种:不指定列名,插入的值要和列名一一对应 insert into table_name values (valuel1,valuel2,...);#第二种:指定列名,未被指定的列名值为空 insert into table_name(column1,column2,...) valuse (valuel1,valuel2,...);#IGNORE关键字会在发生主键冲突、唯一性冲突,直接忽略这条数据(不会报错)往下执行。 INSERT [IGNORE] INTO 表名 ......;#蠕虫复制:先从已用表中查出数据, 然后将查出的数据新增一遍 #可以迅速的让表中的数据膨胀到一定的数量级: 测试表的压力以及效率 Insert into 表名[(字段列表)] select 字段列表/* from 数据表名;
update语句
#更新数据 UPDATE [IGNORE] 表名 SET 字段1=值1, 字段2=值2, ...... [WHERE 条件1 ......] [ORDER BY 排列的列 desc/asc] [LIMIT ......]; #如果这里有limit关键字,那么后面只能跟一个参数,即表示取前多少条数据,#UPDATE语句中的外/内连接 UPDATE 表1 [空/left/right/full] JOIN 表2 SET 字段1=值1, ... WHERE 条件;
删除语句
#删除表数据,保留表的结构,数据库中该表还存在 DELETE [IGNORE] FROM 表名 [WHERE 条件1, 条件2, ...] [ORDER BY ...] [LIMIT ...];#完全删除表,包括表结构,数据库就查不到这个表了 drop table 表名#只能删除全表数据,会保留表结构,数据库中该表还存在 truncate table 表名
select语句
#查询数据 Select [DISTINCT] [字段别名/*] from 表名(多表连接) [where条件子句] [group by子句] [having子句] [order by子句] [limit 子句];
表与表之间的关系
一对一
一对多
多对多
连接查询
内连接(左右表相同部分的交集)
1)join select * from A join B on A.id = B.id 2) inner join select * from A inner join B on A.id = B.id 3)逗号的连表方式就是内连接 select * from A , B where A.id = B.id
外连接
如果右表有符合条件的记录就与左表连接。如果右表没有符合条件的记录,就用NULL与左表连接。
1) left/right join select * from A left join B on A.id = B.id 2) left/right outer join select * from A left outer join B on A.id = B.id
自然连接 natural join
基于具有相同名称的列自动执行连接操作
笛卡尔连接 cross join
返回两个表中所有可能的行组合
子查询
类别
相关子查询:select 和 where语句后的子查询(效率低,不推荐使用但可以使用)
不相关子查询:from 语句后的子查询(√)
关键字
视图
定义
视图是一个虚拟表。它基于一个或多个底层基表(物理存在的表)或其他视图的 SQL 查询结果。视图本身不存储数据,它只是一个存储起来的 SELECT 语句。
特性
- 虚拟性: 数据是动态生成的,每次查询视图时,数据库引擎都会执行其定义的 SQL 语句去获取最新的基表数据。
- 可更新性 (并非所有视图都可更新): 在某些条件下,可以通过视图对基表进行
INSERT
,UPDATE
,DELETE
操作。- 可嵌套: 视图可以基于其他视图定义(但要避免循环依赖)。视图 (
CREATE VIEW
)视表的操作
#创建视图 CREATE VIEW 视图名 AS 查询语句;#查询视图:和查询普通表一样#查看视图定义 SHOW CREATE VIEW 视图名;#修改视图 ALTER VIEW 视图名 AS 查询语句;#有则修改,无则创建 CREATE OR REPLACE VIEW 视图名 AS 查询语句;#删除视图:IF EXISTS 防止因视图不存在而报错。 DROP VIEW [IF EXISTS] view_name
数据备份与还原
- 数据表备份(表结构+表数据):数据表备份有前提条件: 根据不同的存储引擎有不同的区别
- 单表数据备份
- SQL备份:系统会对表结构以及数据进行处理,变成对应的SQL语句, 然后进行备份: 还原的时候只要执行SQL指令即可.(主要就是针对表结构)
- 增量备份(日志文件):指定时间段开始进行备份., 备份数据不会重复, 而且所有的操作都会备份(大项目都用增量备份)
事务安全
定义
- 事务: 一系列要发生的连续的操作(即一组SQL语句)
- 事务安全: 一种保护连续操作同时满足(实现)的一种机制
- 事务安全的意义: 保证数据操作的完整性
事务属性
- 原子性,一个事物中的所有操作要么全部完成,要么全部失败。事物执行后,不允许停留在中间某个状态。
- 一致性,不管在任何给定的时间,并发事务有多少,事务必须保证运行结果的一致性。事务可以并发执行,但是最终MySQL却串行执行。
- 隔离性,每个事务只能看到事务内的相关数据,别的事务的临时数据在当前事务是看不到的。隔离性要求事务不受其他并发事务的影响,在给定时间内,该事务是数据库运行的唯一事务。
- 持久性,事务一旦提交,结果便是永久性的。即便发生宕机,仍然可依靠事务日志完成数据持久化。
隔离级别
事务问题(隔离属性会引发的问题)
- 脏读:事务 A 读取了事务 B 当前更新的数据,但是事务 B 出现了回滚或未提交修改,事务 A 读到的数据就被称为 “脏数据”。通常情况下,使用 “脏数据” 会造成系统数据不一致,出现错误
- 不可重复读:事务 A 在执行过程中多次读取同一数据,但是事务 B 在事务 A 的读取过程中对数据做了多次修改并提交,则会导致事务 A 多次读取的数据不一致,进而无法做出准确性判断
- 幻读:事务 A 在执行过程中读取了一些数据,但是事务 B 随即插入了一些数据,那么,事务 A 重新读取时,发现多了一些原本不存在的数据,就像是幻觉一样,称之为幻读
事务操作-手动管理
开启事务:start transaction; 事务内容:SQL语句; 事务关闭:commit; 【事务回滚:rollback;】
事务操作-自动管理
自动事务: 系统通过autocommit变量控制 查看是否开启:Show variables like ‘autocommit’; 开启自动提交: set autocommit = on/1;
触发器
定义
触发器 trigger:事先为某张表绑定好一段代码 ,当表中的某些内容发生改变的时候(增删改)系统会自动触发代码执行.
触发器: 事件类型, 触发时间, 触发对象
事件类型: 增删改, 三种类型insert,delete和update
创建触发器
#在mysql高级结构中: 没有大括号, 都是用对应的字符符号代替-- 临时修改语句结束符Delimiter 自定义符号 -- 后续代码中只有碰到自定义符号才算结束Create trigger 触发器名字 触发时间 事件类型 on 表名 for each rowBegin -- 代表左大括号: 开始-- 里面就是触发器的内容: 每行内容都必须使用语句结束符: 分号End -- 代表右带括号: 结束自定义符号-- 将临时修改修正过来
查看触发器
#查看所有触发器或者模糊匹配 Show triggers [like ‘pattern’]; \g 的作用是分号和在sql语句中写’;’是等效的 \G 的作用是将查到的结构旋转90度变成纵向#可以查看触发器创建语句 Show create trigger 触发器名字;#系统视图(Information_schema)的触发器的定义信息 Information_schema.triggers
删除&修改
触发器不能修改,只能先删除,后新增. #删除 Drop trigger 触发器名字;
相关文章:

sql知识梳理(超全,超详细,自用)
目录 通识 查询的基本语法 数据库(database)操作 表(table)的操作 表中列的操作 索引操作 表中行的操作 insert into语句 update语句 删除语句 select语句 表与表之间的关系 连接查询 子查询 视图 数据备份与还原 …...

[ Qt ] | QPushButton常见用法
目录 绑定键盘快捷键 前面已经说了很多用法了,下面主要说说绑定键盘,设置Icon图片。 绑定键盘快捷键 实现四个按钮,可以使用wsad来控制另一个按钮的上下左右的移动。 #include "widget.h" #include "ui_widget.h"Wid…...
WEB3——为什么做NFT铸造平台?
相必之前看过我的入门项目推荐关于简易NFT铸造平台的文章。会有一些疑惑 WEB3—— 简易NFT铸造平台(ERC-721)-入门项目推荐-CSDN博客 WEB3,我直接在https://nft.storage网站里上传图片不行吗,必须用合约铸造NFT? 我做…...

电脑驱动程序更新工具, 3DP Chip 中文绿色版,一键更新驱动!
介绍 3DP Chip 是一款免费的驱动程序更新工具,可以帮助用户快速、方便地识别和更新计算机硬件驱动程序。 驱动程序更新工具下载 https://pan.quark.cn/s/98895d47f57c 软件截图 软件特点 简单易用:用户界面简洁明了,操作方便,…...

【机器学习基础】机器学习入门核心:数学基础与Python科学计算库
机器学习入门核心:数学基础与Python科学计算库 一、核心数学基础回顾1. 函数与导数2. Taylor公式3. 概率论基础4. 统计量5. 重要定理6. 最大似然估计(MLE)7. 线性代数 二、Python科学计算库精要1. NumPy:数值计算核心2. SciPy&…...

上交具身机器人的视觉运动导航!HTSCN:融合空间记忆与语义推理认知的导航策略
作者:Qiming Liu 1 ^{1} 1, Guangzhan Wang 2 ^{2} 2, Zhe Liu 3 , 4 ^{3,4} 3,4 and Hesheng Wang 1 , 3 , 5 , 6 ^{1,3,5,6} 1,3,5,6单位: 1 ^{1} 1上海交通大学自动化系, 2 ^{2} 2上海交通大学软件学院, 3 ^{3} 3上海交通大学教…...

【C++并发编程01】初识C++并发编程
1、并发是什么 并发是指两个或更多独立的活动同时发生,现实生活中常见的并发场景如边吃饭边看手机。 1.1、计算机中的并发: 计算机领域的并发是指在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。 我们在电脑上能够边听音乐边和…...

Mysql库的操作和表的操作
Mysql库和表的操作 库的操作1.查看数据库列表2.创建数据库3.使用数据库4.查看当前在那个数据库中5.显示数据库的创建语句6.修改数据库7.删除数据库8.备份和恢复数据库9.查看数据的连接情况(简单来说就是查看有多少人使用你的数据库) 表的操作1.创建表2.查看表结构3.修改表本身(…...

LangChain-结合GLM+SQL+函数调用实现数据库查询(三)
针对 LangChain-结合GLM+SQL+函数调用实现数据库查询(二)-CSDN博客 进一步简化 通过 LangChain 和大语言模型(GLM-4)实现了一个 AI 代理,能够根据自然语言提问自动生成 SQL 查询语句,并连接 MySQL 数据库执行查询,最终返回结果。 整个流程如下: 用户提问 → AI 生成 SQ…...
word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)
文章目录 prompt prompt [格式要求] - 字体:中文宋体小四;英文Times New Roman 12pt;标题黑体 - 行距:1.5倍(段前段后0行) - 边距:A4默认(上下2.54cm,左右3.17cm&…...
Ubuntu 桌面版忘记账户密码的重置方法
如果你忘记了 Ubuntu 桌面版的用户密码,可以通过进入恢复模式(Recovery Mode)来重置密码。以下是详细步骤: 一、进入 GRUB 引导菜单 重启计算机:点击关机按钮,选择重启。在启动时按住 Shift 键࿱…...

抖音商城抓包 分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 抓包展示 总结 1.出于安全考虑,本章未…...
[SC]sc_signal_rv的用法和sc_signal相比有什么优势?
sc_signal_rv的用法和sc_signal相比有什么优势? 在 SystemC 中,sc_signal<T> 是最常用的单驱动(single‐driver)信号通道;而 sc_signal_rv<W>(“rv” = resolved vector)则是一种多驱动、带总线(tri-state)分辨功能的信号。下面分几点来说明它们的…...
掌握 FreeRTOS:打造高效嵌入式系统的第一步
实例对比说明: 手机: 点击相机 -> 操作系统 -> 打开摄像头 无操作系统: 相机 -> 打开摄像头也能实现,但方式死板、不支持第三方应用 MCU 对比说明: 裸机开发: MCU -> 直接控制硬件 使用操作系统: MCU -> 操作系统 -> 硬…...

性能优化 - 案例篇:数据一致性
文章目录 Pre引言1. 分布式缓存概念2. Redis 与 Memcached 区别概览3. Spring Boot 中使用 Redis3.1 引入依赖与常用客户端3.2 RedisTemplate 的基本用法3.3 Spring Cache 注解式缓存 4. 秒杀业务简介及挑战5. Lua 脚本实现原子库存扣减5.1 准备阶段:数据预加载5.2 …...

Spring框架学习day6--事务管理
Spring事务管理 Spring事务管理是在AOP的基础上,当我们的方法完全执行成功后,再提交事务,如果方法中有异常,就不提交事务 Spring中的事务管理有两种方式: 1.编程式事务 需要我们在业务代码中手动提交 2.声明式…...

免费酒店管理系统+餐饮系统+小程序点餐——仙盟创梦IDE
酒店系统主屏幕 房间管理 酒店管理系统的房间管理,可实现对酒店所有房间的实时掌控。它能清晰显示房间状态,如已预订、已入住、空闲等,便于高效安排入住与退房,合理分配资源,提升服务效率,保障酒店运营有条…...

Git企业级项目管理实战
目录 1. 准备工作 2. 添加成员 2.1 添加企业成员 2.2 添加项目成员 2.3 添加仓库开发人员 3. 开发场景 - 基于git flow模型的实践 3.1 新需求加入 3.2 修复测试环境 Bug 3.3 修改预发布环境Bug 3.4 修改正式环境 Bug 3.5 紧急修复正式环境 Bug 4. 拓展阅读 4.1 其…...

【实例】事业单位学习平台自动化操作
目录 一、创作背景: 二、实现逻辑: 三、代码分析【Deepseek分析】: 1) 主要功能 2)核心组件 2.1 GUI界面 (AutomationApp类) 2.2 浏览器自动化 2.3 平台特定处理 3) 关键技术 4)代码亮点 5)总结 四、运行截图: 五、程序代码: 特别声明:***本代码仅限编程学…...

4.8.3 利用SparkSQL统计每日新增用户
在本次实战中,我们的任务是利用Spark SQL统计每日新增用户数。首先,我们准备了用户访问历史数据,并将其上传至HDFS。然后,通过Spark的交互式编程环境,我们读取了用户文件并将其转换为结构化的DataFrame。接着ÿ…...
创建ipv6 only和ipv6+ip4的k8s集群的注意事项
关键字 : CNI calico vxlan flannel ipv6-only ipv6ipv4 在搭建ipv6-only或ipv6ipv4的k8s集群时,在worker节点加入集群后,发现worker节点上的CNI启动失败。 以下是calico的启动失败情况 : kubectl get pod -A输出如下 : NAMESPACE NAME …...
Qt概述:基础组件的使用
1. Qt框架简介 Qt是一个跨平台的C图形用户界面应用程序开发框架,它包含了丰富的GUI组件和强大的功能库。本次示例代码展示了Qt的几个核心概念: QMainWindow:主窗口类,提供标准的应用程序框架**信号与槽**机制:Qt的核…...
判断使用什么技术来爬取数据详细讲解
判断目标网站使用哪种数据加载形式是爬虫开发的第一步,也是最关键的一步。以下是系统化的诊断方法和步骤: 核心诊断流程 (使用浏览器开发者工具 - Chrome/Firefox为例) 初始观察 (肉眼判断) 页面加载后数据是否立刻可见? 是 → 可能是静态HTM…...

YOLOV7改进之融合深浅下采样模块(DSD Module)和轻量特征融合模块(LFI Module)
目录 一、研究背景 二. 核心创新点 2.1 避免高MAC操作 2.2 DSDM-LFIM主干网络 2.3 P2小目标检测分支 3. 代码复现指南 环境配置 关键修改点 4. 实验结果对比 4.1 VisDrone数据集性能 4.2 边缘设备部署 4.3 检测效果可视化 5. 应用场景 …...
【仿生机器人】仿生机器人认知-情感系统架构设计报告
来自 gemini 2.5 1. 执行摘要 本报告旨在为仿生机器人头部设计一个全面的认知-情感软件架构,以实现自然、情感智能的互动。拟议的架构将使机器人能够像人类一样,动态生成情绪、进行复杂的表情表达(包括情绪掩饰)、拥有强大的记忆…...
数学建模期末速成 多目标规划
内容整理自2-6-2 运筹优化类-多目标规划模型Python版讲解_哔哩哔哩_bilibili 求有效解的几种常用方法 线性加权法√ 根据目标的重要性确定一个权重,以目标函数的加权平均值为评价函数,使其达到最优。ɛ约束法 根据决策者的偏好,选择一个主要…...
常见ADB指令
目录 1. 设备连接与管理 2. 应用管理 3. 文件操作 4. 日志与调试 5. 屏幕与输入控制 6. 高级操作(需Root权限) 7. 无线调试(无需USB线) 常用组合示例 注意事项 以下是一些常用的 ADB(Android Debug Bridge&a…...
IoTGateway项目生成Api并通过swagger和Postman调用
IoTGateway项目生成Api并通过swagger和Postman调用-CSDN博客...
sl4j+log4j日志框架
sl4jlog4j日志框架 slf4j (Simple Loging Facade For Java) 即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案(例如:…...
小白的进阶之路系列之九----人工智能从初步到精通pytorch综合运用的讲解第二部分
张量是PyTorch中的核心数据抽象。这个交互式笔记本提供了一个深入的介绍torch. Tensor 类., 首先,让我们导入PyTorch模块。我们还将添加Python的数学模块来简化一些示例。 import torch import math创建张量 创建张量最简单的方法是调用torch.empty(): x = torch.empty(…...