MySQL的表复制
复制表结构
mysql> create table 目标表名 like 原表名;
复制表数据
mysql> insert into 目标表名 select * from 原表名; /* 求目标表存在*/
数据表的索引操作
PRIMARY, INDEX, UNIQUE 这3种是一类
PRIMARY 主键。 就是 唯一 且 不能为空。
INDEX 索引,普通的
UNIQUE 唯一索引。 不允许有重复。
FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车
但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
// 使用alter创建
alter table user add index index_name(字段名)
alter table user add unique unique_name(字段名)
alter table user add primary key(字段名)
// 使用 alter删除索引
alter table user drop index index_name /*删除普通索引和唯一索引*/
alter table user drop primary key /* 删除主键(必须先删除自动递增)*/
// 修改表结构:
alter table user add aaa int after bbbb;
alter table user modify username varchar(20);
//显示索引信息
//你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
mysql> SHOW INDEX FROM table_name; \G
Non_unique: 0 /*索引不能包括重复值,则为0*/
Key_name: unique_name /*索引名称*/
Seq_in_index: 1 /* 索引的序列号 从1开始*/
Column_name: tid /**/
Collation: A /*存储的索引方式 A为升序 Null表示无分类*/
Cardinality: 12 /*表示索引唯一值得估计数*/
Sub_part: NULL /*如果列只是被部分地编入索引,则为被编入索引的字符的数目。
如果整列被编入索引,则为NULL。*/
Packed: NULL /*关键字压缩,如果没有压缩为空*/
Null: YES /*如果列包含NULL的值 就为yes*/
Index_type: BTREE /*索引方法(BTREE, FULLTEXT, HASH, RTREE)*/
MySQL视图
关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。
对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。
视图保存的并不是真实的数据,而是一张虚拟的表,不占用内存空间,只是保存了计算需要的sql语句,每次调用的的时候都会自己调用封存的sql语句,从而提高了重用性。并且视图显示的内容会跟原文件同步。
视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时,其实,是在更新基本表中的数据,如果对视图中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作
创建视图:
mysql> create view v_t1 as select * from t1 where id>4 and id<11;
Query OK, 0 rows affected (0.00 sec)
view视图的帮助信息:
mysql> ? view
ALTER VIEW /*语句修改视图*/
CREATE VIEW
DROP VIEW
查看视图:
mysql> show tables;
UPDATE语句更新视图 :
UPDATE view_stu SET a=100;
通过视图变更数据:
INSERT INTO v_order(pid,pname,price) VALUES('p01','秋神','34');
删除视图v_t1:
mysql> drop view v_t1;