Mysql 操作技巧

  1. 复制表结构 + 表数据
    Mysql> create tables t2 like t1;
    Mysql> insert into t2 select * from t1; 
  2. mysql 索引
    a、Alert Table 用来创建普通索引、Unique 唯一索引 (当前列数值不可重复) 或 Primary Key 主键索引
    Mysql> alter table table_name add index index_name(column_list);
    Mysql> alter table table_name add Unique(column_list);
    Mysql> alter table table_name add Primary Key(column_list);

    b、creat index (不可处理主键索引)
    Mysql> create index index_name on table_name(column_list);
    Mysql> create Unique index index_name on table_name(column_list);

    c、drop index(不可处理主键索引)
    Mysql> drop index index_name on table_name;

    d、alter table drop
    Mysql> alter table table_name drop index index_name;
    Mysql> alter table table_name drop primary key;

  3. mysql 视图
    创建视图 (视图可根据主表实时更新)
    Mysql> create view v_t1 as select * from t1 where id>4 and id <11;
    Mysql> show tables;
    Mysql> show create view v_t1;
    Mysql> drop view v_t1;

  4. Mysql 内置函数
    concat ("string1","string2") // 链接字符串
    lcase(STRING) // 转换小写
    ucase(string) // 转换大写
    length(string) //string 长度
    ltrim(string) // 去除 string 前面空格
    rtrim(string) // 去除 string 后面空格
    repeat(string,count) // 重复 string count 次
    replace(str,search_str,replace_str) //str 中用 replace_str 替换 search_str

  5. mysql 预处理语句
    设置 stmt1 预处理,传递一个数据作为 where 判断条件
    Mysql> prepare stmt1 from 'select * from t1 where id>?';
    设置一个变量
    Mysql> set @i=5;
    执行 stmt1 预处理
    Mysql> execute stmt1 using @i;
    删除预处理 stmt1
    Mysql> drop prepare stmt1;

  6. mysql 事务处理 (Engine=MyISAM 表引擎不支持事务机制)
    查看表引擎是否支持
    Mysql> show create table t1;
    设置表引擎为 innodb
    Mysql> alter table t1 engine=innodb;
    关闭自动提交功能
    Mysql> set autocommit=0;
    查看当前 autocommit 设置
    Mysql> select @@autocommit;
    提交
    Mysql> commit;
    从表 t1 中删除了一条记录
    Mysql> delete from t1 where id =11;
    此时做一个 p1 还原点
    Mysql> savepoint p1;
    再次从表 t1 中删除一条记录
    Mysql> delete from t1 where id =10;
    再次做一个 p2 还原点
    Mysql> savepoint p2;
    此时恢复到 p1 还原点,当然后面 p2 这些还原点自动失效
    Mysql> rollback to p1;
    退回到最原始的还原点
    Mysql>roolback;

  7. Mysql 存储 (批量处理)
    例子:创建存储 P1, 创建 100 个用户;
    Mysql> \d // 执行 “;” 临时替换为 “//”
    Mysql> create proceduce p1()
    ->begin
    ->set @i=1;
    ->while @i<100 do
    ->insert into t1(name) value(concat("user",@i));
    ->set @i=@i+1;
    ->end while;
    ->end//
    Mysql> \d ;
    查看存储
    Mysql> show procedure status\G
    Mysql> show create procedure p1\G
    执行
    Mysql> call p1();

  8. Mysql 触发器
    修改 delimiter 为 //
    Mysql> \d // 
    例子:创建触发器 tg1,当向 t1 表插入数据时,t2 表也被插入数据
    Mysql> create trigger tg1 before insert on t1 for each row
    ->begin
    ->insert into t2(name) values(new.name);
    ->end//
    Mysql> \d ;
    查看触发器
    Mysql> show triggers;
    删除触发器
    Mysql> drop trigger tg1;
    创建触发器 tg2,当向 t1 表删除数据时,t2 表也被删除数据
    Mysql> create trigger tg2 before delete on t1 for each row
    ->begin
    ->delete from t2 where name=old.name;
    ->end//

    创建触发器 tg3,当向 t1 表更新数据时,t2 表也被更新数据
    Mysql> create trigger tg3 before update on t1 for each row
    ->begin
    ->update t2 set name=new.name where name=old.name;
    ->end//

  9. 重排 auto_increment
    Mysql 数据库自动增长的 ID 恢复重新排序
    Mysql> alter table tablename auto_increment = 1;

    Other:
    联合查询
    Mysql> select * from t1 union select *from t2
    快速删除
    Mysql> truncate table tablename;

    my.cnf 添加如下配置,可不用密码进入

    [client]
    password = passwd
    port = 3306
    socket = /tmp/mysql.sock

 

posted @ 2015-06-11 23:11  noops  阅读(214)  评论(0编辑  收藏  举报