★mysql索引

  • alter table创建普通索引、unique索引或primary key索引

    alter table table_name add index index_name(column_list)

    alter table table_name add unique index_name(column_list)

    alter table table_name add primary key index_name(column_list)

  • create index

    create index index_name on table_name(column_list)

    create unique index index_name on table_name(column_list)

  • drop index

    drop index index_name on table_name

  • alter table table_name drop

    alter table table_name drop index index_name

    alter table table_name drop primary key

★mysql内置函数

  • 字符串函数

    concat(string1,string2)                  连接字符串

    lcase(string2)                           转换成小写

    ucase(string2)                           转换成大写

    length(string)                           字符串长度

    ltrim(string2)                           去除前面的空格

    rtrim(string2)                           去除后面的空格

    repeat(string2,count)                    重复字符串string2重复count次

    replace(str,search_str,replace_str)      在str中用replace_str替换search_str

    substring(str,position,length)           从str的position开始取length个字符

    space(count)                             生成count个空格

  • 数学函数

    bin(decimal_number)                      十进制转换成二进制

    ceiling(num2)                            向上取整

    floor(num2)                              向下取整

    max(num1,num2)                           取最大值

    min(num1,num2)                           取最小值

    sqrt(num2)                               开平方

    rand()                                   返回0-1内的随机数

  • 日期函数

    curdate()                                返回当前日期

    curtime()                                返回当前时间

    now()                                    返回当前的日期时间

    week(date)                               返回日期date为一年中的第几周

    year(date)                               返回日期date的年份

    datediff(expr,expr2)                     返回起始时间expr和结束时间expr相隔的天数

★mysql预处理语句

  设置stmt1预处理,传递一个数据作为一个where的判断条件

  • prepare stmt1 from 'select * from t1 where id>?';

  • 设置一个变量

    set @i=1;

  • 执行stmt1预处理

    execute stmt1 using @i;

  • 设置i的值为5

    set @i=5;

  • 再次执行stmt1预处理

    execute stmt1 using @i;

  • 删除预处理stmt1

    drop prepare stmt1;

★mysql事务处理

  • set autocommit=0;                         关闭自动提交功能

  • delete from t1 where id=1;

  • savepoint p1;                             生成还原点p1

  • delete from t1 where id=2;

  • savepoint p2;                             生成还原点p2

  • rollback to p1;                           恢复到p1,后面的还原点(如p2)会自动失效

  • rollback;                                 退回到最原始的还原点

★mysql存储

  • 创建一个存储

  \d //                                       修改结束符delimiter

  create procedure p1()

  begin

  set @i=0;

  while @i<10 do

  select @i;

  set @i=@i+1;

  end while;

  end;

  // 

  • 执行存储p1

    call p1();

  • 查看procedure p1的status信息

    show procedure status\G

  • 查看procedure p1的具体信息

    show create procedure p1\G

★mysql触发器

  • 创建一个名为tg1的触发器,实现当向t1插入数据时同时向t2中插入相同的数据

    create trigger tg1 before insert into t1 for each row

    begin

    insert into t2(id) values(new.id);

    end

  • 创建一个触发器tg2,实现删除t1表的数据后t2表相应的数据也被删除

    create triggrt tg2 before delete on t1 for each row

    begin delete t2 where id=old.id;

    end

  • 创建一个触发器tg3,实现更新t1表的数据后t2表相应的数据也被更新

    create triggrt tg2 before update on t1 for each row

    begin update t2 set id=new.id where id=old.id;

    end

  • 查看触发器

    show triggers;

★将mysql数据库自动增长的id恢复

  • 清空表的时候不能用delete from table_name而是用truncate table table_name,这样auto_increment就恢复成1了

    而且delete命令是逐行删除数据,而truncate是一下扫描全部,速度效率比delete快的多

  • 或者清空内容后直接用alter命令修改表:alter table table_name auto_increment=1;