MySql基本使用方法


MySql基本使用方法

一,基本概念
1, 常用的兩種引擎:
        (1) InnoDB
        a,支持ACID,簡單地說就是支持事務完整性、一致性;
        b,支持行鎖,以及類似ORACLE的一致性讀,多用戶並發;
        c,獨有的聚集索引主鍵設計方式,可大幅提升並發讀寫性能;
        d,支持外鍵;
        e,支持崩潰數據自修復;
        InnoDB設計目標是處理大容量數據庫系統,它的CPU利用率是其它基於磁盤的關系數據庫引擎所不能比的。
         它是一個可靠地事務處理引擎,不支持全文本搜索

        (2) MyISAM
        a,不支持 每次查詢具有原子性
        b,只支持表所
        c,強調的是性能,其執行數 度比InnoDB類型更快,但是不提供事務支持
        d,如果執行大量的SELECT,MyISAM是更好的選擇

2,  介紹:
    a,數據庫-database
      保存有組織的數據的容器(通常是一個文件或一組文件)

    b,表-table
      某種特定類型數據的結構化清單
 
    c,模式-schema
      關於數據庫和表的布局及特性的信息

    d,列-column
      表中的一個字段,所有表都是由一個或多個列組成的

    e,行-row

      表中的一個記錄

 

    f,數據類型-datatype
      所容許的數據的類型。每個表列都有相應的數據類型,它限制(或容許)該列中存儲的數據

二,mysql命令行

1,連接mysql
   格式: mysql -h主機地址 -u用戶名 -p用戶密碼

   a, 連接到本地MYSQL
      首先打開DOS窗口,然后進入目錄mysql\bin,再鍵入命令mysql -u root -p,
      回車后提示你輸密碼。 MYSQL的提示符是: mysql> 。(默認root用戶沒有密碼)

   b,連接到遠程主機上的MYSQL
     假設遠程主機的IP為:218.105.110.116,用戶名為root,密碼為abcd123456。
     則鍵入以下命令:mysql -h218.105.110.116 -u root -p abcd123456;(注:u與root之間可以不用加空格,其它也一樣)。

2, 啟動mysql服務
   net start mysql

3,停止mysql服務
   net stop mysql

4,查詢端口是否沖突

   netstat –na | findstr 8080 查看被監聽的端口 , findstr用於查找后面的端口是否存在。

 

5,退出mysql
   quit或者exit退出

6,修改密碼:
   格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
   例如給root修改密碼:
   mysqladmin -u root -p ab12 password djg345 

三,顯示命令
    1.顯示當前數據庫服務器中的數據庫列表
    mysql> SHOW DATABASES;

    2.顯示某個數據庫中的數據表

    mysql> USE 庫名;//使用某個庫
    mysql> SHOW TABLES;//列出庫中所有的表

    3.顯示數據表的結構
    mysql> DESCRIBE 表名;

    4.建立數據庫
     mysql> CREATE DATABASE 庫名;。

    5.建立數據表
     mysql> USE 庫名。
     mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));。

    6.刪除數據庫
     mysql> DROP DATABASE 庫名;。

    7.刪除數據表
     mysql> DROP TABLE 表名;。

   8.將表中記錄清空
     mysql> DELETE FROM 表名;。

   9.顯示表中的記錄
    mysql> SELECT * FROM 表名;。

   10.往表中插入記錄
   mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);。

   11.更新表中數據
   mysql-> UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';。

   12.用文本方式將數據裝入數據表中
   mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;。

   13.導入.sql文件命令
   mysql> USE 數據庫名;。
   mysql> SOURCE d:/mysql.sql;。

  14.命令行修改root密碼
   mysql> UPDATE mysql.user SET password=PASSWORD(’新密碼’) WHERE User=’root’;。
   mysql> FLUSH PRIVILEGES;。

  15.顯示use的數據庫名
  mysql> SELECT DATABASE();。

  16.顯示當前的user
  mysql> SELECT USER();。

 

視圖

視圖是一個虛擬表(非真實存在),其本質是【根據SQL語句獲取動態的數據集,並為其命名】,用戶使用時只需使用【名稱】即可獲取結果集,並可以將其當作表來使用。

SELECT
    *
FROM
    (
        SELECT
            nid,
            NAME
        FROM
            tb1
        WHERE
            nid > 2
    ) AS A
WHERE
    A. NAME > 'alex';

觸發器

對某個表進行【增/刪/改】操作的前后如果希望觸發某個特定的行為時,可以使用觸發器,觸發器用於定制用戶對表的行進行【增/刪/改】前后的行為。

delimiter //
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    IF NEW. num = 666 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('666'),
            ('666') ;
    ELSEIF NEW. num = 555 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            ('555'),
            ('555') ;
    END IF;
END//
delimiter ;

存儲過程

存儲過程是一個SQL語句集合,當主動去調用存儲過程時,其中內部的SQL語句會按照邏輯執行。

-- 創建存儲過程
delimiter \\
create procedure p1(
    in i1 int,
    in i2 int,
    inout i3 int,
    out r1 int
)
BEGIN
    DECLARE temp1 int;
    DECLARE temp2 int default 0;
   
    set temp1 = 1;

    set r1 = i1 + i2 + temp1 + temp2;
   
    set i3 = i3 + 100;

end\\
delimiter ;

-- 執行存儲過程
set @t1 =4;
set @t2 = 0;
CALL p1 (1, 2 ,@t1, @t2);
SELECT @t1,@t2;

函數

MySQL中提供了許多內置函數

delimiter \\自定義函數
create function f1(
    i1 int,
    i2 int)
returns int
BEGIN
    declare num int;
    set num = i1 + i2;
    return(num);
END \\
delimiter ;

事務

事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證數據庫數據完整性。

delimiter \\
create PROCEDURE p1(
    OUT p_return_code tinyint
)
BEGIN
  DECLARE exit handler for sqlexception
  BEGIN
    -- ERROR
    set p_return_code = 1;
    rollback;
  END;

  DECLARE exit handler for sqlwarning
  BEGIN
    -- WARNING
    set p_return_code = 2;
    rollback;
  END;

  START TRANSACTION;
    DELETE from tb1;
    insert into tb2(name)values('seven');
  COMMIT;

  -- SUCCESS
  set p_return_code = 0;

  END\\
delimiter ;
函數與存儲過程的區別

    存儲過程和函數存在以下幾個區別:

    1)一般來說,存儲過程實現的功能要復雜一點,而函數的實現的功能針對性比較強。存儲過程,功能強大,可以執行包括修改表等一系列數據庫操作;用戶定義函數不能用於執行一組修改全局數據庫狀態的操作。

    2)對於存儲過程來說可以返回參數,如記錄集,而函數只能返回值或者表對象。函數只能返回一個變量;而存儲過程可以返回多個。存儲過程的參數可以有IN,OUT,INOUT三種類型,而函數只能有IN類~~存儲過程聲明時不需要返回類型,而函數聲明時需要描述返回類型,且函數體中必須包含一個有效的RETURN語句。

    3)存儲過程,可以使用非確定函數,不允許在用戶定義函數主體中內置非確定函數。

    4)存儲過程一般是作為一個獨立的部分來執行( CALL 語句執行),而函數可以作為查詢語句的一個部分來調用(SELECT調用)。 SQL語句中不可用存儲過程,而可以使用函數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM