天天看點

[資料庫原理] SQL概述SQLSQL文法 SQL語句分類   DDLDMLDCL

SQL

  1. 什麼是SQL:結構化查詢語言(Structured Query Language)。
  2. SQL的作用:用戶端使用SQL來操作伺服器,如啟動mysql.exe,連接配接伺服器後,就可以使用sql來操作伺服器了。
  3. SQL标準(例如SQL99,即1999年制定的标準):由國際标準化組織(ISO)制定的,對DBMS的統一操作方式(例如相同的語句可以操作:mysql、oracle等)。
  4. SQL方言:某種DBMS不隻會支援SQL标準,而且還會有一些自己獨有的文法,這就稱之為方言!例如limit語句隻在MySQL中可以使用

SQL文法

  1. SQL語句可以在單行或多行書寫,以分号結尾
  2. 可使用空格和縮進來增強語句的可讀性
  3. MySQL不差別大小寫,建議使用大寫

SQL語句分類

  1. DDL(Data Definition Language):資料定義語言,用來定義資料庫對象:庫、表、列等;建立、删除、修改:庫、表結構!!!
  2. DML(Data Manipulation Language):資料操作語言,用來定義資料庫記錄(資料); 增、删、改:表記錄
  3. DCL(Data Control Language):資料控制語言,用來定義通路權限和安全級别;
  4. DQL(Data Query Language):資料查詢語言,用來查詢記錄(資料)。

總結

  • ddl:資料庫或表的結構操作
  • dml:對表的記錄進行更新(增、删、改)
  • dql:對表的記錄的查詢
  • dcl:對使用者的建立,及授權!

DDL

資料庫

  • 檢視所有資料庫:SHOW DATABASES
  • 切換(選擇要操作的)資料庫:USE 資料庫名
  • 建立資料庫:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]
  • 删除資料庫:DROP DATABASE [IF EXISTS] mydb1
  • 修改資料庫編碼:ALTER DATABASE mydb1 CHARACTER SET utf8

資料類型

  • int:整型
  • double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;
  • decimal:浮點型,在表單錢方面使用該類型,因為不會出現精度缺失問題;
  • char:固定長度字元串類型; char(255),資料的長度不足指定長度,補足到指定長度!
  • varchar:可變長度字元串類型; varchar(65535), zhangSan
  • text(clob):字元串類型;
  • blob:位元組類型;
  • date:日期類型,格式為:yyyy-MM-dd;
  • time:時間類型,格式為:hh:mm:ss
  • datetime:日期時間類型,格式為:timestamp
  • timestamp:時間戳類型

  • 檢視目前資料庫中所有表名稱:SHOW TABLES;
  • 檢視表結構:DESC 表名;
  • 删除表:DROP TABLE 表名;
  • 建立表:CREATE TABLE [IF NOT EXISTS] 表名(

        列名 列類型,

        列名 列類型,

        ...

        列名 列類型

      );

  • 修改表:字首:ALTER TABLE 表名
  • 修改之添加列:ALTER TABLE 表名 ADD (

          列名 列類型,

          列名 列類型,

          ...

        );

  • 修改之修改列類型:ALTER TABLE 表名 MODIFY 列名 列類型;
  • 修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列類型;
  • 修改之删除列:ALTER TABLE 表名 DROP 列名;
  • 修改表名稱:ALTER TABLE 原表名 RENAME TO 新表名;

DML

插入

  • INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);
  • INTERT INTO 表名 VALUES(列值1, 列值2,...);

修改

  • UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 條件];
  • 幾個常見的條件:
    WHERE age >= 18 AND age <= 80
    WHERE age BETWEEN 18 AND 80
    
    WHERE name='zhangSan' OR name='liSi'
    WHERE name IN ('zhangSan', 'liSi')
    WHERE age IS NULL, 不能使用等号
    WHERE age IS NOT NULL
               

删除

  • DELETE FROM 表名 [WHERE 條件];
  • TRUNCATE TABLE 表名:TRUNCATE是DDL語句,它是先删除drop該表,再create該表。而且無法復原!!

DCL

建立使用者

  • CREATE USER 使用者名@IP位址 IDENTIFIED BY '密碼'; --使用者隻能在指定的IP位址上登入
  • CREATE USER 使用者名@'%' IDENTIFIED BY '密碼';--使用者可以在任意IP位址上登入

使用者授權

  • GRANT 權限1, … , 權限n ON 資料庫.* TO 使用者名@IP位址;
  • 例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO [email protected];
  • GRANT ALL ON 資料庫.* TO 使用者名@IP位址;

撤銷授權

  • REVOKE 權限1, … , 權限n ON 資料庫.* FROM 使用者名@IP位址;
  • 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM [email protected];

檢視權限

  • SHOW GRANTS FOR 使用者名@IP位址

删除使用者

  •  DROP USER 使用者名@IP位址

繼續閱讀