ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【MySQL的学习日记】 —— 第五天

2022-01-22 19:30:53  阅读:143  来源: 互联网

标签:语句 事务 表名 日记 索引 MySQL 第五天 主键


零 散 的 知 识 点 \color{pink}{零散的知识点} 零散的知识点

一、 板 块 一 \color{green}{板块一} 板块一

1.内连接与外连接的区别:
相对于内连接,外连接的几张表之间是存在主次关系的。【左外连接,左边的表是主表;右外连接,右边的表时主表】
2.select 语句可以一次插入多条数据,在values后跟多条数据即可,彼此之间用逗号分开。
3.可以通过将一个表的查询结果插入另一个表来完成表的快速复制。【属性列要相对应】
4.delete 语句一般用于删除表中的记录,但是不会清除在硬盘中的数据。这就导致了删除效率低,但是支持回滚。勿删之后通过回滚操作可完成数据恢复。【事务】

start transaction;
delect from 表名;
rollback;

5.truncate 语句是一种快速删除的语句,属于物理删除,不支持回滚。
语法格式:truncate table 表名
不能使用truncate语句删除单条记录,只能删除表中所有数据。


二、 板 块 二 \color{green}{板块二} 板块二

6.MySQL不支持check约束【检查约束】,只支持主键约束、外键约束、非空约束、唯一性约。
【primary key、foreign key、not null、unique】
7.我们可以通过将多个sql语句写道一个文本文档中,将后缀名改为“.sql”,然后在MySQL中,利用

source 文件地址;

同时执行多个sql语句。
8.表级约束条件可以对多个字段联合约束。例如:
···sql
unique(字段1,字段2,…,字段n) 代表这n个字段联合约束【这n个字段不能同时重复】
not null 只有列级约束,没有表级约束。
9.在MySQL中,如果一个表的某个列有非空和唯一性约束,就会默认将其转换为PRY key。

tno unique not null; //这两个约束之间无需加逗号也没有顺序的影响

10.主键可以为一个字段组成【单一主键】,也可以为多个字段的组合【复合主键】。对于一张表而言,主键约束语句只能有一条。
11.主键还可以分为自然主键和业务主键。

自然主键:主键值是一个自然数,与业务无关。【推荐使用】
业务主键:主键值和业务紧密相连。


三、 板 块 三 \color{green}{板块三} 板块三

12.auto_increment 代表从1开始的逐渐自加一的函数,可以利用在创建表的时候使用,这个属性列的属性值就为1~N。
13.MySQL有一个特有的术语——存储引擎。存储引擎术语表的一种存储方式。
14.在创建表时,在小括号外部通过engine关键字可指定存储引擎,通过charset关键字指定字符编码方式。
MySQL默认的存储引擎为innoDB,默认的字符编码方式为utf-8。【gbk代替简体中文】
15.查看MySQL支持哪些存储引擎:show engines \G;
InnoDB支持事务,所以是相对于其他数据库比较安全的数据库。


四、 事 务 \color{green}{事务} 事务

16.事务是一个完成的业务逻辑,也是一个最小的工作单元,一个事务中的语句要同时发生。【多条DML语句同时成功或失败】
17.只有数据操作语言(增删改)与事务(安全)有关。【DML语言】
18.MySQL支持默认提交(commit),一般情况下,当执行完一条DML语句后都会默认提交。通过rollback语句可以完成回滚,但是回滚只能回滚到上一次提交的位置。

可以通过开始事务语句,来关闭自动提交事务:start transaction;

mysql> insert into two values(1, 'xiaoming');
Query OK, 1 row affected (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from two;
Query OK, 1 row affected (0.00 sec)

mysql> select * from two;
Empty set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from two;
+----+----------+
| no | name     |
+----+----------+
|  1 | xiaoming |
+----+----------+
1 row in set (0.00 sec)

19.事务的四个特性:(ACID)

原子性:每个事务都是最小执行单位;
一致性:在一个事务中,所有操作同时执行成功或失败;
隔离性:并发事务之间相互隔离【多个用户同时对一张表进行操作】
持久性:事务提交后就是永久的,系统发生故障时也不会丢失提交的事务。

20.事务的隔离级别分为四个等级:

读未提交   read uncommit 【最低隔离级别】
读已提交   read commiy
重复读     repeatable read
序列化/串行化     serializable 【最高隔离级别】

(1)读未提交:事务A读取到事务B未提交的数据,称之为脏读现象,一般都是理论上存在,但一般的数据库都是从二级隔离级别起步【Dirty Read】
(2)读已提交:解决了脏读现象,事务A只能读取到B已提交的数据。
存在的问题:不可重复读取数据。但读到的数据都是真实的。
(3)重复读:当事务A开始之后,尽管事务B已经提交了,但是不会对事务A产生影响。缺点就是可能出现幻影,每次读到的数据都是幻像,数据不够真实。【MySQL默认隔离级别】
(4)序列化:解决了在此之前的所有问题,不能序列并行化【排队】。
每次读取的数据都是最真实的,但是效率是最低的。
21.查看默认隔离级别:select @@tx_isolation
修改隔离级别:set global transaction isolation level repeatable read;


五、 索 引 \color{green}{索引} 索引

22.索引的定义与功能:
索引就是一种加快检索表中数据的方法。
对于表的每一个字段都可以添加一条索引,索引可以提高查找效率。
23.创建索引:

create (unique) index 索引名  on 表名(列名);

MySQL中索引分为:普通索引、唯一性索引、主键索引。
为表添加索引:

alter table 表名 add (unique) index 索引名(属性列);
alter table 表名 add primary key (属性列);

24.查看索引

show index from 表名;

25.删除索引

drop index 索引名 on table;
alter table 表名 drop index 索引名;
alter table 表名 drop primary key ;

六·、 D B A 命 令 \color{green}{DBA命令} DBA命令

26.新建用户:

create user username indentified by 'password'
说明:username - 用户名  password - 密码

27.用户授权

grant all privileges on dbname.tbname to 
'username'@'login ip' identified by 'password' 
with grant option;
  1. dbname=*表示所有数据库
  2. tbname=*表示所有表
  3. login ip=%表示任何 ip
  4. password 为空,表示不需要密码即可登录
  5. with grant option; 表示该用户还可以授权给其他用户
privileges 包括一下权限:
对表中数据的增删改查 create、delete、update、select、insert
对表结构进行修改: alter、drop、index
特殊权限:all、usage

28.回收用户权限:

revoke privileges on dbname[.tbname] from username;

简而言之:revoke 权限 on 哪些表的哪些列 from 用户名


七、 导 入 与 导 出 \color{green}{导入与导出} 导入与导出

29.导入:

source sql脚本文件的地址

30.导出:

导出整个数据库:mysql dump 数据库名>sql脚本文件保存地址 用户及密码
导出数据库中的某张表:mysql dump 数据库名 表名> sql脚本文件保存地址 用户及密码
八、 数 据 库 的 三 范 式 \color{green}{数据库的三范式} 数据库的三范式

第一范式:有主键,具有原子性,字段不可分割
第二范式:完全依赖,没有部分依赖
第三范式:没有传递依赖
数据库设计尽量遵循三范式,但是还是根据实际情况进行取舍,有时可能会拿冗余换速度,最终用目的要满足客户需求。

标签:语句,事务,表名,日记,索引,MySQL,第五天,主键
来源: https://blog.csdn.net/qq_61323055/article/details/122633472

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有