网易云课堂DBA学习笔记 (一) 数据库基础

 

数据库编码

编码占用字节   例子:”你好”占用字节是可以储存emoji表情
utf836NO    
utf8mb446字节  (不是所有中文字符占用的字节都是4,有可能是3)Yes

PS:要使mysql储存emoji,有两个条件:

1.Mysql版本>5.5.3

2.java jdbc驱动版本>5.1.13

 

字段类型

数值

类型储存空间/字节范围
int4从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整数
bigint8从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整数
smallint2从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整数
tenyint1从 0 到 255 的整型数据的整数
float4/
double8/
decamal(M,N)精度越大占用越大1<M<254,0<N<60

PS:float与double均是非精确数据类型

字符

类型储存空间
char255字符
varchar可伸缩长度,不能超过65535字节
text65535字节,约64k

PS:

1.char和varchar定义的长度是字符长度,而不是字节长度

2.text储存单位是字节

 

时间日期

 储存空间
date    2018-01-013字节
time    12:00:003字节
timestamp2018-01-01 12:00:004字节
datetime2018-01-01 12:00:008字节

PS:timestamp与datetime区别

1.timestamp范围是1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

  datetime范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

2.timestamp会根据系统的时区而变化,datetime就不会

  

权限管理

 

创建一个用户并赋权,方法1

--localhost 意思是只允许该用户在localhost下登录,改成'%' 则允许所有Ip登录
CREATE USER 'cc'@'localhost' IDENTIFIED BY '123456';

-- WITH GRANT OPTION意思是允许该用户把自身的权限赋给其他人
-- *.* 表示所有库下的所有表
GRANT SELECT
	ON *.* TO 'cc'@'localhost' WITH GRANT OPTION;

创建一个用户并赋权,方法2

-- 给aaa赋权,用户aaa不存在就创建一个
GRANT DELETE
	ON *.* TO 'aaa'@'localhost' IDENTIFIED BY '123123' WITH GRANT OPTION;

删除某用户的权限

revoke DELETE on *.* from 'aaa'@'localhost';

查看mysql所有的权限关键字

--Mysql所有的权限列表
SHOW PRIVILEGES;

其他用户相关的语法

--当前用户拥有的权限
SHOW GRANTS;

--查询所有用户
SELECT User, Host, Password FROM mysql.user;

--查看某用户的权限
SHOW GRANTS FOR '用户名'@'localhost';

--删除某用户
DROP USER 'cc'@'localhost';

--修改当前用户密码
SET PASSWORD = PASSWORD('mypass');

--修改某用户的密码(只有root才能修改)
SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('mypass');

 

Mysql其实是把权限相关的信息储存在名为”mysql”的数据库中,下面是mysql自带的4个数据库的简介

数据库名 
information_schemainformation_schema提供了访问数据库元数据的方式。这就是information_schema的任务了,同时也解答了我们上一个问题。然而,又一个概念产生了,什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
performance_schema主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.5默认是关闭的,需要手动开启
mysql这个是mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
test测试库,没什么用。但是生产环境下建议把它删掉,因为test默认不受权限控制,别人可以随意进入该库添加一些垃圾数据,会影响到生产的环境

其中数据库”mysql”中,与权限有关的表分别是:

user、db、 tables_priv、columns_priv

分别对应 用户、库级别、表级别、字段级别的一些权限信息

 

 

事务

 

《网易云课堂DBA学习笔记 (一) 数据库基础》

 

⑴ 原子性(Atomicity)

  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。

⑵ 一致性(Consistency)

  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

  拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

⑶ 隔离性(Isolation)

  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

⑷ 持久性(Durability)

  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

 

3种隔离现象:

《网易云课堂DBA学习笔记 (一) 数据库基础》

 

数据库不同的隔离级别对应不同的 隔离现象

《网易云课堂DBA学习笔记 (一) 数据库基础》

特别注意的是,mysql默认的是可重复读,但在InnoDB引擎中,Mysql可避免幻读

 

基本语法很简单,略过。

两点值得注意

  • autocommit可以在session级别设置
  • DDL(数据定义语言,用来定义数据库对象:数据库,表,列等,例如创建、删除、修改)永远是自动提交的,无法回滚。且若创建一个事务后,未进行提交操作但进行了DDL操作,一样无法回滚
    原文作者:数据库基础
    原文地址: https://my.oschina.net/yejunxi/blog/1790583
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