天天看點

MySQL基礎文法DDL,DML,DCL,DQL

MySQL資料庫基礎文法

  • DDL,DML,DCL,DQL
    • DDL
    • DML
      • INSERT
      • DELETE
      • UPDATE
    • DCL
    • DQL
      • 列控制
      • 條件控制

DDL,DML,DCL,DQL

  1. DDL(Data Definition Language)資料定義語言,用來定義資料庫對象,操作表結構
  2. DML(Data Manipulation Language)資料操作語言,用來定義資料庫記錄(資料),操作表記錄
  3. DCL(Data Control Language)資料控制語言,用來定義通路權限和安全級别
  4. DQL(Data Query Language)資料查詢語言,用來查詢記錄(資料)

DDL

建立:

CREATE

DATABASE 資料庫名;

删除:

DROP

DATABASE 資料庫名;

改變使用的資料庫:

USE

資料庫名;

  1. 建立:

    CREATE

    TABLE 表名(

    列名 列類型,

    列名 列類型,

    列名 列類型

    );

  2. 檢視目前資料庫中所有表名稱:SHOW TABLES;
  3. 檢視指定表的建立語句:SHOW CREATE TABLE 表名;
  4. 檢視表結構:

    DESC

    表名;
  5. 删除表:

    DROP

    TABLE 表名;
  6. 修改表:

    ALTER

    TABLE 表名(字首)
  7. 修改表之添加列:

    ALTER

    TABLE 表名

    ADD

    (

    列名 列類型,

    列名 列類型,

    列名 列類型

    );

  8. 修改表之修改列類型:

    ALTER

    TABLE 表名

    MODIFY

    列名 列類型;(如果列被修改之前已存在資料,那麼新的類型可能會影響到已存在的資料)
  9. 修改表之修改列名:

    ALTER

    TABLE 表名

    CHANGE

    原列名 新列名 列類型;
  10. 修改表之删除列:

    ALTER

    TABLE 表名

    DROP

    列名;
  11. 修改表名稱:

    ALTER

    TABLE 原表名

    RENAME TO

    新表名;

DML

INSERT

INSERT INTO 表名[(列名,列名,…)] values(值,值,…);

值的順序與聲明的字段的順序保持一緻

插入多條記錄:

INSERT INTO 表名[(列名,列名,…)] values (記錄),(記錄),(記錄);

複制表:

CREATE TABLE 要複制的表的表名 SELECT * FROM 新表名;#複制表結構及其資料

DELETE

DELETE FROM 表名[where 條件語句];

UPDATE

UPDATE 表名 SET 列名 = 新值,列名 = 新值,… [where 條件語句];

DCL

  1. 建立使用者:

    |-

    CREATE

    USER 使用者名@IP位址

    IDENTIFIED BY

    ‘密碼’;

    (使用者隻能在指定IP位址上登入)

    |-

    CREATE

    USER 使用者名@’%’

    IDENTIFIED BY

    ‘密碼’;

    (使用者可以在任意IP位址上登入)

  2. 使用者授權

    |-

    GRANT

    權限1,權限2.。。。權限n

    ON

    資料庫.*

    TO

    使用者名@IP位址;

    (給予使用者指定資料庫的部分權限,例如:CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT權限)

    |-

    GRANT

    ALL

    ON

    資料庫.*

    TO

    使用者名@IP位址;

    (給予使用者指定資料庫的全部權限)

  3. 撤銷授權

    REVOKE

    權限1,權限2.。。。權限n

    ON

    資料庫.*

    FROM

    使用者名@IP位址;

    (撤銷指定使用者在指定資料庫的指定權限)

  4. 檢視權限

    SHOW GRANTS FOR

    使用者名@IP位址;

    (檢視指定使用者的權限)

  5. 删除使用者

    DROP

    USER 使用者名@IP位址;

DQL

列控制

  1. 査洵所有列:SELECT * FROM表名;

    –>其中" * ”表示査洵所有列

  2. 査洵指定列

    SELECT 列1 [,列2,…列N] FROM 表名;

  3. 完全重複的記錄隻記一次

    當査洵結果中的多行記錄一-模一 祥吋,隻顯示一行。

    SELECT

    DISTINCT

    * (列1 [,列2,…列N] ) FROM表名;
  4. 列運算

    |- 數量類型的列可以做加、減、乘、除運算

    SELECT 列名*1.5 FROM 表名;

    SELECT 列名 + 列名 FROM 表名;

    |- 字元串類型可以做連續運算

    SELECT

    CONCAT('S', 列名)

    FROM 表名;

    |- 轉換NULL値

    有吋需要把NULL值轉換成其它値,例如:列名+1000吋, 如果此列存在NULL値,那麼NULL+1000就是NULL,而我們希望把NULL目前0來運算.SELECT

    IFNULL (列名, 0)

    +1000 FROM 表名;

    |- 給列起別名

    SELECT IFNULL(列名, 0)+1000

    AS 别名

    FROM 表名;

    –>其中As可以省略

條件控制

  1. 條件查詢

select empno,ename,comm from emp where sal > 10000 and comm is not null;

MySQL基礎文法DDL,DML,DCL,DQL

select empno,ename,comm from emp where sal between 20000 and 30000;

MySQL基礎文法DDL,DML,DCL,DQL

select empno,ename,job from emp where job in ('經理','董事長');

MySQL基礎文法DDL,DML,DCL,DQL
  1. 模糊查詢

當你想查詢姓張,并且姓名一共兩個字的員工時

MySQL基礎文法DDL,DML,DCL,DQL

模糊查詢需要使用運算符:

LIKE

;上面栗子查詢的是姓張,并且名字由兩個字構成的人員

MySQL基礎文法DDL,DML,DCL,DQL

上面栗子查詢的是名字由三個字構成的人員

MySQL基礎文法DDL,DML,DCL,DQL

上面栗子查詢的是名字中含有“一”的人員