SQL常用语句与事务介绍

文章目录

      • 基本语法
      • 常见用法
      • 实用语句
      • 事务

基本语法

  1. SELECT:用于从数据库表中检索数据。
    语法:SELECT column1, column2, ... FROM table_name;
  2. INSERT INTO:用于向数据库表中插入新行。
    语法:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  3. UPDATE:用于更新数据库表中的现有数据。
    语法:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
  4. DELETE:用于从数据库表中删除数据。
    语法:DELETE FROM table_name WHERE condition;
  5. WHERE:用于限定查询、更新或删除操作的条件。
    语法:SELECT column1, column2, ... FROM table_name WHERE condition;
  6. AND/OR:用于组合多个条件。
    语法:SELECT column1, column2, ... FROM table_name WHERE condition1 AND/OR condition2;
  7. ORDER BY:用于对查询结果进行排序。
    语法:SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC/DESC;
  8. GROUP BY:用于将查询结果集中的多行数据根据一个或多个列进行分组。
    语法:SELECT column_name, AGGREGATE_FUNCTION(column_name) FROM table_name WHERE condition GROUP BY column_name;
  9. HAVING:用于对分组后的结果进行条件筛选。
    语法:SELECT column_name, AGGREGATE_FUNCTION(column_name) FROM table_name WHERE condition GROUP BY column_name HAVING condition;

常见用法

  1. 查询表中所有的信息:SELECT * FROM <表名>
  2. 条件查询 :Select * from students where score >= 80
  3. 投影查询(返回指定的列):SELECT score分数, name姓名 FROM students
  4. 按score从低到高:SELECT id, name, gender, score FROM students ORDER BY score
  5. 按score从高到低 :SELECT id, name, gender, score FROM students ORDER BY score DESC
  6. 先按score排,相同后按gender排:SELECT id, name, gender, score FROM students ORDER BY score DESC, gender
  7. 分页查询(每页3条,从零开始):limit 3 offset 0 下一页即为 ………limit 3 offset 3 以此类推
  8. 聚合查询(得到行数,并命名为num):SELECT COUNT(*) num FROM students
  9. 按 class_id分组查询得到的结果:SELECT class_id, COUNT(*) num FROM students GROUP BY class_id
  10. 多表查询 SELECT s.id sid,s.name,s.gender,c.id cid, c.name cname FROM students s, classes c
  11. 连接查询(内连接):SELECT s.id, s.class_id, c.name , s.score FROM students s INNER JOIN classes c ON s.class_id = c.id
  12. 连接查询(外连接): 百度去….

实用语句

  • 插入或替换(有则替换,无则插入)
REPLACE INTO  students (id, class_id, name, gender, score)   VALUES (1, 1, '小明', 'F', 99)
  • 插入或忽略(有则不插,无则插入)
INSERT  IGNORE INTO  students (id, class_id, name, gender, score)   VALUES(1, 1, '小明', 'F', 99)
  • 插入或更新(有则更新,无则插入)
NSERT INTO  students (id, class_id, name, gender, score)  VALUES(1, 1, '小明', 'F', 99) ON  DUPLICATE  KEY  UPDATE   name='小明', gender='F', score=99;
  • 快照–复制表的一些数据到另一份表
CREATE  TABLE  students_of_class1  SELECT  *   FROM  students WHERE   class_id=1

事务

  • 事务是数据库管理系统中的一个重要概念,它是一个操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务具有以下四个特性,通常被称为ACID特性:
  1. 原子性:事务是一个不可分割的工作单位,事务中的所有操作要么全部执行成功,要么全部失败回滚,不会处于中间状态。
  2. 一致性:事务必须使数据库从一个一致性状态转移到另一个一致性状态。事务执行的结果必须是数据库状态的合法状态,即数据不会因为事务的执行而遭到破坏。
  3. 隔离性:多个事务并发执行时,每个事务都感觉不到系统中有其他事务在执行,多个事务的执行互不干扰。不同的隔离级别可以解决不同的问题,如脏读、不可重复读和幻读等。
  4. 持久性:一个事务一旦提交,它对数据库中数据的改变就是永久性的。即使系统发生故障,这些改变也不会丢失。

