SQL常用语句与事务介绍

embedded/2024/10/20 5:32:29/

文章目录

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

基本语法

  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.ppmy.cn/embedded/28498.html

相关文章

oracle的sqlplus默认会执行的脚本

我原来是知道sqlplus会默认执行$ORACLE_HOME/sqlplus/admin/glogin.sql这个脚本 今天在一个陌生的环境调用sqlplus时总会默认执行两条语句 但是就是找不到被执行的文件在哪里 后来发现是在环境变量 ORACLE_PATH下的login.sql文件 ORACLE_PATH这个环境变量是sqlplus这个工具使用…

机器人项目相关

机器人项目相关 1. Nvidia 1.1 Jetson 1.1.1 初步安装Riva教程 llamaspeakJetson AGX Orin踩坑记录&#xff08;1&#xff09;安装Riva 参考知乎链接&#xff1a;https://zhuanlan.zhihu.com/p/670007305 1.1.2 NVIDIA Jetson AI Lab 借助 NVIDIA Jetson™ 将生成式 AI…

Optimistic乐观挑战游戏Sharelock审计大赛

1. 引言 Optimistic的Sherlock审计大赛已进入升级期&#xff0c;fault proofs距离OP主网上线又更近一步了。本文将分享一些初步竞赛结果以及通往Stage 1的后续安排。 2. 审计状态更新 2024年3月27日&#xff0c;Optimistic团队开始针对拟议的 OP Stack fault proof系统进行 …

Django之搭配内网穿透

一&#xff0c;安装coplar 二&#xff0c;开启8087的内网穿透 三&#xff0c;setting.py中加入如下配置&#xff1a; ALLOWED_HOSTS [*]CSRF_TRUSTED_ORIGINS ["https://localhost:8087", "http://localhost:8087"]四&#xff0c;启动项目 五&#xff…

Java | Leetcode Java题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; class Solution {public int[][] generateMatrix(int n) {int num 1;int[][] matrix new int[n][n];int left 0, right n - 1, top 0, bottom n - 1;while (left < right && top < bottom) {for (int column left; co…

react 基于qrcode.react生成颜色不同 , 样式不同的二维码

实现效果: 1 首先在react中 , 导入下载qrcode.react npm install qrcode.react2 在react中导入使用 , 并导入ui样式 import QRcode1 from /assets/images/QRcode1.png import QRcode2 from /assets/images/QRcode2.png import QRcode3 from /assets/images/QRcode3.png impo…

基于ssm+vue+Mysql的药源购物网站

开发语言&#xff1a;Java框架&#xff1a;ssmJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.…

大连宇都环境 | 成都5月水科技大会暨技术装备成果展览会

中华环保联合会水环境治理专业委员会 秘书处 王小雅 13718793867 —— 展位号&#xff1a;A09 —— 一、企业介绍 大连宇都环境成立于2002年&#xff0c;公司20年 MBBR填料产品及工艺技术&#xff0c;&#xff0c;构建了研发、制造、设计、工程、运营链式服务能力&#xff…