mysql報表控制語句 mysql控制語句

2021-10-18 02:33:31 字數 2743 閱讀 7052

mysql中的使用者資訊都儲存在系統資料庫mysql的user表中

建立使用者:

create  user  『使用者名稱』@』允許其登入的位址』  identified  by  『密碼』;

刪除使用者:

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 觸發器名

Mysq中的流程控制語句的用法

這篇部落格主要是總結一下mysq中的流程控制語句的用法,主要是 case,if,ifnull,nullif 1.case case value when compare value then result when compare value then result else result end ...

MySQL資料庫高階SQL語句之MySQL儲存過程

create procedure 過程名 過程引數 過程體 過程引數 格式 in out lnoutj引數名 型別 mysql delimiter 將語句的結束符號從分號 臨時改為兩個 可以是自定義 mysql create procedure delete matches in p playern...

流程控制語句Mysql

流程控制語句 1.順序控制語句 begin.end.delimiter create function max1 i int,j int returns int begin return select from student where 學號 xh end delimiter 2.分支控制語句 i...