Mysql常用命令、簡單查詢、遊標、預存程序、觸發器簡單介紹

來源:互聯網
上載者:User

一、Mysql資料庫基本常用的命令
1、服務啟動與停止
net stop mysql
net start mysql

2、登陸mysql
  mysql -uroot -p斷行符號 輸入密碼
  注意,如果是串連到另外的機器上,則需要加入一個參數-h機器IP110.110.110.110,使用者名稱為root,密碼為abcd123。則鍵入以下命令:
  mysql -h110.110.110.110 -uroot -pabcd123
 

mysql -u root -p/mysql -h localhost -u root -p databaseName;

3、 顯示資料庫列表
  show databases;預設有兩個資料庫:mysql和test。 mysql庫存放著mysql的系統和使用者權限資訊,我們改密碼和新增使用者,實際上就是對這個庫進行操作

4、選擇資料庫和顯示資料表
   use mysql;
   show tables;

5、顯示表結構
   desc tablename

6、建庫、刪庫
    create database dbName;
    drop database   dbName;

7、基本的a建表、b插入資訊、c增加欄位、d修改欄位名、e修改欄位資料類型、f更新資料
   a.create table emp(id int not null auto_increment primary key,name varchar(50));
   b.insert into tableName values ("hyq","M");
   c.alter  table tableName add columnName type;
   d.alter table tableName1 change tableName2 char(10) not null;
   e.alter table tableName modify columnName  type
   f.update tableName set age="25" where id="";
   
8、清空表記錄與刪除表
   delete from  tableName
   drop table tableName;

9、匯出匯入資料
   匯出資料和資料結構:輸入:mysqldump -u [資料庫使用者名稱] -p [要備份的資料庫名稱]>[備份檔案的儲存路徑]
   例子:mysqldump -u root -p test>E:\tt.sql
   匯入:mysql -u root -p<[備份檔案的儲存路徑]
    恢複備份檔案:
    進入MYSQL Command Line Client
    先建立資料庫:create database test 註:test是建立資料庫的名稱
    再切換到當前資料庫:use test
    再輸入:\. d:/test.sql 或 souce E:\tt.sql

10、退出mysql   exit 或快速鍵:Ctrl+C;

二、Mysql查詢

1、幾個常用的函數
   a.count();統計
   b.sum();求和
   c.avg()求平均
   d.max、min 最大和最小

2、幾個進階查詢運算
   a.UNION 運算子通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重複行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行。
   b.EXCEPT運算子  通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重複行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行
   c.INTERSECT 運算子通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重複
 (使用以上運算子的幾個查詢結果必須一致)

3、幾個常用的串連查詢
   a.left outer join:左外串連(左串連):結果集幾包括串連表的匹配行,也包括左串連表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c;
   b.右外串連(右串連):結果集既包括串連表的匹配串連行,也包括右串連表的所有行。
   c. full outer join:全外串連:不僅包括符號串連表的匹配行,還包括兩個串連表中的所有記錄。
   d.inner join:等值串連 只返回兩個表中連接欄位相等的行。

三、Mysql視圖
   
1、概念:是一種虛表--不能在存放資料,只能使用select語句引用已存在表(一個或多個)的資料是一種代理模式的實現;

2、作用:使查詢更清晰,視圖存放我們所需要的資料,簡化操作;讓資料更安全,視圖中的資料,不存在視圖中,還是在基本表裡面,通過視圖這層關係,我們可以有效保護我們的重要資料

3、MySql檢視類型:mysql的視圖有三種類型:MERGE、TEMPTABLE、UNDEFINED。如果沒有ALGORITHM子句,預設演算法是UNDEFINED(未定義的)。演算法會影響MySQL處理視圖的方式。
  a.MERGE,會將引用視圖的語句的文本與視圖定義合并起來,使得視圖定義的某一部分取代語句的對應部分。
  b.TEMPTABLE,視圖的結果將被置於暫存資料表中,然後使用它執行語句。
  c.UNDEFINED,MySQL將選擇所要使用的演算法。如果可能,它傾向於MERGE而不是TEMPTABLE,這是因為MERGE通常更有效,而且如果使用了暫存資料表,視圖是不可更新的。

4、基本建立:a.CREATE VIEW db_name.view_name AS SELECT * FROM t;(表和視圖共用資料庫中相同的名稱空間,同一資料庫中view名不能與表明相同。)
             b.CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
              VIEW view_name [(column_list)]
              AS select_statement
             [WITH [CASCADED | LOCAL] CHECK OPTION]

