★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;