[數據庫原理] SQL概述

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 user1@localhost;
  • GRANT ALL ON 數據庫.* TO 用戶名@IP地址;

撤銷授權

  • REVOKE 權限1, … , 權限n ON 數據庫.* FROM 用戶名@IP地址;
  • 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

查看權限

  • SHOW GRANTS FOR 用戶名@IP地址

刪除用戶

  •  DROP USER 用戶名@IP地址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章