DLL:操作數據庫和表


1. 操作數據庫

  C(Create 創建) R(Retrieve 查詢) U(Update 更新) D(Delete 刪除)

  (1) 查詢數據庫

    1) 查詢所有數據庫名稱

    SHOW DATABASES;

    

     這里有一個注意的東西,一個Database對應數據目錄中的一個實體文件夾,但是 information_schema 這個數據庫卻沒有實體對應。它的用途是作為視圖使用,描述數據庫的表的信息、庫的名稱等等。

    2) 查詢創建數據庫的創建語句和字符集

    SHOW CREATE DATABASE 數據庫名;

    

     雖然已經修改了數據庫的默認編碼方式為utf8mb4,但是已創建的數據庫還是utf8。而這個mysql數據庫則是Latin1,雖然也支持中文,但是最好還是改為utf8mb4。

 

  (2) 創建數據庫

    1) 創建一個數據庫

    CREATE DATABASE 數據庫名;

    

    2) 帶判斷語句的創建數據庫

    CREATE DATABASE IF NOT EXISTS 數據庫名;     -- 如果不存在數據庫則創建,如果存在則不創建,不過是否創建了數據庫都會返回Query OK

    

    3) 創建指定字符集的數據庫

    CREATE DATABASE 數據庫名 CHARACTER SET 字符集;

    

 

  (3) 修改數據庫

    1) 修改數據庫字符集

    ALTER DATABASE 數據庫名 CHARACTER SET 字符集 COLLATE 排序規則;

    

    這里注意一下,修改字符集的時候最好要修改一下排序規則。而utf8mb4中有兩種排序規則,一個是 utf8mb4_general_ci 一個是 utf8mb4_unicode_ci。因為utf8mb4_unicode_ci 的排序更精確一些,所以推薦使用 utf8mb4_unicode_ci 排序方式。

 

  (4) 刪除數據庫

    1) 直接刪除(非常危險,盡量不要使用)

    DROP DATABASE 數據庫名;

    

    2) 帶判斷的刪除(以防引起錯誤)

    DROP DATABASE IF EXISTS 數據庫名;

    

 

  (5) 使用數據庫

    1) 查詢當前使用中的數據庫

    SELECT DATABASE();

    

    2) 進入數據庫

    USE 數據庫名();

    

    進入數據庫以后如果想切換其他數據庫,直接使用 USE 命令就可以。

 

2. 操作表

  (1)查詢表

    1)查詢數據庫中有哪些表

    SHOW TABLES;

    

    2) 查詢表結構

    DESC 表名;

    

    3) 查詢表的字符集

    SHOW CREATE TABLE 表名;

 

  (2) 創建表

    1) 創建基礎表

    CREATE TABLE 表名(   列名 數據類型,   列名 數據類型,   列名 數據類型     );

     

    2) 創建一個已有表結構相同的表

    CREATE TABLE 新表名 LIKE 舊表名;

    

 

  (3) 刪除表

    1) 直接刪除

    DROP TABLE 表名;

    

    2) 帶判斷的刪除

    DROP TABLE IF EXISTS 表名;

    

 

 

  (4) 修改表

    1) 修改表名

    ALTER TABLE 表名 RENAME TO 新表名;

    

    2) 修改表字符集

    ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集 COLLATE 排序規則; 

    

    3) 添加列

    ALTER TABLE 表名 ADD 列名 數據類型;

    

    4) 修改列名和數據類型

    ALTER TABLE 表名 CHANGE 列名 新列名 新數據類型;

    

    5) 修改列的數據類型

    ALTER TABLE 表名 MODIFY 列名 新數據類型;

    

    6) 刪除列

    ALTER TABLE 表名 DROP 列名;

    

 

 

