学习sql,你需要知道这些

2023-11-11

数据库的分类

开发式数据库

MySql
Oracle
PostgreSql

非开发式数据库

MogoDB
Redis
DynamoDB
Elaticsearch

事务

什么是事务

事务就是由单独单元的一个或多个sql语句组成,在这个单元中,每个sql语句都是相互依赖的。而整个单独单元是作为一个不可分割的整体存在,类似于物理当中的原子(一种不可分割的最小单位)。

往通俗的讲就是,事务就是一个整体,里面的内容要么都执行成功,要么都不成功。不可能存在部分执行成功而部分执行不成功的情况。

事务的四种特性

  • 原子性:事务是一个不可分割的最小工作单位。所有操作要不全部成功要不全部失败。
  • 一致性:执行前后的状态要保持一致。
  • 隔离性:并发的状况下,事务直接是相互隔离的,一个事务的执行不能受其他事务的干扰。
  • 持久性:事务一旦提交后,数据库中的数据永久保存。接下来的操作或故障对其没有影响。

死锁

什么是死锁

多个进程运行时争夺资源造成的僵局

死锁的四个条件

  • 互斥:进程要求对所占用资源进行排他性控制。
  • 请求和保持:当进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 不剥夺:进程获得的资源在未使用完之前,不能剥夺
  • 循环等待:在发生死锁时,必然形成一个进程-资源环型链

如何处理死锁

预防死锁

破坏死锁的四个条件任意

避免死锁

银行家算法

检测死锁

设置检测机构,发现后里面清除。

解除死锁

资源剥夺
进程回退
撤销进程

什么是navicat

是一套可以建立多个数据库连接的数据库管理工具,支持创建管理维护数据库。

SQL语句

对数据库的操作

  • 查询所有数据库

      show databases
    
  • 创建数据库

      create database 数据库名称
    
  • 删除数据库

      drop database 数据库名称
    

对表的操作

  • 查看表

      show tables
    
  • 创建表

      create table 表名
    
  • 删除表

      drop table 表名
    
  • 查看表结构

      desc表名
    
  • 修改表名

      alter table 表名 rename to 新表名
    
  • 修改数据类型

      alter table 表名 modify 列名 新数据类型
    
  • 修改列名和数据类型

      alter table 表名 change 列名 新列名 新数据类型
    
  • 删除列名

      alter table 表名 drop 列名
    
  • 添加一列

      alter table 表名 add 列名 数据类型
    

对表里数据进行增删改查

  • 增加数据

      insert into 表名(列名,列名)values(列表数据,列表数据)
    
  • 修改数据

      update 表名 set 列名=列名的值 where 条件
    
  • 删除某条数据

      delete from 表名 where 条件
    
  • 基础查询

      selete 字段 from 表名
    
  • 模糊查询

      select from 表名 where 'name' like='_'     #  _任意单个字符   %任意多个字符
    
  • 条件查询

      select from 表名 where 条件
    
  • 排序查询

      select 字段 表名 order by  asc/desc (升序/降序)
    
  • 聚合函数

      select 聚合函数 from 表名 where 
      # 平均数 avg              总和 sum       统计个数 count   最大数 max  最小值 min
    
  • 分组查询

      selete 字段 from 表名 group by 分组条件
    
  • 分页查询

      select * from 表名 limit 1,2(开始索引,查询条数)
    

数据库的内外连接

内连接

inner join on 返回两个表的交集

	select * from 表名 表别名 inner join 表名 表别名 on 表别名.列名=表别名.列名

左外连接

left join on 左表全显示,右表显示交集部分,不足地方显示null

	select *from a_table a left jion b_table b on a.name=b.name

右外连接

right join on
select *from a_table a right jion b_table b on a.name=b.name

表拼接

拼接两个表的数据

  • union 重复去重

      select class from table_a union select class from table_b
    
  • union all 不去重

      select class from table_a union all select class from table_b
    

