1 mysql 表复制 复制结构 + 数据
把表t1 内容复制到 t2
方式1 : insert into t2 select * from t1
缺点:只复制了数据, 并且错误
方式2:create table t2 like t1; (复制结构) insert into t2 select * from t1 (复制数据)
拷贝一部分: insert into t2 select 列名 from t1
2 mysql 索引
创建,删除索引
方式1 create 创建普通,unique 索引(列值不能重复), drop 删除
CREATE INDEX 索引名 ON 表名(列名); DROP INDEX 索引名 ON 表名;
CREATE UNIQUE INDEX 索引名 ON 表名(列名); DROP INDEX 索引名 ON 表名;
缺点:不能创建主索引
方式2:alter table 创建普通索引, unique索引 primary key 索引(只能有一个)
ALTER TABLE 表名 ADD INDEX 索引名(列名); ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 ADD UNIQUE INDEX 索引名(列名); ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 ADD PRIMARY KEY(列名); ALTER TABLE 表名 DROP PRIMARY KEY;(先删除列的自增属性,有自增属性的默认主键)
查看索引 show index from 表名
3 mysql 视图
视图是原表的一个映射,如果原表变,视图会根据创建视图的条件变化, 而复制表不会变
创建视图 create view 视图名 as select * from 表名 where 条件
查看视图 show tables
删除视图 drop view 视图名
4 mysql 预处理语句 不用每次请求数据库连接
创建 PREPARE 语句名 FROM ‘语句’'; PREPARE stm FROM 'select * from t1 where id=?';
创建变量 SET @变量名 = 值; SET @i = 1;
执行 EXECUTE 语句名 USING @变量名; EXECUTE stm USING @i;
删除 DROP PREPARE 语句名;
5 mysql 事务处理
关闭自动提交功能 SET autocommit=0; 有的存储引擎不支持事务,
创建还原点 savepoint 还原点名
回滚到还原点 rollback to 还原点名
6 mysql 存储
存储就是一个函数
创建存储 create procedure 存储名()
执行存储 call 存储名()
查看存储信息 SHOW PROCEDURE STATUS;
查看存储具体信息 SHOW CREATE PROCEDURE 存储名;
7 mysql 触发器
查看触发器 show triggers;
更改t1时, t2也更改
CREATE TRIGGER tg1 BEFORE UPDATE ON t1 FOR EACH ROW
BEGIN
UPDATE t2 SET NAME = new.name WHERE NAME = old.name;
END
8 删除表
方法1 delete from 表名
缺点:自动增长没有保留 需要 alter 表名 auto_increment = 1;
方法2
truncate table 表名 auto_increment 恢复为1