3. 約束

  約束是對表進行限定,保證數據的正確性、完整性和有效性。

  (1) 非空約束(NOT NULL)

    保證列數據增、刪、改時不能為NULL空值。

  CREATE TABLE 表名(列名 數據類型 NOT NULL,列名 數據類型 NOT NULL);-- 建表時限定
  ALTER TABLE 表名 MODIFY 列名 數據類型 NOT NULL; -- 現有表修改列為非空
  ALTER TABLE 表名 MODIFY 列名 數據類型; -- 刪除非空限定

  (2) 唯一約束(UNIQUE)

    保證一列中的每個數據都是唯一的,不可重復。

    注意:唯一約束不能保證NULL值唯一;現有表設置唯一約束列時,列中不可有重復數據。

  CREATE TABLE 表名(列名 數據類型 NOT NULL,列名 數據類型 UNIQUE);-- 建表時添加唯一約束
  ALTER TABLE 表名 MODIFY 列名 數據類型 NOT NULL; -- 現有表修改列為唯一約束
  ALTER TABLE 表名 DROP INDEX 列名; -- 刪除列的索引,就刪除了唯一約束

  (3) 主鍵約束(PRIMARY KEY)

    限定了列的數據非空且唯一;一張表中只能有一個列是主鍵,是表中的唯一標識。

    注意:現有表設置主鍵約束列時,列中不可有重復數據。

  CREATE TABLE 表名(列名 數據類型 NOT NULL,列名 數據類型 PRIMARY KEY); /*     建表時添加主鍵約束 */
  ALTER TABLE 表名 MODIFY 列名 數據類型 PRIMARY KEY; -- 現有表修改列為主鍵約束
  ALTER TABLE 表名 DROP PRIMARY KEY; -- 刪除表的主鍵,就刪除了列的主鍵約束

  (4) 自動增長(AUTO_INCREMENT)

    在某一數值類型列使用,可以完成值的自動增長,也可手動設值。一般配合主鍵使用。

    注意:自動增長是跟隨上一條數據的數值進行自動增長。如果一條數據都沒有,則會從 1 開始。

  CREATE TABLE 表名(列名 數據類型 PRIMARY KEY AUTO_INCREMENT); /*     建表時添加主鍵約束和自動增長 */
  ALTER TABLE 表名 MODIFY 列名 數據類型 AUTO_INCREMENT; -- 現有表修改為增加自動增長
  ALTER TABLE 表名 MODIFY 列名 數據類型; -- 刪除列的自動增長,但不刪除主鍵約束

  (5) 外鍵約束(FOREIGN KEY)

    將兩個表的產生關聯關系,防止誤操作,便於查詢,保證數據有效、正確、完整。

    外鍵對應主表的主鍵,故外鍵應設置到從表上,而且需要先建立主表再建立從表。

    主鍵和外鍵的關系是一對多,比如主鍵是部門表編號,外鍵就是員工表中的部門編號。

    注意:根據現有表創建外鍵約束,需要滿足約束要求,把從表的一列作為外鍵,和主鍵匹配。

      除NULL空值以外,如果外鍵有主鍵沒有的數據,就無法創建或者修改。

  CREATE TABLE 從表名(外鍵 數據類型,CONSTRAINT 外鍵名 FOREIGN KEY (外鍵) 
    REFERENCES 主表名(主表列名)); /* 創建表時創建關聯 */   ALTER TABLE 從表名 DROP FOREIGN KEY 外鍵名; -- 刪除外鍵   ALTER TABLE 從表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (外鍵) REFERENCES 主表名(主表列名); /*     現有從表創建關聯 */

  (6) 級聯

    將兩個通過外鍵約束的表,一次性修改兩個表的主鍵和外鍵數據。

    級聯更新是主鍵數據修改時,外鍵跟着修改;級聯刪除是主鍵數據刪除,外鍵數據跟着刪除。

    注意:級聯雖然很方便,但是效率低、風險大,在大系統中使用這兩種級聯要慎重。

    ALTER TABLE 從表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (外鍵) REFERENCES 主表名(主表列名)         ON UPDATE CASCADE; /* 現有從表創建關聯並且設置級聯更新 */
    ALTER TABLE 從表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (外鍵) REFERENCES 主表名(主表列名)         ON UPDATE CASCADE ON DELETE CASCADE; /* 現有從表創建關聯並且設置級聯更新和級聯刪除 */


免責聲明!

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



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