where 和 having的区别

  • where用于过滤数据行,查询条件中不可以使用聚合函数,分组前过滤数据。
  • having用于过滤分组数据,查询可以使用聚合函数,分组后过滤数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习sql,你需要知道这些 的相关文章

  • SQL Server 2008 R2 DMV - sys.dm_sql_referencing_entities - 查询用法

    我正在尝试使用以下命令获取表列表的所有依赖项sys dm sql referencing entities DMV 这个查询给了我所有表的列表 SELECT TableName from FinalTableList 此查询给出 Table
  • 分组依据检索 3 个值

    我有以下查询 SELECT Cod MIN Id AS id Min MAX Id AS id Max retrieve value in the middle COUNT AS Tot FROM Table a NOLOCK GROUP
  • SQL FORMAT 函数错误

    这个SQL select FORMAT lNum from rpt myView 产生以下错误 参数数据类型 varchar 对于格式的参数 1 无效 功能 lNum is a varchar 10 运行 SQL Server 2012 v
  • 方法“Boolean Contains(System.String)”不支持对 SQL 的转换

    方法 Boolean Contains System String 不支持对 SQL 的转换 查询是 IsQueryable 但这停止工作 foreach string s in collection1 if s Length gt 0 q
  • 如何在 SQL 中选择“上一条”和“下一条”记录?

    I am building a blog post detail page on my site that will display display a previous and next link similar to how a typ
  • ADO.NET 池连接无法重用

    我正在开发一个 ASP NET MVC 应用程序 该应用程序使用 EF 6 x 来处理我的 Azure SDL 数据库 最近 随着负载的增加 应用程序开始进入无法再与 SQL 服务器通信的状态 我可以看到有 100 个到我的数据库的活动连接
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 如何使用 ALTER TABLE 添加新列并使其唯一?

    我该如何使用ALTER TABLE添加新列并使其独一无二 取决于 DBMS 但我认为以下内容相当可移植 ALTER TABLE table name ADD column name datatype ALTER TABLE table na
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 与常规 SQL 查询不同,为什么“linq to sql”查询以 FROM 关键字开头?

    为什么 linq to sql 查询以FROM与常规 SQL 查询不同的关键字 LINQ 模仿Logical Query processing在 SQL 中你有 8 SELECT 9 DISTINCT 11 TOP 1 FROM 2 ON
  • 使用显式值进行 BigQuery 合并

    据我所知 BigQuery 支持合并两个表 目前 INSERT操作允许将显式值插入表中 例如 INSERT dataset Inventory product quantity VALUES top load washer 10 front
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • Solr 增量导入不起作用

    我使用的是solr 4 2 请注意 完全导入有效 但增量导入却无效 增量导入不会给出任何错误 但不会获取任何更改 这是数据配置文件
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID

