MySQL 基础操作
1.1表复制
1.2索引
1.3视图
1.4内置函数
1.5预处理语句
1.6事务处理
1.7存储
1.8触发器
1.9重排auto_increment值
1.1表复制
mysql>create table t2 like t1;
mysql>desc t1;
mysql>desc t2;
表数据复制(!!!)
mysql>insert into t2 select * from t1;
1.2索引
索引分类:主键索引, 唯一索引,普通索引
mysql> index
Create 方法
mysql> create index index_name on table_name(column_name);
mysql>show index from table_name;
mysql>drop index_name from table_name;
mysql>create unique index unique_index on table_name(column_name);
drop index_name on table_name;
ALTER 方法
mysql>ALTER table table_name ADD index index_name(column_name)
mysql>ALTER table table_name drop index index_name;
mysql>ALTER table table_name ADD UNIQUE(column_name)
ALTER table table_name drop index column_name
mysql>ALTER table table_name ADD primary key(column_name)
mysql>ALTER table table_name DROP primary key;
1.3视图
mysql> View
ALTER VIEW
CREATE VIEW
DROP VIEW
mysql>CREATE VIEW v_table AS select * FROM table_name WHERE id>10000 and id<20000;
mysql>Show tables;
mysql>drop view v_table;
被依赖的表被修改,使用view也会有相应的改变。
1.4内置函数
CONCAT :连接字符串参数
LCASE:字符小写化
UCASE:字符大写化
LENGTH:字符长度
LTRIM:去除左侧空格
RTRIM:去除右侧空格
REPEAT:重复
REPLACE:取代
SUBSTR:剪切文字
SPACE:重复的空格
BIN:转化为二进制数
CEILING:向上取整
FLOOR:向下取整
MAX:取最大值
MIN:取最小值
ROUND:四舍五入取整
CURDATE:当前日期
CURTIME:当前时间(不包括日期)
NOW:当前时间(包括日期)
UNIX_TIMESTAMP 时间差(单位毫秒)
WEEK:当前星期(一年的第几个星期)
YEAR:当前年
DATEDIFF:日期差
1.5预处理语句
mysql> Prepare
mysql>prepare stmt1 from “select * from t1 where id>”;
mysql>set @i=1;
mysql>execute stmt1 using @i;
mysql>drop prepare stmt1;
简单来说,预处理语句使用更少的资源,执行速度也就更快。查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要执行查询的计划。对于复杂查询来说,如果你要重复执行许多次有不同参数的但结构相同的查询,这个过程会占用大量的时间,使得你的应用变慢。通过使用一个预处理语句你就可以避免重复分析、编译、优化的环节。
1.6事务处理
mysql>SET autocommit=0;
mysql>……
mysql>ROLLBACK;
没有执行COMMIT, 都可以回滚(退回上一状态)
mysql>savepoint point1;
mysql>rollback to point1;
在sql操作过程中设置锚点,可以回退到锚点时的状态
1.7存储
mysql>\d //
create procedure p()
begin
set @i=1;
while @i<10 do
Insert into table1 (user) values(concate(“user”,@i) ;
set @i=@i+1;
end while;
end //
mysql>show procedure status;//
mysql>\d ;
mysql>show create procedure p;
执行:
Mysql> call p();
1.8触发器
mysql>\d //
create tg1 before insert on t1 for each row
begin
insert into t2(id) values(new.id)
end//
mysql>show triggers;
delete & update
1.9重排auto_increment值
Mysql> delete from table_name;
mysql>alter table table_name auto_incement=1;
mysql>truncate table_name;