1. 程式人生 > 其它 >-資料庫DDL和DML基礎命令

-資料庫DDL和DML基礎命令

技術標籤:資料庫mysqljavasql

  1. 一、mysql命令

    1.1 mysql的基礎命令

    • 登入命令:如果在命令列出現了mysql>說明登入成功

      -- 會有警告提示,密碼是明文的
      mysql -uroot -p密碼
      -- 第二種,在命令列只輸入
          mysql -uroot -p    --回車
      -- 會提示輸入密碼,現在輸入密碼,是保密的。
          enter password:****
      -- 對於mysql完整的登入命令 -p密碼,-P埠 -h主機名
      mysql -uroot -p密碼 -P3306 -h127.0.0.1
      
    • 退出mysql:

      mysql>exit;
    • 檢視mysql資料庫管理系統中的所有資料庫

      -- 檢視所有的資料庫
      mysql > SHOW DATABASES;
      

      一般對於剛剛安裝的資料庫,會有預設的四張表,這四張表能不能刪除

      image-20201222101503440

    • 使用指定的資料庫

      mysql > USE 庫名;
      
    • 檢視資料庫中所有的表

      mysql > SHOW TABLES;
      

    二、資料庫結構化查詢語句SQL

    DDL:資料庫定義語言,包含:資料庫的建立、資料表的建立、刪除資料庫、刪除資料表、修改資料表。

    DML:資料庫操作語言,包含:新增資料、刪除資料、修改資料

    DQL:資料庫查詢語言,包含:查詢資料

    DCL:資料庫控制語言,用來給組員進行分發許可權的

    TCL:事務控制語言

    2.1 資料庫定義語言DDL

    • 使用命令列建立資料庫

      mysql > CREATE DATABASE 資料庫名;
      
    • 刪除資料庫命令

      DROP DATABASE db_shop;
      
    • 建立資料庫中的表:需要表中的欄位,規定欄位資料型別

      -- 先選擇到指定的資料庫
      USE 資料庫名;
      -- 建立表
      CREATE TABLE t_student(
          s_id int,
          s_name varchar(30),
          age int,
          gender char
      );
      
    • 檢視指定資料庫中所有的表

      mysql >SHOW TABLES;
      
    • 檢視指定表中的表結構

      mysql >DESC t_student;
      
    • 刪除一張表

      mysql > DROP TABLE t_student;
      
    • 複製一張表(只複製結構,不復制資料)

      mysql > CREATE TABLE student LIKE t_student;
      
    • 複製一張表,要將資料和結構一起賦值,下午再驗證

      mysql > CREATE TABLE stu AS (SELECT * FROM t_student);
      
    • 向表中新增一個欄位

      mysql > ALTER TABLE t_student ADD COLUMN tel VARCHAR(11);
      
    • 修改表中已經存在欄位的資料型別

      mysql > ALTER TABLE t_student modify gender VARCHAR(10);
      
    • 刪除表中的欄位

      mysql > ALTER TABLE t_student DROP gender;
      

    2.2 資料庫操作語言DML

    • 向資料庫中新增資料

      -- 新增語句:INSERT INTO 表名(欄位) value(值);
      INSERT INTO t_student(s_id,s_name,age,tel) value(1,"李四",18,"1100");
      -- 如果只有部分資料需要寫,那麼就新增部分資料即可
      INSERT INTO t_student(s_id,s_name) value(2,"張三");
      INSERT INTO t_student(s_id,age) value(3,19);
      -- 如果所新增的資料和表中的欄位完全一致(新增的資料和表中欄位的個數一致),表名後面可以不跟括號
      INSERT INTO t_student value(4,"王五",20,"1200");
      
    • 修改資料

      -- 修改資料:UPDATE 表名 SET 欄位 = 值;一般是不試用的這種方式,一次性將所有行中對應列的資料修改
      UPDATE t_student SET age = 10;
      -- 根據條件修改資料:UPDATE 表名 SET 欄位 = 值 WHERE s_id = 值;常用方式,根據主鍵修改指定行的資料
      UPDATE t_student SET age = 18 WHERE s_id = 1;
      -- 一次性修改多個欄位的值
      UPDATE t_student SET age = 28,tel = '1300' WHERE s_id = 2;
      
    • 刪除資料

      -- 刪除資料:DELETE FROM 表名;禁止使用
      DELETE FROM t_student;
      -- 根據條件刪除資料
      DELETE FROM t_student WHERE s_id = 1;
      

    2.3資料庫查詢語言DQL(最簡單的)

    -- 單表簡單查詢:
    SELECT * FROM 表名,SELECT * FROM t_student;
    

    三、資料型別

    3.1 資料庫的資料型別

    • 整型

      int:最常用的整型

      smallint:短整型

      bigint:長整型

      mediumint:中等整型

      tinyint:微整型

    • 浮點型

      double:雙精度浮點型

      float:單精度浮點型

      decimal(D,M):定點小數

    • 字元型

      char:定長的字元型

      varchar:變長的字元型

      兩者的區別:char因為是定長的,不管儲存的資料長度是多少,都直接給255記憶體大小,會一定的浪費空間,因為不需要計算開闢的空間大小,節約時間

      varchar:因為是變長的,需要執行兩次,第一次計算實際需要的記憶體空間,第二次才會真正的儲存資料,會節約記憶體大小,會消耗時間,一般在設定varchar型別的時候,會給指定長度,用來限制最大空間。

    • 位元組型別(瞭解)

      BLOB:位元組型別

      BIGBLOB:大位元組檔案

    • 文字型別

      text

    • 時間

      time:時間

      datatime:時間

      year:年

    四、資料庫設計

    4.1 鍵

    唯一鍵:能夠唯一識別出一行資料的欄位稱為唯一鍵,比如:學號、電話、身份證等。(瞭解)

    主鍵:從唯一鍵中選出作為識別一行資料的欄位稱為主鍵,一般將id設定主鍵

    候選鍵:從唯一鍵中,除了主鍵的欄位,其餘欄位稱為候選鍵(瞭解)

    外來鍵:一般用來關聯表與表中的關係,一個表中的外來鍵,都是另外一張表中主鍵的值,新增上外來鍵之後,不能在該外來鍵欄位中新增除了另外一張表中主鍵以外的值,如果在外來鍵中使用了資料,另外一張表的對應的主鍵資料,不能刪除。

    4.2 約束

    • 主鍵約束:如果將一個欄位設定為主鍵,那麼資料庫會自動識別是否重複,如果重複將不能存入。主鍵約束的關鍵在於不能重複。一般情況下,會將主鍵設定為自增。
    • 外來鍵約束:一個表中外來鍵欄位的值,只能是另一一張表中主鍵存在的值。表與表之間的關係
    • 非空約束:如果一個欄位設定為非空約束,那麼該欄位必須有值,不能為null
    • 預設值:給指定的欄位設定預設值,在新增的時候,如果沒有給該欄位新增資料,則資料庫會自動將預設值填充在該位置。
    • 自定義約束:用觸發器、儲存過程或者函式程式碼實現約束。

    4.3 正規化

    • 第一正規化:保證列的原子性
    • 第二正規化:保證每一個實體能夠被唯一區分出來,可以使用主鍵來滿足第二正規化
      中外來鍵欄位的值,只能是另一一張表中主鍵存在的值。表與表之間的關係
    • 非空約束:如果一個欄位設定為非空約束,那麼該欄位必須有值,不能為null
    • 預設值:給指定的欄位設定預設值,在新增的時候,如果沒有給該欄位新增資料,則資料庫會自動將預設值填充在該位置。
    • 自定義約束:用觸發器、儲存過程或者函式程式碼實現約束。

    4.3 正規化

    • 第一正規化:保證列的原子性
    • 第二正規化:保證每一個實體能夠被唯一區分出來,可以使用主鍵來滿足第二正規化
    • 第三正規化:保證每一個實體的欄位都和主鍵直接相關,而不是間接相關,如果有相關的資料資訊,使用外來鍵進行關聯