随机推荐

  • ResNet系列及其变体(六)—DarkNet53

    本篇主要介绍DarkNet53 其他ResNet系列及其变体介绍见如下blog ResNet系列及其变体目录 DarkNet53 YOLOv3 An Incremental Improvement Darknet53是经典的一个深层网络 结
  • 51单片机的步进电机控制系统(仿真+程序+报告+原理图)

    1 主要功能 该系统由AT89C51单片机 数码管模块 步进电机模块 按键模块构成 可实现功能 1 按键控制步进电机正反转 加减速 停止 2 2个发光二极管显示正反转 1位7段LED数码管显示当前转速档位 共9个档位 3 4个红色LED 指
  • java 8 stream 处理对于 List<Map<String,Object>> 数据的分组求和

    java 8 stream 处理对于 List
  • [914]linux如何批量关闭进程

    碰到需要杀掉某一类进程的时候 如何批量杀掉这些进程 使用awk命令是很好的选择 代码 ps ef grep aaa grep v grep awk print kill 9 2 sh ps ef grep aaa grep v grep 这
  • 查看Linux下网卡状态

    ip link 命令 或者 通过mii tool指令 root localhost root mii tool eth0 negotiated 100baseTx FD link ok eth1 no link 或 root localho
  • 网络通信的整个流程

    1 网络通信流程 你的电脑打开浏览器 访问www baidu com 先将请求信息发给了交换机 然后交给了路由器 路由发给DNS服务器 通过DNS协议去找我们要访问的百度的IP地址 查到的百度服务器对应的IP地址之后 路由器通过路由协议找到
  • 【Unity开发】Unity实现英雄联盟选择皮肤效果

    using UnityEngine using System Collections
  • 突破存储边界 赋能开放计算

    2022年8月10日 开放计算中国社区技术峰会 OCP China Day 2022在北京拉开帷幕 开放计算中国社区技术峰会 OCP China Day 是全球开放计算最具规模的生态峰会之一 此次大会以 开放 向未来 绿色 融合 赋能 为主
  • springboot默认数据源究竟是什么?

    springboot默认数据源究竟是什么 springboot默认使用的数据源是druid hikaricp dbcp2还是tomcat pooling 网上很多都说是hikaricp 其实这样的说法是不准确的 根据springboot官方
  • elementui form 正则表达式校验手机号

    data var checkPhone rule value callback gt if value return callback new Error 手机号不能为空 else const reg 1 3 4 5 7 8 0 9 d 8
  • 【Linux】使用Xshell远程链接Linux服务器踩坑合辑

    使用Xshell远程链接Linux服务器踩坑合辑 Xshell远程连接服务器 1 无法解析主机 2 Xshell连接服务器 导入密钥文件失败 Xshell远程连接服务器 Xshell是一个常用的远程连接服务器工具 日常使用十分方便便捷 在连
  • docker在镜像和本地之间拷贝文件

    一 从容器里面拷文件到宿主机 docker cp b76a6e929470 home nacos conf Users king Desktop docker cp 容器ID 要拷贝的文件在容器中的位置 要拷贝到本地宿主机的位置 二 从宿主
  • error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘...

    解决 error 215 Assertion failed src empty in function cv cvtColor 报错如下 分析原因 解决方法 代码实现 报错如下 分析原因 可能是照片无效问题 即cv2 imread返回的值为
  • 常用linux命令

    1 创建文件目录 mkdir 2 创建文件 vi filename eg vi test txt 3 移动文件 mv source destination eg mv test txt study 重命名文件 mv test txt hel
  • VScode 黄色波浪线,Import “[module]“ could not be resolvedPylance

    文章目录 问题描述 解决方案 1 修改vscode的python环境 2 修改 vscode seteing json 文件 问题描述 大致的错误截图 第三方包 自己的代码库 导入不成功 显示黄色波浪线 代码自动提示功能受限 解决方案 可按
  • 斯坦福 机器学习-第二章 生成学习算法

    CS229 Lecture notes 原作者 Andrew Ng 吴恩达 翻译 CycleUser Part IV 生成学习算法 Generative Learning algorithms 目前为止 我们讲过的学习算法的模型都是p y
  • java--基础--17.1--线程--实现多线程,线程方法

    java 基础 17 1 线程 实现多线程 线程方法 1 概念 进程 正在运行的程序 每个进程可以由多个线程组成 线程 是进程中的单个顺序控制流 是一条执行路径 并行 指在某一个时间点执行多个任务 并发 指在某一个时间段执行多个任务 2 实
  • 【Android】App开发-动画效果篇

    在我们玩手机的过程中 如果我们点击某一个页面时 会出现一个页面动画加载或者动画效果的现象 现在我们就来看看App开发中是如何实现动画效果的 目录 动画的分类 逐帧动画 补间动画 动画的分类 在常见的app使用的动画中 常见的就是逐帧动画 补
  • confluence安装

    注 安装前确保机器已安装docker 1 执行如下命令一键安装wiki mkdir p data cd data wget http apk lingyun5 com confluence wiki tar gz tar zxvf conf
  • 学习sql,你需要知道这些

    这里写目录标题 数据库的分类 开发式数据库 非开发式数据库 事务 什么是事务 事务的四种特性 死锁 什么是死锁 死锁的四个条件 如何处理死锁 预防死锁 避免死锁 检测死锁 解除死锁 什么是navicat SQL语句 对数据库的操作 对表的操