mysql基礎操作

一、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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章