四、Mysql索引
   a.索引是雙刃劍   EXPLAIN SELECT * from tablename   加上explain後用於描述MySQL如何執行查詢操作、以及MySQL成功返回結果集需要執行的行數

五、預存程序(Mysql5之後才支援預存程序)
   1、概念:一組為了完成特殊功能的sql語句集,編譯後放在資料庫中,通過過程名調用執行;
   2、優點:a.增強sql靈活性與功能,能完成複雜的判斷與運算;
            b.執行速度快,能有效節省流量(只傳調用語句);
            c.資料安全起很大作用.
   3、一個簡單的例子
      delimiter//
      create procedure pro_test(OUT s int)
      begin
      select count(*) total INTO s from user;
      end
      //
      delimiter;
解釋:以上建立了一個預存程序,有一個輸出參數 s,將統計出來的記錄數賦值給s;
      a.delimiter,分割符意思,MySQL預設以";"為分隔字元,如果我們沒有聲明分割符,那麼編譯器會把預存程序當成SQL語句進行處理,
      則預存程序的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔字元。
      b.三種參數類型:IN 輸入參數:表示該參數的值必須在調用預存程序時指定,在預存程序中修改該參數的值不能被返回,為預設值;
                      OUT 輸出參數:該值可在預存程序內部被改變,並可返回;
                      INOUT 輸入輸出參數:調用時指定,並且可被改變和返回;
      c.變數的聲明:declare age int default 18;
      d.變數的賦值:set 變數名=運算式值   
      e.使用者變數: select “hello Kitty” into @X 、 聲明後 select @X   的結果為 “hello Kitty”使用者變數名一般以@開頭濫用使用者變數會導致程式難以理解及管理
  4、Mysql預存程序的調用
     call預存程序名();
  5、預存程序的查詢
      select name frommysql.proc where db='dbName';
      show procedure status where db='dbName';
      SHOW CREATE PROCEDURE
 
  6、預存程序的修改、刪除
     alter procedure;
     drop procedure;

六、觸發器
   1、概念:當執行delete、update或insert操作時,可以使用觸發器來觸發某些操作。
   2、建立:CREATE TRIGGER trigger_name trigger_time trigger_event   ON tbl_name FOR EACH ROW trigger_stmt
   3、解釋:其中 trigger_name是觸發器名,
            trigger_time:BEFORE,AFTER
            trigger_event:INSERT、UPDATE、DELETE
            tbl_name:關聯的表名
            注意,INSERT除了插入操作,load data也能啟用該事件。對於同一trigger_event,不能有兩個相同trigger_time的觸發器。
            trigger_stmt:觸發器被啟用時執行的語句,可以使用單條語句,也可以使用BEGIN——END這樣的複合陳述式。
   
  4、舉例:mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
 
      mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
 
      -> FOR EACH ROW SET @sum = @sum + NEW.amount;
 
     mysql> SET @sum = 0;
     mysql> INSERT INTO account values(5,12.5);
      mysql> SELECT @num;
 
在該例子中,關鍵字NEW.col_name在INSERT觸發程式中引用;
另外一個關鍵字OLD.col_name可用於DELETE中
NEW和OLD均可用於UPDATE觸發程式中。
old命令的列為唯讀,new命名的列,如果具有select許可權,可引用它,如果在before出發程式中,具有update許可權,可使用set new.col_name = value的方法,在插入前更改值

七、遊標
  1、定義: DECLARE cursor_name CURSOR FOR SELECT_statement;    
  2、開啟遊標:open cursor_name;
  3、FETCH:擷取遊標當前指標的記錄,並傳給指定變數列表,注意變數數必須與MySQL遊標返回的欄位數一致,要獲得多行資料,使用迴圈語句去執行FETCH
      FETCH cursor_name INTO variable list;
  4、關閉遊標:close cursor_name;MySQL的遊標是向前唯讀,也就是說,你只能順序地從開始往後讀取結果集,不能從後往前,也不能直接跳到中間的記錄.
  5、樣本:
      -- 定義本地變數
    DECLARE o varchar(128);

   -- 定義遊標
   DECLARE ordernumbers CURSOR
   FOR
   SELECT callee_name FROM account_tbl where acct_timeduration=10800;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
   SET no_more_departments=0;
   
   -- 開啟遊標
   OPEN ordernumbers;

   -- 迴圈所有的行
   REPEAT
       -- Get order number
      FETCH ordernumbers INTO o;
      update account set allMoney=allMoney+72,lastMonthConsume=lastMonthConsume-72 where NumTg=@o;
     
     
  -- 迴圈結束
      UNTIL no_more_departments
     END REPEAT;
   -- 關閉遊標
   CLOSE ordernumbers;
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.