Read Uncommitted是隔离级别最低的一种事务级别。在这种隔离级别下,一个事务会读到另一个事务更新后但未提交的数据,如果另一个事务回滚,那么当前事务读到的数据就是脏数据,这就是脏读(Dirty Read)

Read Committed隔离级别下,一个事务可能会遇到不可重复读的问题。
不可重复读是指:在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致

Repeatable Read(默认)隔离级别下,一个事务可能会遇到幻读的问题。
幻读是指:在一个事务中,第一次查询某条记录,发现没有,但是,当试图更新这条不存在的记录时,竟然能成功,并且,再次读取同一条记录,它就神奇地出现了。

Serializable是最严格的隔离级别。在Serializable隔离级别下,所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年五一数学建模C题完整解题思路代码

2024年第二十一届五一数学建模竞赛题目 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动力灾害风险越来越大&#xff0c;严重影响着煤矿的安全高效开采。在各类深…

Flutter 弃用 WillPopScope 使用 PopScope 替代方法

Flutter 弃用 WillPopScope 使用 PopScope 替代方法 视频 https://youtu.be/u3qdqUvFWiM https://www.bilibili.com/video/BV1aJ4m1n7FZ 前言 原文 https://ducafecat.com/blog/migrating-from-willpopscope-to-popscope-in-flutter 了解如何在 Flutter 3.16 中将弃用的 Wil…

【UnityRPG游戏制作】Unity_RPG项目之场景环境搭建和解析

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

Java:Thread类及常见方法大全(画图+源码详解)

Thread 类是 JVM 用来管理线程的一个类&#xff0c;每一个线程都有一个唯一的 Thread 类与之关联。Java中通常使用 Thread类来进行线程调度&#xff0c;线程管理。 目录 一、Thread 的常见构造方法 二、Thread 的几个常见属性 理解线程是否存活&#xff1a; 理解前台线程与…

详解SDRAM基本原理以及FPGA实现读写控制

文章目录 一、SDRAM简介二、SDRAM存取结构以及原理2.1 BANK以及存储单元结构2.2 功能框图2.3 SDRAM速度等级以及容量计算 三、SDRAM操作命令3.1 禁止命令&#xff1a; 4b1xxx3.2 空操作命令&#xff1a;4b01113.3 激活命令&#xff1a;4b00113.4 读命令&#xff1a;4b01013.5 写…

【蓝牙协议栈】【BR/EDR】传统蓝牙 command/event/acl/sco/iso 命令格式解析

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【精讲蓝牙协议栈】、【精讲BLE协议栈】和【Android Bluetooth Stack】专栏会持续更新中…

Java进阶-Java Stream API详解与使用

本文全面介绍了 Java Stream API 的概念、功能以及如何在 Java 中有效地使用它进行集合和数据流的处理。通过详细解释和示例&#xff0c;文章展示了 Java Stream API 在简化代码、提高效率以及支持函数式编程方面的优势。文中还比较了 Java Stream API 与其他集合处理库的异同&…

【氮化镓】GaN器件在航天器高可靠正向转换器中应用

文章是发表在《IEEE Journal of Emerging and Selected Topics in Power Electronics》2022年10月第10卷第5期上的一篇关于GaN(氮化镓)器件在航天器高可靠性正向转换器中应用的研究。文章的作者是匹兹堡大学电气与计算机工程系的Aidan Phillips, Thomas Cook和Brandon M. Gra…

c#word文档:3.向Word文档中插入表格/4.读取Word文档中表格

--向Word文档中插入表格-- &#xff08;1&#xff09;在OfficeOperator项目的WordOperator类中定义向Word文档插入换页的函数NewPage &#xff08;2&#xff09;在WordOperator类中定义向Word文档插入表格的函数InsertTable using Microsoft.Office.Interop.Word;// 引入Mic…

