MySQL数据库

一,MySQL数据库初体验

1,数据库的基本概念

1.数据
	1.描述事物的符号记录
	2.包括数字、文字、图行、图像、档案记录等
	3.以“记录”形式按统一的格式进行存储
2.表
	1.将不同的记录组织在一起
	2.用来存储具体数据
3.数据库
	1.表的集合,是存储数据的仓库
	2.以一定的组织方式存储的相互有关的数据集合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51tkTcTf-1604329873822)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201029155348921.png)]

4.数据库管理系统(DBMS)
	是实现对数据库资源有效组织、管理和存取的系统软件
5.数据库系统
	1.是一个人机系统、由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
	2.用户可以通过DBMS或应用程序操作数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zwgtAid2-1604329873825)(C:\Users\谭文龙\Desktop\image-20201029160416050.png)]

2,数据库系统的发展历程

1.第一代数据库
	1.自20世纪60年代起,第一代数据库系统问世
	2.是层次模型与网状模型的数据库系统
	3.为统一管理和共享数据提供了有力的支撑
2.第二代数据库
	1.20世纪70年代初,第二代数据库——关系型数据库开始出现
	2.20世纪80年代初,IBM公司的关系型数据库系统DB2问世,开始取代层次与网状模型的数据库
	3.到目前为止,关系型数据库系统仍占领数据库应用的主要地位

3,当今主流数据库介绍

1、SQL Server(微软公司产品)
	1、面向Windows操作系统
	2、简单、易用
2、Oracle (甲骨文公司产品)
	1、面向所有主流平台
	2、安全、完善、操作复杂
3、DB2(IBM公司产品)
	1、面向所有主流平台
	2、大型、安全、完善
4、MySQL(甲骨文公司收购)
	免费、开源、体积小

4,关系型数据库

1、关系型数据库系统是基于关系模型的数据库系统
2、关系模型的数据库结构使用简单易懂的二维数据表
3、关系模型可用简单的“实体-关系”   图1来表示
4、图1中包含了实体(数据对象)、关系和属性三个要素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beBRtfph-1604329873829)(C:\Users\谭文龙\Desktop\image-20201029161859671.png)]

5、实体
	也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户、银行账户等
6、属性
	实体所具有的某一特性,一个实体可以有多个属性,如“银行客户”实体集中的每个实体均具有姓名、	住址、电话等属性
7、联系
	实体集之间的对应关系称为联系,也成为关系,如银行客户和银行账户之间存在“储蓄”的关系
8、所有实体与实体之间联系的集合构成一个关系型数据库
9、关系型数据库的存储结构是二维表格
10、在每个二维表中
	1、每一行称为一条记录,用来描述一个对象的信息
	2、每一列称为一个字段,用来描述对象的一个属性

5,关系型数据库的应用

1.关系型数据库:
	Oracle,MySQL
	SQLServer、Sybase
	Informix、access
	DB2、FoxPRO
2.应用举例:
	12306用户信息系统
	淘宝账户系统
 	联通手机号信息系统
	银行用户账户系统
	网站用户信息系统

6,非关系型数据库介绍

1、非关系型数据库也称为NoSQL(Not Only SQL)
2、存储数据不以关系模型为依据,不需要固定的表格式
3、非关系型数据库的优点
	1、数据库可高并发读写
	2、对海量数据高效率存储与访问
	3、数据库具有高扩展性与高可用性
4、常用的非关系型数据库:Redis、mongoDB等

7,MySQL数据库介绍

1、这是一款深受欢迎的开源关系型数据库
2、Oracle旗下的产品
3、遵守GPL协议,可以免费使用与修改
4、特点
	1、性能卓越、服务稳定
	2、开源、无版权限制、成本低
	3、多线程、多用户
	4、基于C/S(客户端/服务器)架构
	5、安全可靠
5、MySQL商业版与社区版
	1、MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
	2、MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用
	3、两者区别
		商业版组织管理与测试环节更加严格,会比社区版更稳定
		商业版不遵守GPL,社区版遵从GPL可以免费使用
		商业版可获得7*24小时的服务,社区版则没有

8,MySQL产品阵营

1、第一阵营:5.0-5.1阵营,可说是早期产品的延续
2、第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
3、第三阵营:6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发
下载地址:http://www.dev.mysql.com/downloads

二,数据库管理

1.查看数据库信息

