mysql控制語句

來源:互聯網
上載者:User

標籤: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控制語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.