標籤:sts 變數賦值 資料 命令列 復原 ret php 控制 cti
mysql中的使用者資訊都儲存在系統資料庫mysql的user表中
建立使用者:
create user ‘使用者名稱’@’允許其登入的地址’ identified by ‘密碼’;
註:建立的使用者需同時指定該使用者可以在哪個地址進行登入(例:localhost) ,“%”代表任何地址
刪除使用者:
drop user ‘使用者名稱’@’允許其登入的地址’;
修改使用者密碼:
修改自己密碼: set password = password(‘新密碼’);
修改他人密碼(必須有修改許可權):
set password for ‘使用者名稱’@’允許其登入的地址’ = password(‘新密碼’);
分配許可權:、
grant 許可權名1,許可權名2, .... on 資料庫名.對象名 to ‘使用者名稱’@’允許其登入的地址’ identified by
註:1.ALL 表示“所有許可權”
2.對象名:就是一個資料庫中“裝”的東西,表是最常見的,也可以是視圖,預存程序,儲存函數等。
其中:*.*表示所有資料中的所有對象
3.密碼可以不寫
4.如果使用者不存在密碼必須寫
刪除許可權:
revoke 許可權名1,許可權名2, .... on 資料庫名.對象名 from ‘使用者名稱’@’允許其登入的地址’ ;
事務:
“事務”是一種可以保證“多條語句一次性執行完成”或“一條都不執行”的機制。
用法:
事務可以看作是一個“容器”,將多條語句,放入該容器,最後,只要一個命令列,來決定其中的所有語句是否“執行”。
運用情境:
現在,test1突然需要一筆錢,買iPhone6,向test2借錢4000。
銀行轉賬:
第一步: update cunkuan set 存款=存款-4000 where id=2;
第一步做完,突然斷電了!
第二步: update cunkuan set 存款=存款+4000 where id=1;
則如果沒有事務,就可能發生這種事情(慘案)。
特點:
mysql預設安裝好之後,其事務模式是:一條語句當作一個事務。
事務設定:
set autocommit = 0; //false,關閉該模式,即此時不再是一條語句一個事務了。
//結果是:必須使用commit語句才能夠生效。
注意:autocommit的設定值,只是影響通常情況下都每條語句的預設行為(自動認可還是等著commit提交)
判斷流程
if( 判斷是否有錯誤){
//執行——才針對執行了物理性改變——即生效。
commit;
}
eslse{
//復原——不執行任何語句。
rollback;
}
mysql編程:
if語句:與php中用法類似
case語句:(類似php中的switch)
while迴圈語句:
[標識符,用於退出] while 條件 do
語句塊
end whilep[標識符,用於退出]
MySQL變數
普通變數的聲明文法:
declare 變數名 變數類型 [default 初始值]
變數的賦值文法
set 變數名 = 變數值
mysql還有一種變數形式,可以稱為“會話變數”
會話變數的形式為: @變數名;
會話變數無需單獨聲明,而是直接賦值就可以,類似php
會話變數的賦值: set 變數名 = 值;
會話變數可以在普通命令列環境中或編程環境中使用。
文法1:set 變數名 = 運算式; #此文法中的變數必須先使用declare聲明
文法2:set @變數名 = 運算式; #此方式可以無需declare文法聲明,而是直接賦值,類似php定義變數並賦值。
文法3:select @變數名 := 運算式;#此語句會給該變數賦值,同時還會作為一個select語句輸出“結果集”
文法4:select 運算式 into @變數名;#此語句雖然看起來是select語句,但其實並不輸出“結果集”,而只是給變數賦值
MySQL函數
create function 函數名 (形參 類型)
returns 傳回型別
begin
語句塊;
return 值;
end;
調用:
select 3, now(), f1(); //f1為自訂的儲存函數。
select 3, now(), f2(3, ‘abc’, @v1); //帶3個實參,其中@v1是一個前面賦值了的變數。
刪除函數:
drop function [if exists] 儲存函數名;
實際,在php中,其實是這樣:
$sql = “call pro1(8, ‘dd‘) ”;
mysql_query( $sql );
觸發器:
其實只是預先定義好的一段代碼。該段代碼無需人工調用,而是會在‘預計’好的某個情形下自動執行。
定義:
create trigger 觸發器名字 before(或after) insert(或update或delete) on 表名 for each row begin
註:要執行的代碼,語句塊,編程環境,但這裡也不能使用select語句。
在觸發器內部,其中有兩個關鍵字具有特定含義和資料擷取作用:
new:代表新插入的一條資料,在insert事件的時候有效。
old:代表舊的一條資料,在update或delete的時候有效。
刪除觸發器: drop trigger 觸發器名
mysql控制語句