一、mysql基礎操作(centos5.5)
1.mysql表複製
create table t3 like t1;//f複製t1的表結構
insert into t3 select * from t1; //表結構一樣的情況下可用select*
2.mysql索引
2.1 create、drop 不能用於主鍵創建索引
create index in_name on t1(name);
drop index in_name on t1;
create unique index un_name on t1(name);//唯一索引不能有重複值
drop index un_name on t1;
show index from t1;
2.2
alert table t1 add index in_name (name);
alert table t1 drop index in_name;
alert table t1 add unique (name);
aler table t1 drop index name;
alert tabel t1 add index in_name (name);
alert table t1 drop index inname;
alert table t1 add primary key (id );//主鍵索引
3.mysql視圖 從一個表中通過一個條件拿出一部分符合條件的數據成爲一個新表,就是視圖
create view v_t1 as select * from t1 where id>4 and id <8;
select * from v_t1;//5,6,7
delete from t1 where id =6;
select * from v_t1;// 5,7 會跟隨主表變化,主表被刪除,視圖會發生錯誤。
drop view v_t1;
show tables //查看視圖,視圖是一張表
4.mysql內置函數
4.1字符串函數
select concat ("hello","world") as myname;//連接字符串
select lcase ("MYSQL");//轉小寫
select ucase ("mysql");//轉大寫
select length ("good");//5 得到長度
select ltrim (" hello");//去左側空
select rtrim ("hello ");//去右側空
select repeate("hello",3);//重複3次 hellohellohello
select replace("a is not b","a","c");//c替換a
select substr("linux is good ",1,5);//linux 從1開始取5個
select space (10);//生成10個空格
select concat (space(10),"hello");
4.2數學函數
select bin (200);//十進制轉二進制
select ceiling(10.10);//11
select floor(10.10);//10
max、min //聚合時使用
select sqrt (4.5);//開平方
select rand ();//返回0-1之間隨機數
4.3日期函數
select curdate();
select curtime();
select unix_timestamp();
select now();
select week();//
select year("2012-10-10");
select datediff("2012-10-10","2012-10-15");//天數差
5.mysql預處理語句 ?prepare 變量變時可以不用每次都請求數據庫
prepare stmt1 from "select * from t1 where id >?";
set @i=1;
execute stmt1 using @i;//執行
drop prepare stmt1;
6.mysql事務處理 //myisam引擎不支持事務,innodb
set autocommit =0;//設置不自動提交
delete from t1 where id >5;
rollback;
commit;
savepoint p1;
insert into t1(name) values(user8);
savepoint p2;
rollback to p1;
commit;//沒有user8
7.mysql存儲 procedure 相當於一代碼段
往t2插入100條
\d //
create procedure p2()
begin
set @i=3;
while @i<100
do
insert into t2(name) values (concat("user",@i));
set @i=@i+1;
end while ;
end //
\d;
show procedure status;
call p2();
8.mysql觸發器 對t1表操作時,t2也進行一定操作
truncate t2;//數據量大時刪除方式
8.1 \d //
create trigger t1 before insert on t1 for each row
begin
insert into t2(name) values (new.name);
end//
\d; //表1插入數據,表2也跟着插入
8.2 \d //
create trigger t2 before delete on t1 for each row
begin
delete from t2 where name =(old.name);
end //
\d;
delete from t1 where name="user2";
8.3 \d //
crate trigger t3 before update on t1 for each row
begin
update t2 set name =(new.name ) where name =(old.name)
end //
\d ;
update t1 set name ="user30" where name="user3"; //表1、2都變未user30
9.重排auto_increment
清空表時 delete時一條一條刪除而且不會回覆auto_increment,
truncate 可以可以將auto_increment 恢復成1;
或者用alert table tablename auto_increment =1;