[root@server ~]# mysql -uroot -pabc123	#登录数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |		#定义访问数据库单元数据的方式。数据库名和表名,列的数据类型,访问权限等。
| auth               |
| bbs                |
| mysql              |		#核心数据库,负责存储数据库用户、权限、关键字等用户自己需要使用的控制和管理信息。
| performance_schema |		#数据库的性能参数,存储引擎等。
| sys                |		#sys系统库下包含许多试图,它们以各种方式对performance_schema表进行聚合计算展示。
| tanwenlong         |
+--------------------+
7 rows in set (0.00 sec)

2.查看当前数据库中有哪些表

mysql> use mysql;		#use 数据库名;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;		#查看数据库中的表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

3.查看表的结构

mysql> use mysql;
mysql> describe  user;

4.SQL语句概述

1、SQL语言
	1、Structured Query Language的缩写,即结构化查询语言
	2、关系型数据库的标准语言
	3、用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能
2、SQL分类
	1、DDL(Data Definition Language)数据定义语言:用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP
	2、DML(Data Manipulation Language)数据操纵语言:用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE
	3、DQL(Data Query Language)数据查询语言:用来查询数据中的数据,如SELECT
	4、DCL(Data Control Language)数据控制语言:用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE

5.DDL(Data Definition Language)数据定义语言

5.1.创建新的数据库和新的表

mysql> create database twl;		#CREATE DATABASE 数据库名
mysql> use twl;
mysql> create table users(name char(26) not null,passwd char(36) default'123456',primary key(name));		#CREATE TABLE 表名(字段定义......)

5.2删除一个数据表

mysql> drop table twl.users;

5.3删除一个数据库

mysql> drop database twl;

6.DML(Data Manipulation Language)数据操纵语言

6.1创建数据库与数据表

mysql> create database twl;
Query OK, 1 row affected (0.00 sec)

mysql> use twl;
Database changed
mysql> create table users(name char(26) not null,passwd char(36) default'123456',primary key(name));
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+---------------+
| Tables_in_twl |
+---------------+
| users         |
+---------------+
1 row in set (0.00 sec)

mysql> describe users;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| name   | char(26) | NO   | PRI | NULL    |       |
| passwd | char(36) | YES  |     | 123456  |       |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

6.2插入数据记录

INSERT INTO 表名(字段1,字段2…) VALUES(字段1的值,字段2的值…)

mysql> use twl;
mysql> insert into users values('zhangsan',default);
mysql>  insert into users(name,passwd) values('lisi','123456');

6.3查询数据记录

SELECT 字段名1,字段名2,… FROM 表名 WHERE 条件表达式

mysql> select * from twl.users;
+----------+--------+
| name     | passwd |
+----------+--------+
| lisi     | 123456 |
| zhangsan | 123456 |
+----------+--------+
2 rows in set (0.00 sec)
mysql> select name,passwd from twl.users where name='zhangsan';		#单独查询张三

6.4修改数据记录

UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式

mysql> update twl.users set passwd=123123 where name='zhangsan';

6.5修改数据库密码

