首页 > 数据库 >数据库

数据库

时间:2023-09-15 10:38:10浏览次数:27  
标签:事务 -- 数据库 视图 索引 table

数据库

索引

what?

  1. 主键索引,主键自动为索引
  2. 唯一索引(unique)
  3. 普通索引(index) //不是主键和uniqu的字段也想缩减查询速度
  4. 全文索引(fulltext) ??????????

一种存储字段的形式(用各种数据结构实现各种索引方式(二叉树)

how?

-- 创建索引
creat [unique] index idex_name on table_name(field_name)
alter table table_name ADD index table_name(FIELD_NAME)
alter table table_name ADD PRIMARY KEY(FIELD_NAME)
-- 删除索引
drop index [索引名] on [表名] 
-- 删除主索引
alter table [表名] drop primary key 

修改索引先删除在添加

-- 查询索引
show index from TABLE_NAME
-- 查看表结构
DESC TABLE_NAME

why?

在数据库数据量大的时候可以牺牲空间来换取查询速度,对修改和删除数据有影响,改变了索引里的内容从而重新加载(但这是值得的)

那些列适合做索引

  1. 较为频繁查询的字段

  2. 唯一性太差的字段不适合做索引,如性别字段

  3. 更新频繁的字段不适合做索引

事务

  1. 事务管理

  2. savepoint

  3. rollback

  4. commit

  5. 隔离级别

  6. ACID

what

事务用于保证数据的一致性,由一组dml语句(数据管理语句,删改查)组成,这组语句要么全部成功要么全部失败,EX:转账就要用事务处,用来保证的数据的一致性(不会出现一个账户扣钱,另一个账户没有增钱)

how

why

事务管理(inodb)

  1. start transaction 开始一个事务
  2. savepoint
  3. rollback to
  4. rollback
  5. commit 所有操作生效无法回退,把之前的保存点都删除)(结束事务)
start transaction
-- 设置保存点名字
savepoint a
-- 回滚
rollback to a
-- 设置
set autocommit = off

隔离级别

事务与事务之间的隔离程度

脏读:读取到未提交的改变时(添加,删除,更改)

不可重复读:读取到非当前登录时间段已提交的修改,删除数据

幻读:读取到非当前登录时间段已提交的添加数据

隔离级别

4种隔离级别

  1. 读未提交 脏读T 不可重复读 T 幻读 T 不加锁
  2. 读已提交 F T T 不加锁
  3. 可重复读 F F F 不加锁
  4. 可串行化 F F F 加锁 (T是可能出现,F是不会出现)

加锁后发现有其他连接事务对这张表进行修改,并且并未提交.会阻塞

dos命令得到当前隔离级别

select @@tx_isolation;
-- 设置当前隔离级别
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

