一、MySql基础操作

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值