方法一:
mysql> update mysql.user set authentication_string=PASSWORD('123456') where user='root';
mysql> flush privileges;
方法二:
[root@server ~]# mysqladmin -u root -p'123456' password 'abc123'
方法三:
mysql> SET PASSWORD = PASSWORD('newpass'); //root用户
mysql> SET PASSWORD FOR 用户 = PASSWORD(‘newpass');
忘记密码:
vi /etc/my.cnf
[mysqld] 
末尾添加
skip_name_resolve
skip_grant_tables
bind-address=0.0.0.0
systemctl restart mysqld

6.6删除数据库的记录

DELETE FROM 表名 WHERE 条件表达式

mysql> delete from twl.users where name='zhangsan';
mysql> select * from twl.users;

7.数据表的高级操作

7.1清空表

mysql> delete from twl.users;		#DELETE语句可以通过WHERE对要删除的记录进行选择。数据没了,结构还在。
mysql> truncate table twl.users;	#TRUNCATE TABLE将删除表中的所有记录。数据没了,结构还在。

7.2创建临时表

临时建立的表,用于保存一些临时数据,不会长期存在

mysql> CREATE TEMPORARY TABLE `lt`(`id` int(10) NOT NULL AUTO_INCREMENT,`ame name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(10) NOT NULL,PRIMARY KEY (id))ENGINE=InnoDB  DEFAULT COLLATE=utf8;		#TEMPORARY:临时,AUTO_INCREMENT:自加一,CHARACTER SET utf8字符集设置utf8,COLLATE utf8_bin NOT NULL:编码设置二进制编码,DEFAULT COLLATE=utf8:默认字符集
mysql> INSERT INTO lt(name,level) VALUES('aa',10);
mysql> select * from lt; 	#临时建立,退出删除,在show tables;看不到

7.3克隆表

LIKE方法:

从ttt完整复制结构生成test1表,再导入数据

mysql> create table test1 like ttt;
mysql> insert into test1 select * from ttt;	#插入信息

SHOW CREATE TABLE方法:

先查看bbb表完整结构,根据此结构创建名字不同结构相同的表test2,再导入数据

mysql> show create table bbb\G
mysql> create table test2("id" int(20) NOT NULL AUTO_INCREMENT,   "name" varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,   "level" int(20) NOT NULL,   PRIMARY KEY ("id") ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
mysql>insert into test2 select * from bbb;

7.4数据库用户授权

语法:GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 IDENTIFIED BY ‘密码’

mysql> insert into users(name,passwd) VALUES('lisi',PASSWORD'123123');
mysql> GRANT select ON twl.users TO 'lisi'@'localhost' IDENTIFIED BY '123456';

7.5查看用户权限

语法:SHOW GRANTS FOR 用户名@来源地址

mysql> SHOW GRANTS FOR 'lisi'@'localhost';
mysql> exit
mysql -ulisi -p 123456

7.6撤销用户的权限

语法:REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址

mysql> REVOKE all ON twl.users FROM 'lisi'@'localhost';

三,MySQL索引,事务与存储引擎

1.数据库索引

1.是一个排序的列表,存储着索引值和这个值所对应的物理地址,相当于一本书的目录
2.无须对整个表进行扫描,通过物理地址就可以找到所需数据
3.是表中一列或者若干列值排序的方法
4.需要额外的磁盘空间

2.索引的作用

1.数据库利用各种快速定位技术,能够大大加快查询速率
2.当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度
3.可以降低数据库的IO成本,并且还可以降低数据库的排序成本
4.通过创建唯一性索引保证数据表数据的唯一性
5.可以加快表与表之间的连接
6.在使用分组和排序时,可大大减少分组和排序时间

3.char和varchar的区别

1.char的长度是不变的,而varchar的长度是可变的
	字段b:类型char(10)		值为:abc	存储为:abc			(abc+7个空格)
	字段d:类型varchar(10) 	值为:abc	存储为:abc		(自动变为3个的长度)
2.超出长度自动截取
	字段c:类型char(3)		值为:abcdefg	存储为:abc (defg自动删除)
	字段e:类型varchar(3)	值为:abcdefg	存储为:abc(defg自动删除)
3.varchar(10)和char(10),都表示可存10个字符,无论存放的是数字,字母还是UTF8汉字(每个汉字3字节),都可以存放十个
4.	char最多可以存放255个字符
    varchar最大长度为65535个字节,varchar可存放的字符跟编码有关
    字符类型若为gbk,每个字符最多占2字节,最大长度不能超过32766个字符
    字符类型若为utf8,每个字符最多占3字节,最大长度不能超过21845个字符
    UTF-8:一个汉字=3个字节
    GBK:一个汉字=2个字节
5.char和varchar的最大长度限制是MySQL规定的

4.索引的分类

1.普通索引

​ 1.最基本的索引,没有唯一性之类的限制

创建普通索引的方式

创建表结构时创建
mysql> create table user(id int(4) not null,name char(48) not null,age int(3) not null,sex varchar(36) not null,primary key (name),index index_id (id));
mysql> show index from user;	#查看索引
直接创建索引
mysql> create index index_name on user(name);
mysql> show index from user;
修改表结构方式添加索引
mysql> alter table user add index index_age(age);
mysql> show index from user;

2.唯一性索引

​ 1.与“普通索引”基本相同

​ 2.与普通索引的区别时索引列的所有值只能出现一次,即必须唯一

创建唯一索引的方式

直接创建索引
mysql> create unique index index_name on user(name);	#如果创建的索引存在,需要先删除
mysql> show index from user;
修改表结构方式添加索引
mysql> alter table user add unique index_name(name);
mysql> show index from user;

3.主键索引

​ 1. 是一种特殊的唯一索引,指定为“PRIMARY KEY”

​ 2.一个表只能有一个主键,不允许有空值

创建主键索引的方式

mysql> create table test(id int(4) not null,name char(20) not null,age int(3) not null,primary key(id));

4.查看索引

mysql> show index from 表名;
mysql> show keys from 表名;

5.删除索引

 mysql> drop index 索引名 on 表名;
 mysql> alter table 表名 drop index 索引名;

6.组合索引

​ 1.可以是单列上创建的索引,也可以是在多列上创建的索引

​ 2.最左原则,从左往右依次执行

创建组合索引的方式

mysql> create table users(name varchar(9), age int(3),sex tinyint(1),index users(name,age,sex));
mysql> show index from users;

7.全文索引

​ 1.MySQL从3.23.23版开始支持全文索引和全文检索

​ 2.索引类型为FULLTEXT

​ 3.可以在CHAR、VARCHAR或者TEXT类型的列上创建

直接创建索引

mysql> create index index_id on user(id);
mysql> show index from user;

修改表结构方式添加索引

mysql> alter table user add index index_age(age);
mysql> show index from user;

8.扩展

两张表之间建立内联

mysql> create table test1(id int(10) not null auto_increment,name varchar(64) not null,score int(3) not null,hobby int(2),primary key(id));
mysql> insert into test1(id,name,score,hobby) values(1,'zhangsan',80,2),(2,'lisi',81,3),(3,'wangwu',88,1);
mysql> select * from test1;
mysql> create table aihao(id int(10) primary key,aihao_name varchar(40) not null);
mysql> insert into aihao(id,aihao_name) values(1,'看书'),(2,'聊天'),(3,'美术');
mysql> select * from aihao;
mysql> select * from test1 inner join aihao on test1.hobby=aihao.id;
+----+----------+-------+-------+----+------------+
| id | name     | score | hobby | id | aihao_name |
+----+----------+-------+-------+----+------------+
|  3 | wangwu   |    88 |     1 |  1 | 看书       |
|  1 | zhangsan |    80 |     2 |  2 | 聊天       |
|  2 | lisi     |    81 |     3 |  3 | 美术       |
+----+----------+-------+-------+----+------------+
3 rows in set (0.00 sec)
mysql> select test1.name,aihao.aihao_name from test1 inner join aihao on test1.hobby=aihao.id;
+----------+------------+
| name     | aihao_name |
+----------+------------+
| wangwu   | 看书       |
| zhangsan | 聊天       |
| lisi     | 美术       |
+----------+------------+
3 rows in set (0.00 sec)
mysql> select t.name,a.aihao_name from test1 t inner join aihao a on t.hobby=a.id;
+----------+------------+
| name     | aihao_name |
+----------+------------+
| wangwu   | 看书       |
| zhangsan | 聊天       |
| lisi     | 美术       |
+----------+------------+
3 rows in set (0.00 sec)

建立索引视图,相当于Linux中的软链接

mysql> create view view_test as select t.name,a.aihao_name from test1 t inner join aihao a on t.hobby=a.id;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from view_test;
+----------+------------+
| name     | aihao_name |
+----------+------------+
| wangwu   | 看书       |
| zhangsan | 聊天       |
| lisi     | 美术       |
+----------+------------+
3 rows in set (0.00 sec)
mysql> insert into test1(id,name,score,hobby) values(4,'zhaoliu',99,2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from view_test;
+----------+------------+
| name     | aihao_name |
+----------+------------+
| zhangsan | 聊天       |
| lisi     | 美术       |
| wangwu   | 看书       |
| zhaoliu  | 聊天       |
+----------+------------+
4 rows in set (0.00 sec)

5.创建索引的原则依据

1、表的主键、外键必须有索引
2、记录数超过300行的表应该有索引
3、经常与其他表进行连接的表,在连接字段上应该建立索引
4、唯一性太差的字段不适合建立索引
5、更新太频繁的字段不适合建立索引
6、经常出现在where子句中的字段,特别是大表的字段,应该建立索引
7、索引应该建立在选择性高的字段上
8、索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引

6.事务的概念

1、是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行
2、是一个不可分隔的工作逻辑单元,在数据库系统上执行并发操作时,事务时最小的控制单元
3、适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等
4、通过事务的整体性以保证数据的一致性
5、事务的特点:
1、原子性
    事务是一个完整的操作,事务的个元素是不可分的
    事务中的所有元素必须作为一个整体提交或回滚
    如果事务中的任何元素失败,则整个事务将失败
2、一致性
    当事务完成时,数据必须处于一致状态
    在事务开始前,数据库中存储的数据处于一致状态
    在正在进行的事务中,数据可能处于不一致的状态
    当事务成功完成时,数据必须再次回到已知的一致状态
3、隔离性
    对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
    修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据
4、持久性
    指不管系统是否发生故障,事务处理的结果都是永久的
    一旦事务被提交,事务的效果会被永久地保留在数据库中
6、事务控制语句
	1、MySQL事务默认是自动提交的,当SQL语句提交时事务便自动提交
	2、事务控制语句
	BEGIN或START TRANSACTION
	COMMIT
	ROLLBACK
	SAVEPOINT identifier
	RELEASE SAVEPOINT identifier
	ROLLBACK TO identifier
	SET TRANSACTION
7、事务的控制方法
事务处理命令控制事务
	BEGIN:开始一个事务
	COMMIT:提交一个事务
	ROLLBACK:回滚一个事务
使用set命令进行控制
    set autocommit=0:禁止自动提交
    set autocommit=1:开启自动提交
事务的操作
1 mysql> begin; #开始事务
2 mysql> insert into userq1(id,name,score,hobby) values(5,'yy',80,2);
3 mysql> rollback; #回滚
4 mysql> commit; #提交

7.存储引擎概念介绍

1、MySQL中的数据用各种不同的技术存储文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎

2、存储引擎时MySQL将数据存储在文件系统中的存储方式或者存储格式

3、MySQL常用的存储引擎

1 MyISAM
2 InnoDB

4、MySQL数据库中的组件,负责执行实际的数据I/O操作

5、MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储

8.MyISAM的介绍

1、MyISAM不支持事务,也不支持外键
2、访问速度快
3、对事务完整性没有要求
4、MyISAM在磁盘上存储成三个文件
    1 .frm文件存储表定义
    2 数据文件的扩展名为.MYD(MYDATA)
    3 索引文件的扩展名是.MYI(MYIndex)
5、表级锁定形式,数据在更新时锁定整个表
6、数据库在读写过程中相互阻塞
	1、会在数据写入的过程阻塞用户数据的读取
	2、也会在数据读取的过程中阻塞用户的数据写入
7、数据单独写入或读取,速度过程较快且占用资源相对少
8、MyISAM支持的存储格式
	1、静态表
	2、动态表
	3、压缩表
9、MyISAM适用的生产场景举例
	1、公司业务不需要事务的支持
	2、单方面读取或写入数据比较多的业务
	3、MyISAM存储引擎数据读写都比较频繁场景不适合
	4、使用读写并发访问相对较低的业务
	5、数据修改相对较少的业务
	6、对数据业务一致性要求不是非常高的业务
	7、服务器硬件资源相对比较差

9.InnoDB的介绍

1、InnoDB特点介绍
	1、支持4个事务隔离级别
	2、行级锁定,但是全表扫描仍然会是表级锁定
	3、读写阻塞与事务隔离级别相关
	4、能非常高效的缓存索引和数据
	5、表与主键以簇的方式存储
	6、支持分区、表空间、类似Oracle数据库
	7、支持外键约束,5.5前不支持全文索引,5.5后支持全文索引
	8、对硬件资源要求还是比较高的场合
2、InnoDB适用生产场景分析
	1、业务需要事务的支持
	2、行级锁定对高并发有很好的适用能力,但需要确保查询是通过索引来完成
	3、业务数据更新较为频繁的场景,如:论坛,微博等
	4、业务数据一致性要求较高,如:银行业务
	5、硬件设备内存较大,利用InnoDB较好的缓存能力来提高内存利用率,减少磁盘IO的压力

3、企业选择存储引擎依据
	1、需要考虑每个存储引擎提供的核心功能及应用场景
	2、支持的字段和数据类型
		所有引擎都支持通用的数据类型
		但不是所有的引擎都支持其它的字段类型,如二进制对象
	3、锁定类型:不同的存储引擎支持不同级别的锁定
		表锁定
		行锁定
	4、索引的支持
		建立索引在搜索和恢复数据库中的数据时能显著提高性能
		不同的存储引擎提供不同的制作索引的技术
		有些存储引擎根本不支持索引
	5、事务处理的支持
		提高在向表中更新和插入信息期间的可靠性
		可根据企业业务是否要支持事务选择存储引擎

修改存储引擎

方法一:alter table修改
mysql> alter table 库名 engine=MyISAM;
方法二:修改my.cnf配置文件,指定默认存储引擎并重启服务
vim my.cnf
default-storage-engine=InnoDB
方法三:create table创建表时指定存储引擎
mysql> create table engine Test(id int) engine=MyISAM;

四,MySQL备份与恢复

1.数据备份的重要性

1.在生产环境中,数据的安全性至关重要
2.任何数据的丢失都可能产生严重的后果
3.造成数据丢失的原因
	1.程序错误
	2.人为操作错误
	3.运算错误
	4.磁盘故障
	5.灾难(如火灾,地震)和盗窃
举例:携程宕机的损失为平均每小时106.48美元

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值