一.MySql介绍
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立。
1.1数据库简介
数据库是指长期在计算机内,有组织,可共享的,大量数据的集合。数据是按照特定的数据模型来组织,存储在数据库中。
1.1.1好处
- 可以将数据持久性的存储进本地,需要用到的时候又用相应的操作把数据拿出来,不需要重新创建数据,省去了很多时间和空间
- 由于是有组织的,按照一定数据模型来进行存储,方便管理数据,也实现简单的结构化的查询
1.1.2相关概念
- DB(database):数据库,保存一组有组织的数据的容器。
- DBMS(Database Management System)**:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据。
- 常见DBMS有:MySQL、Oracle、DB2、SqlServer等。
- SQL**:结构化查询语言,用于和数据库通信的语言。
对应的关系:DBMS——>SQL——>DB
2.1SQL语言分类
DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)。
DML(Data Manipulate Language):数据操纵语言,用于添加,修改,删除,修改数据库记录,并检查数据完整性。
DDL(Data Define Language):数据定义语言,用于库和表的创建,修改,删除。
TCL(Data Control Language):数据事务语言。
二.MySql安装以及相关事项
2.1安装
- 打开MySQL下载地址:
https://dev.mysql.com/downloads/windows/installer/5.7.html
点击Download,弹出页面,选择No thanks,开始下载
- 下载完成后,双击mysql-installer-community-5.7.24.0.msi文件进行安装,如有如下提示
说明.NET4.5.2未安装 需要安装此插件 点击报错窗口网址 直接安装即可
安装完毕,重新点击MySQL安装程序
3. 勾选I accept 然后 Next
-
选择Custom表示自定义安装,然后Next
-
根据电脑系统位数,点击中间的箭头
选择安装路径,尽量不要安装到C盘,然后Next
- 点击Excute,然后Next
默认选择Standalone MySQL Server,点击Next
选择Server Computer,默认端口号为3306,点击Next
- 设置MySQL密码,建议root,点击Next
服务器名称无需更改,点击Next
点击Excute,完成安装
2.2相关事项
2.2.1 MySQL服务的启动和停止
方式一:计算机——右击管理——服务——MySQL
方式二:通过管理员身份运行cmd命令提示行 net start
mysql(启动服务) net stop mysql(停止服务)
2.2.2 MySQL服务的登录和退出
方式一:通过MySQL自带的客户端,只限于root用户
方式二:通过cmd命令提示行关闭,未配置MySQL环境变量,需在MySQL安装的bin下启动cmd
登录:mysql 【-h主机名 -P端口号 】-u用户名 -p密码
退出:exit或ctrl+C
2.2.3 MySQL的语法规范
不区分大小写
使用" ; "结尾
各个子句一般分行写
关键字不能缩进也不能分行
合理使用缩进
注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
三.数据库引擎
3.1什么是数据库引擎?
它是数据库底层的软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。
3.2 分类以及说明
常用的存储引擎
InnoDB
InnoDB在MySQL 5.5后成为默认索引
支持事务处理
支持外键
支持崩溃修复能力和并发控制(MVCC),但不支持全文索引。
mvcc全称multi version concurrent control(多版本并发控制),mysql把每个=操作都定义成一个事务,每开启一个事务,系统的事务版本号自动递增。每行记录都有两个隐藏列:创建版本号和删除版本号。
使用场景:如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM
MyISAM引擎是MySQL 5.1及之前版本的默认引擎
不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁
不支持事务
不支持外键
不支持崩溃后的安全恢复,在表有读取查询的同时,支持往表中插入新纪录
支持BLOB和TEXT的前500个字符索引
支持全文索引,支持延迟更新索引,极大提升写入性能,对于不会进行修改的表,支持压缩表,极大减少磁盘空间占用
插入数据快,空间和内存使用比较低。
使用场景:如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
四.补充知识点(锁机制)
MySQL的InnoDB锁机制分为表级锁和行级锁
4.1行级锁
行级锁中有共享锁和排它锁。
4.1.1共享锁
共享锁又称为读锁,简称为S锁,它是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能改。
案例:select * from t_user where id =10 lock in share mode;
4.1.2排它锁
排它锁又称为写锁,简称为X锁,排它锁就是不能与其他锁并存。如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁。
案例:select * from t_user where id =10 for update;
MySQL InnoDB引擎默认的修改数据语句,update,delete,insert都会自动给涉及到的数据加上排他锁,select语句默认不会加任何锁类型。
4.1.3 格式
共享锁:SELECT … LOCK IN SHARE MODE;
排他锁:SELECT … FOR UPDATE;
4.2表级锁
意向锁是 InnoDB 自动加的,不需要用户干预。
对于INSERT、UPDATE和DELETE,InnoDB 会自动给涉及的数据加排他锁;对于一般的SELECT语句,InnoDB 不会加任何锁,事务可以通过以下语句显式加共享锁或排他锁。
4.2.1意向共享锁
意向共享锁(IS):表示事务准备给数据行加入共享锁,也就是说一个数据行加共享锁前必须先取得该表的IS锁,表明在加锁之前,都需要取得意向共享锁。
4.2.2意向排他锁
意向排他锁(IX):类似上面,表示事务准备给数据行加入排他锁,说明事务在一个数据行加排他锁前必须先取得该表的IX锁。
4.3优劣
上述所述:
表明在加锁之前,都需要取得该种类的意向共享锁。
表锁的优势:开销小;加锁快;无死锁
表锁的劣势:锁粒度大,并发处理能力低行锁的劣势:开销大;加锁慢;会出现死锁
行锁的优势:锁的粒度小,处理并发的能力强