1.1 mysql 表复制
复制表结构+复制表数据
create table t3 like t1;
insert into t3 select * from t1;
desc t1;查看表结构
1.2 mysql 索引
(1)alter table 用来创建普通索引、unique索引或primary key 索引
alter table table_name add index index_name(column_list);
alter table table_name add unique(column_list);
alter table table_name add primary key(colume_list);
(2)create index
create index index_name on table_name(column_list);
create unique index index_name on table_name(column_list);
(3)drop index
drop index index_name on table_name;
(4)alter table table_name drop
alter table table_name drop index index_name;
alter table table_name drop primary key;
查看表一中的索引
show index from t1;
alter table t1 modify id int unsigned not null; 删除auto_increment
1.3 视图
view 的帮助信息:?view
alter view
create view
drop view
创建视图:
create view v_t1 as select * from t1 where id > 4 and id <8'
查看视图:
show tables;
删除视图 drop view v_t1;
1.4 mysql 内置函数
select concat(“hello”, “word”);
concat(string,string) 连接字符串
Lcase(string) 转换成小写
Ucase(string) 转换成大写
length(string) string长度
ltrim(string) 去除前端空
rtrim(string) 去除后端空
repeat(string,count) 重复count次
replace(str, search_str, replace_str) 在str中用replace_str替换search_str
substring(string, position,length) 从str的position开始,取length个字符
space(count) 生成count个空格
数学函数:
bin(decimal_number) 十进制转化为二级制
ceiling(number2) 向上取整数
floor(number2) 向下取整数
max(num1, mum2) 取最大值,聚合时使用
min(mum1, mun2) 取最小值,聚合时使用
sqrt(munber2) 开平方
rand() 返回0-1内的随机值
eg:select * from t1 ordey by rand();
日期函数:
curdate() 返回当前日期
curtime() 返回当前时间
now() 返回当前的日期时间
unix_timestamp(date) 返回当前date的unix的时间戳
from_unixtime() 返回unix时间戳的日期值
week(date) 返回日期date为一年中的第几周
year(date) 返回日期date 的年份
datediff(time1, time2) 返回起始时间和结束时间的天数
1.5 mysql 预处理语句
prepare
? prepare 查看prepare帮助文档
设置stmt1预处理,传递一个数据作为一个where判断条件:
msyql>prepare stmt1 from ’select * from t1 where id>?’;
设置一个变量:
msyql>set @i=1;
执行stmt1预处理:
mysql>execute stmt1 using @i;
设置@为5;
再次去执行stmt1;
msyql>execute stmt1 using @i;
如何删除预处理stmt1:
mysql>drop prepate stmt1;
1.6 mysql 事务处理
关闭自动提交功能
mysql>set autocommit=0;
从表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>rollback;
一旦commit了就无法rollback了
mysql>commit;
注意:myisam 不支持事务机制
1.7 mysql 存储
创建一个存储p1();
mysql> \d //
mysql>create procedure p1()
>begin
>set @i-0;
>while @i>10 do
>select @i;
>set @i=@i+1;
>end while;
>end;
>//
执行存储p1();
mysql> \d;
msyql> call p1();
查看procedure p1()的status 信息
mysql> show procedure status\G
查看procedure p1() 的具体信息:
mysql> show create procedure p1\G
1.8 mysql 触发器
修改delimiter为//
mysql> \d //
(1)创建一个名字为tg1的触发器,当向t1表中插入数据的时候,也向t2表中也出入了一条数据
mysql>create trigger tg1 before insert on t1 for each now
>begin
>insert into t2(id) values(new.id);
>end//
准备两个空表t1和t2
mysql>select * from t1;
mysql>select * from t2;
向t1表中插入多条数据:
mysql>insert into t1 values(1),(2),(3),(4);
(2) 如何制作删除表t1后t2表中的记录也会跟着删除???
mysql>\d //
mysql>create trigger tg2 before delete on t1 for each row
>begin delete from t2 where id=old.id;
>end//
mysql>\d//
如何制作更改表t1后t2表中的记录跟着个性呢???
mysql>\d //
mysql>create trigger tg3 before update on t1 for each row
>begin update t2 set id=new.id were id=old.id;
>end//
mysql>\d;
查看触发器:
mysql>show triggers;
mysql>//
1.9 重排auto_increment值
msyql数据库自动增长的id 如何恢复
清空表的时候,不能用delete from tablename;
而是要用
truncate table tablename;
这样auto_increment就恢复成1个
或是清空内容后直接用alter命令修改表
alter table tablename auto_increment=1;