Mysql优化初级

Mysql表复制

什么是mysql表复制?
复制mysql数据表。包括表的结构、数据、索引、默认值等


复制表结构

	create table tablename_1 like tablename ;
 
解析:
			tablename -->  被复制的表
			tablename_1  -->  复制的表

复制表数据

	create table tablename_1 select * from tablename ;

复制表结构和数据

	create table tablename_1 like tablename ;
	insert into tablename_1  select * from tablename ;

索引

什么是索引?
索引是一种帮助Mysql高效获取数据的数据结构

什么情况建立索引

  1. 频繁作为查询条件的字段
  2. 查询中与其他表关联的字段

什么情况不建立索引

  1. 频繁增删改的表
  2. 数据较少的表
  3. 数据重复且分布平均的表字段(重复太多索引意义不大)

索引分类

  1. 主键索引

  2. 唯一索引

    索引列的值必须唯一,但允许有空值。 如果是组合索引,则列值的组合必须唯一。

  3. 普通索引

    这是最基本的索引,没有任何限制。

  4. 全文索引

添加索引

	语法:alter table tablename add 索引类型 索引名称(字段名)
	
	alter table tablename add index index_name(name); 
	主键索引一般建表时都会设置为id
	alter table tablename add primary key(name);
	alter table tablename add unique unique_name(name);

删除索引

	语法: alter table tablename drop index 索引名称
	
	
	如果主键带有自增长,删除主键索引前必须取消自增长
	假设自增长字段为id
	alter table tablename change id id int;
	alter table tablename drop primary key;

查看索引

	show index from tablename

Mysql视图

什么是视图?
官方解释:视图是一种虚拟存在的表,一个逻辑表,本身不包含数据。作为一个select语句保存在数据字典中。
民间解释:执行定义好的查询的快捷方式(仅供参考)

视图的优点

  1. 简单
  2. 安全
  3. 数据独立

创建视图

	create view viewname as sql语句;
	
示范代码:
	create view sel_user as select * from user;
	
	show tables;
	
	select * from sel_user;	

删除视图

	drop view viewname;

查询视图

	show tables;

预处理

什么是mysql预处理?
个人解释:将一条反复执行的sql语句中动态变化的部分用占位符代替(?)

预处理的优点

  1. 安全
  2. 提高效率(重用性)

语法

创建预处理语句
	prepare prepare_name from 'sql语句';

删除预处理语句
	drop prepare prepare_name;

如何调用预处理语句?
	设置一个变量	set @i = 3;
	execute prepare_name using @i;

示范代码:
		prepare sel_id_name from 'select * from user where id = ?'; 
		set @i=3;
		EXECUTE sel_id_name using @i;

事务

使用事务的前提:表引擎必须为innodb

什么是事务

官方解释:作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

四大特性

原子性

一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性(稳定性)

在事务开始之前和事务结束以后,数据库的完整性没有被破坏。写入的资料必须完全符合预设规则,否则事务撤回

隔离性

多个并发事务同时对其数据进行读写和修改,如果一个事务处理的结果 影响了其他事务,则其他事务撤回。

持久性(可靠性 )

事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。(innodb表驱动会利用日志文件重构修改)

关键字

  1. 提交 commit
  2. 回滚 rollback

使用 commit和rollbacj开始和结束工作


知识点补充

查看表结构

	desc tablename;

获取创建数据表语句

	show create table tablename;
	
	结果:
			CREATE TABLE `t1` (
 				 `id` int(12) unsigned NOT NULL AUTO_INCREMENT,
				  `name` char(15) DEFAULT NULL,
				  `sex` char(1) DEFAULT NULL,
				  `age` int(5) DEFAULT NULL,
				  PRIMARY KEY (`id`)
			) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4

如何修改表结构

	alter table tablename change 原字段名 新字段名 数据类型 [primary key | default | not null | ...];

博客来自 杨甩甩
转载请说明出处 盗版必究

猜你喜欢

转载自blog.csdn.net/KinCae/article/details/90676314