Mysql基础简介

SQL介绍@数据库

SQL(常用术语)

SQL介绍

    sql语言是一种在关系型数据库中定义和操作数据的标准语言。
    要使用Mysql数据库,必须要掌握SQL语言。

SQL语言分类

1.DML数据操纵语言
DML用于操作数据:查询select、添加insert、删除delete、修改update
2.DDL数据定义语言
DDL用于操作数据库模式对象,进行权限管理,它是自动提交的。
创建create、修改alter、删除drop、清空(清空数据但不删除表)truncate
3.DCL权限控制语言
DCL用于设置或是更改数据库用户或是角色权限的语句。
授权Grant、取消授权Revoke
4.TCL事务控制语言
TCL用于数据库事务管理。
提交commit、回滚rollback、start Transaction开始事务、savepoint设置保存点

数据库及其关系

  1.数据库可以有多张表
        主键要求:
            同一个表主键不可重复,也不能为空
            有且只有一个主键值,可以是联合主键
  2. Mysql常见的数据对象:
        表(table)、索引(index)、视图(view)、约束(Constraint)、触发器(Trigger)、函数(Function)、

数据类型

数值类型:Tinyint(1字节)、Int/Integer、Smallint、Mediumint、Bigint
日期类型:Date、DateTime、TimeStamp、Time、Year
字符串类型:Char、Varchar、tinyText、text、mediumText、longtext、enum、Set、Binary、varbin、ary、blob
空间数据类型
Json数据类型
小数类型:Float、Double、Decimal

数据类型的属性

NULL 数据列Null值
NOT NULL 数据列NOT Null值
DEFAULT 默认值

Mysql事务

事务相关概念

事务的四个特性

原子性:要么全部成功,要么全部失败;出错就回滚
一致性
隔离性:事务独立,不相互干扰>
持久性:事务完成,不能回滚

总结:原子性是基础;隔离性和持久性是手段;一致性是目的

事务并发可能会出现的问题

 1、更新丢失
     事务A该数值为1并提交
     事务B该数值为2并提交
   最终:数值为2,事务A所做的更新将会丢失
 2、脏读
     事务A读取到事务B更新的数据,但是事务B回滚了,A读到的数据就是脏数据
 3、不可重复读[侧重修改】
      事务A读数据为100,B改数据为150,A再去读变为了150,数据前后读的不一致
 4、幻读【侧重新增或是删除】
      事务A把所有的100都改为200,还未提交;事务B把所有的200改为100,这时事务A就会看到有一部分100没有修改

总结:解决不可重复读的问题只需要锁住满足条件的行,解决幻读需要锁表

事务的隔离级别

读未提交:read-uncommitted:不会出现更=更新丢失问题
读已提交:read-committed:会出现不可重复读、幻读
可重复读:repeatable-read:会出现幻读
串行化:不会出现事务并发问题

数据库的隔离级别:
sql-server、oracle、DB2数据库默认隔离级别:read-committed
mysql默认隔离级别:repeatable-read

Mysql MVCC(多版本并发控制)

MVCC实现原理
innoDB会为每个启动的事务提供一个当前时刻的镜像
innoDB给每条记录后面保存两个隐藏的字段:
一个是行的创建时间; 一个是行的删除时间
MVCC的优点
innoDB几乎不用获得任何锁,每个查询都通过版本检查,只获得自己需要的数据版本,大大提高并发度
MVCC的缺点
innoDB必须增加字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值