Day27:阻塞队列、Kafka入门、发送系统通知、显示系统

阻塞队列BlockingQueue BlockingQueue 解决线程通信的问题。阻塞方法:put、take。 生产者消费者模式 生产者:产生数据的线程。消费者:使用数据的线程。 &#xff08;Thread1生产者&#xff0c;Thread2消费者&#xff09; 实现类 ArrayBlockingQueueLinkedBlockingQueuePr…

MATLAB 数据导入

MATLAB 数据导入&#xff08;ImportData&#xff09; 在MATLAB中导入数据意味着从外部文件加载数据。该importdata功能允许加载不同格式的各种数据文件。它具有以下五种形式 序号 功能说明 1 A importdata(filename) 从filename表示的文件中将数据加载到数组A中。 2 A i…

Electron+Vue3+Vite+ElectronForge整合-全部ts开发 - 一键启动两个服务 一键打包两个服务

说明 本文介绍一下 Electron Vue3 Vite Electron Forge 的高级整合操作。vue3 : 使用 TS 的语法开发&#xff1b; Electron : 使用 TS 的语法开发。 补充 &#xff1a; 目前Electron的开发还是以JS为主&#xff0c;不过我们可以直接使用TS开发&#xff0c;在执行和打包时&a…

UE5 蓝图入门

基础节点创建&#xff1a; 常量&#xff1a; 按住 1 &#xff0c;点击鼠标左键&#xff0c;创建常量 二维向量&#xff1a; 按住 2 &#xff0c;点击鼠标左键&#xff0c;创建二维向量 三维向量&#xff1a; 按住 3 &#xff0c;点击鼠标左键 按 c 键打出一个注释框 参考视…

C# Winform父窗体打开新的子窗体前,关闭其他子窗体

随着Winform项目越来越多&#xff0c;界面上显示的窗体越来越多&#xff0c;窗体管理变得更加繁琐。有时候我们要打开新窗体&#xff0c;然后关闭多余的其他窗体&#xff0c;这个时候如果一个一个去关闭就会变得很麻烦&#xff0c;而且可能还会出现遗漏的情况。这篇文章介绍了三…

HR招聘测评,如何进行人才测评?

说起“人才测评”几个字&#xff0c;相信大家都不会陌生&#xff0c;很多人&#xff0c;尤其是求职者来说&#xff0c;则更加熟悉。在求职应聘中&#xff0c;已经有越来越多的企业开始采用人才测评进行人员选拔。了解人才测评的含义&#xff0c;知道人才测评如何进行&#xff0…

打破失联困境:门店如何利用AI智能名片B2B2C商城小程序重构与消费者的紧密连接?

在如今这个消费者行为日益碎片化的时代&#xff0c;门店经营者们时常感叹&#xff1a;消费者进店如同一场不期而遇的缘分&#xff0c;然而一旦离开门店&#xff0c;就仿佛消失在茫茫人海中&#xff0c;难以再觅其踪迹。这种“进店靠缘分&#xff0c;离店就失联”的困境&#xf…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它帮助用户快速在本地运行大模型。通过简单的安装指令&#xff0c;用户可以执行一条命令就在本地运行开源大型语言模型&#xff0c;如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

平面模型上提取凸凹多边形------pcl

平面模型上提取凸凹多边形 pcl::PointCloud<pcl::PointXYZ>::Ptr PclTool::ExtractConvexConcavePolygons(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud) {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);p…

政安晨:【Keras机器学习示例演绎】(二十八)—— 使用 卷积神经网络与循环神经网络 架构进行视频分类

目录 数据收集 设置 定义超参数 数据准备 序列模型 推论 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正…

Android Handler用法

Android Handler用法 为什么要设计Handler机制&#xff1f;Handler的用法1、创建Handler2、Handler通信2.1 sendMessage 方式2.2 post 方式 Handler常用方法1、延时执行2、周期执行 HandlerThread用法主线程-创建Handler子线程-创建Handler FAQMessage是如何创建主线程中Looper…
最新文章