数据库的分类
开发式数据库
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 重复去重文章来源:https://www.toymoban.com/news/detail-469609.html
select class from table_a union select class from table_b
-
union all 不去重文章来源地址https://www.toymoban.com/news/detail-469609.html
select class from table_a union all select class from table_b
where 和 having的区别
- where用于过滤数据行,查询条件中不可以使用聚合函数,分组前过滤数据。
- having用于过滤分组数据,查询可以使用聚合函数,分组后过滤数据。
到了这里,关于学习sql,你需要知道这些的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!