MySQL 优化系列 --1.基础操作
2016-12-25 11:32
591 查看
1.1 表复制 复制表结构 + 表数据 create table t2 select * from t1 ; //表结构完全相同时可用. 推荐使用 -1. 创建表结构 create table t2 like t1; -2. 复制表数据 insert into t2 select * from t1 ; //表结构相同 insert into t2 (name) select name from t1; //取部分列值
1.2 索引 -1. 创建索引 create index 注意: 不能创建主键索引 create index inx_name on t2(name) //创建索引 drop index inx_name on t2 //删除t2表的inx_name索引; show index from t2 //显示t2表的索引; alter table t2 ADD INDEX inx_name (name); // 用 alter 命令给 t2 表 name 列添加索引. 注意(非自增主键)可以用 alter 命令添加主键索引. alter table t2 drop INDEX inx_name; //用alter 命令删除 t2 表的 inx_name 索引.
1.3 视图 -1创建视图 视图: 可以看做,通过条件取出数据的中间表 , 可以做频繁查询的中间表, 注意: 如果视图查询依赖的表损坏,视图将发生错误. create view v_t2 as select name from t2 WHERE id >2 and id< 5 show TABLES //查看视图 SELECT * from v_t2 //查询视图 drop view v_t2; //删除视图
1.4 字符串函数 SELECT CONCAT("good"," boy") as boy; //连接字符串 SELECT LCASE("GOOD") AS LOW; //转成小写 SELECT UCASE("good") as UPPER; //转成大写 SELECT LTRIM(" good") as ltrim; //good 前端取空格 SELECT REPEAT("good",3) as good3; //重复3次good SELECT REPLACE("linux is very good","linux","java") as java; // java is very good 替换字符串 SELECT SUBSTRING("good",1,2) as go; //输出 go 截取字符串 SELECT CONCAT("老王","在隔壁") as wang; //输出 老王在隔壁 连接字符串
1.5 数字函数 SELECT CEILING(88.88); //输出 89 向上取整 SELECT FLOOR(88.88); //输出 88 向下取整 SELECT MAX(id) from t2 ; //输出最大值 ,聚合函数 SELECT SQRT(4) as two; //开平方 SELECT * from t2 ORDER BY RAND(); //随机排序, rand()返回0-1内的随机值
1.4 日期函数 SELECT CURDATE() as now_date //输出: 2016-12-25 显示当前日期 SELECT CURTIME() as now_time //输出:11:14:49 显示当前时间 SELECT NOW() as now //输出:2016-12-25 11:16:02 显示当前日期时间 SELECT UNIX_TIMESTAMP( CURDATE() ) as timestamp; //输出: 1482595200 显示当前日期的Unix时间戳的日期值. SELECT WEEK("2016-12-25"); //输出:52 显示当前date在一年中的第几周. SELECT YEAR("2016-12-25") //输出:2016 显示当前日期的年份 SELECT DATEDIFF("2016-12-31", "2016-12-25") //输出 6 显示2个日期的相差天数
1.5 预处理函数 -1:首先 : 修改语言定界符: \d // -2 prepare st from 'select * from t2 where id>?'; //定义预处理语句: 'select * from t2 where id>?' -3 set @i=1; //定义变量i= 1; -4 execute st using@i; //执行预处理语句, 使用变量i. 'select * from t2 where id>1' -5 // //因为修改了语言定界符号为"" // "".所以用 // 执行. -6 drop prepare st; //删除预处理语句. -7 //
1.6 事务函数 -1 set autocommit=0; //表引擎innodb支持事务. autocommit=0; 设置不自动提交 -2 savepoint p1; //保存还原点, 用于回滚(rollback) -3 delete from t2 where id = 1; //删除表t2中ID=1的列;用于测试回滚是否成功. -6 rollback to p1; -7 select * from t2; // 测试回滚是否成功. 必然是成功的哟!
1.7 存储函数 -1 \d // -2 create procedure p2() //创建存储 -3 begin -4 set @i=1; //设置变量值 -5 while @i<5 do //流控制函数 (循环函数) 注意: 主要应用流控制函数. 流控制函数将在下一篇写. -6 insert into t2 (name) values (concat("user"),@i)); //插入数据库语句 -7 set @i= @i+1; //设置变量自增 -8 end while; //结束循环 -9 end // //结束存储
-1 call p2(); //调用存储,执行循环插入数据库
-2 drop procedure p2; //删除存储函数
1.8 触发器 truncate t1 ; //擦除t1表,速度比delete快.尤其大数据量删除效果更显著. -1 create trigger tg_insert before insert on t1 for each row //当向t1表插入数据时 启动触发器. -2 begin -3 insert into t2(id) values (new.id) ; //t1表插入的id列的值 -4 end // -5 select * from t2 // //测试 t2 表 是否执行了 触发器的插入语句. 必然执行了呀.
-1 create trigger tg_delete before delete on t1 for each row //当t1表删除数据时 启动触发器. 同步删除 t2表的对应id 的列 -2 begin -3 delete from t2 where id = old.id; -4 end //
-1 create trigger tg_update before update on t1 for each row //当t1表更新触发t2表的更新 -2 begin -3 update t2 set id = old.id where id = old.id; -4 end //
show triggers //查看所有触发器.
相关文章推荐
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- PHP特级视频教程 笔记心得 第十五集 mysql调优,mysql优化 MySQL基础操作(一)
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- 网络安全系列之十八 MySQL基本操作(PHP注入基础)
- mysql基础操作、sql技巧和sql的常见优化
- PHP特级视频教程 笔记心得 第十六集 mysql调优,mysql优化 MySQL基础操作(一)
- MySQL参数优化及基础操作
- MySQL系列(十三):核心优化----基础
- mysql 开发基础系列1 表查询操作
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- 【mysql基础系列之二】基本操作
- php基础系列----9php通过mysql扩展操作mysql数据库
- PHP特级视频教程 笔记心得 第十七集 mysql调优,mysql优化 MySQL基础操作(一)
- MySQL参数优化及基础操作
- MySQL查询优化技术系列讲座之使用索引
- 转-数据库应用基础系列-第2章 并发操作的一致性问题 (1)
- [MySQL优化案例]系列 -- 试用TCMalloc
- [MySQL优化案例]系列 -- 用TIMESTAMP类型取代INT和DATETIME
- mysql 优化系列(一) Mysql数据库引擎性能测试
- MySQL查询优化系列讲座之调度和锁定