事务ACID特性

  1. 原子性(Atomicity
    • 事务是一个不可被分割的单位,无论什么情况事务都会一起执行,要么一起不执行
  2. 一致性(Consistency)
    • 事务必须使数据库从一个一致状态变换到另外一个一致状态
  3. 隔离性(Isolation)
    • 多个用户并发访问数据库,事务与事务之间不应该存在干扰
  4. 持久性(Durability)
    • 一旦数据被提交到数据库中会永久更改

表类型和存储引擎

what?

  1. mysql的表类型由存储引擎来决定
  2. mysql数据库支持6种类型
    • CSV
    • Memory(数据存储在内存中,不用IO,关闭数据库数据会消失,表结构还在,such qq的状态)
    • ARCHIVE
    • innoBDB(支持事务,外键,行锁)
    • MGR_MYISAM
    • MYISAM(不支持外键和事务,支持表锁)
  3. 主要有两大类事务安全类型和非事务安全类型

how?

-- 展示所有引擎
show engines
-- 修改存储引擎
alter table '表名' engine = ;

根据需求选择表的类型

视图

视图和真实表的对应关系

视图与表的关系

总结

  1. 视图是根据表来创建的,视图是虚拟的表
  2. 视图的数据都来自基表(只有视图结构文件.frm)
  3. 通过视图可以改变基表
  4. 基表的改变也会影响视图

how

creat view 视图名 as select语句
alter view 视图名 as select语句
show create view 视图名
drop view 视图名1,视图名2

视图中可以在使用视图

why

  1. 安全

  2. 性能(关系型数据库经常分表存储,经常用join来连接,效率低,通过建立视图,将相关表的字段组合在一起,就可以避免使用join

  3. 灵活

    视图的灵活性

用户管理

create user '用户名'@'ip地址' identified by '密码'
drop user '用户名'@'ip地址'
set [for 用户信息] password = PASSWORD('')//可以修改自己的密码,修改别人的密码需要权限


用户的完整信息是用户名加ip地址

用户授权代码规范

标签:事务,--,数据库,视图,索引,table
From: https://www.cnblogs.com/lz2z/p/17704259.html

相关文章

  • JavaWeb综合案例(黑马程序员2023年JavaWeb课程总结,所有功能均实现,包含数据库sql文件)
    JavaWeb综合案例(黑马程序员2023年JavaWeb课程总结,所有功能均实现,包含数据库sql文件)1.案例介绍:1.前端:Vue.js+element-ui+ajax(axios)+html2.后端:maven+mybatis+servlet 2.项目结构: 3.BrandMapper接口类 packagecom.itheima.mapper;   impor......
  • Asp.net的项目SqlServer数据库迁移到MySql
    1、环境Windows10+VS2015+.Net4.5.2+MySql5.72、准备   1)、NavicatPremium15(用于数据库转换,其它版本的亦可)   2)、Vs2015   3)、安装mysql-connector-net-6.9.9.msi   4)、安装mysql-for-visualstudio-1.2.6.msi3、数据库转换  1)、打开nav......
  • 迁移pgsql从数据库(原先数据库架构为主从同步)
    迁移pgsql从数据库将原先的1.56服务器上的从数据库迁移至1.62服务器上55服务器为主库1、安装依赖包yum-yinstallreadlinegcc-yreadline-develzlib-devel2、下载对应版本的pgsql并解压编译安装下载地址:https://www.postgresql.org/ftp/source/tar-xvfpostgresql-11.6......
  • openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据
    openGauss学习笔记-69openGauss数据库管理-创建和管理普通表-更新表中数据修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新某个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称......
  • MySQL数据库
    目录MySQL数据库1.基本概念2.DBMS3.发展史4.主流数据库介绍5.数据库分类5.1关系数据库5.2非关系型数据库6.SQL语句6.1SQL语句分类:6.1.1DDL:数据定义语言,用于管理数据库对象,如库、表、索引等6.1.2DML:数据操纵语言,用于管理表数据6.1.3DQL:数据查询语言,用于根据条件查......
  • ubuntu22.04.3 安装postgresql 16 rc1数据库
    ubuntu22.04.3安装postgresql16rc1数据库一、直接安装#Createthefilerepositoryconfiguration:sudosh-c'echo"debhttps://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.list'#Importthe......
  • 人大金仓-国产数据库--九五小庞
    1.人大金仓数据库官网介绍人大金仓专注数据库领域20余载,具备出色的数据库产品研发及服务能力。曾先后承担国家“863”、电子发展基金、信息安全专项、国家重点研发计划、“核高基”等重大课题研究。核心产品金仓数据库管理系统KingbaseES是具备先进水平的大型通用数据库。2018年......
  • 数据库更新效率测试
    有个项目记录采集点的实时数据(mysql5.7),约5000条记录,在C#的DataTable更新好后,一次性Update到表中,但速度非常慢要4分钟左右,但程序定时更新为5分钟,经常超时,也找不到好的办法,最后把这个表改为Memory引擎后速度提高到5秒左右,总算解决了问题。因为此,在本机做了些测试,为以后的数据库选型......
  • 数据库发展
    一、历程    数据库发展至今已经有3代:    1、SQL:传统关系型数据库。例如Mysql,Oracle,SqlServer等;    2、noSQL:notonlySql。例如MongoDB,Redis等;    3、NewSQL:二、问题   【SQL】    问题:伴随互联网应用的用户规模,数据量都......
  • MySQL数据库的DML语法及使用举例
    本文列举数据库的操纵语言的语法及实际使用,以班级表作为举例:班级表:classroom点击查看创建班级表sqlcreatetableclassroom( cidintPRIMARYKEYauto_increment, cnamevarchar(20), desvarchar(50));一、插入数据语法:insertinto表名[(字段名….)]values(值….......