數據庫、數據表的基本操作及查詢數據


數據庫的基本操作

  1. 創建數據庫 CREATE DATABASE database_name
    database_name為要創建的數據庫的名稱

  2. 刪除數據庫 DROP DATABASE database_name
    database_name為要刪除的數據庫的名稱

  3. 數據庫存儲引擎
    數據庫存儲引擎是數據庫底層軟件組成,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據操作。
    MySQL的核心就是存儲引擎。


    存儲引擎比較

    功能 MyISAM Memory InnoDB Archive
    存儲限制 256TB RAM 64TB None
    支持事務 No No Yes No
    支持全文索引 Yes No No No
    支持數索引 Yes Yes Yes No
    支持哈希索引 No Yes No No
    支持數據緩存 No N/A Yes No
    支持外鍵 No No Yes No

數據表的基本操作

創建數據表

  1. 創建表的語法形式
    CREATE TABLE<表名>
    (
        字段名1 數據類型 [列級別約束條件] [默認值],
        字段名2 數據類型 [列級別約束條件] [默認值],
        ……
        [表級別約束條件]
    );
    
  2. 使用主鍵約束

    主鍵約束要求主鍵列的數據唯一,並且不允許為空。他能唯一地標識表中的一條記錄,可以結合外鍵來定義不同數據表之間的關系,並且可以加快數據庫查詢的速度。

    1. 單字段主鍵
      1. 在定義列的同時指定主鍵。 字段名 數據類型 PRIMARY KEY [默認值]
      2. 在定義完所有列之后指定主鍵。 [CONSTRAINT <約束名>] PRIMARY KEY [字段名]
    2. 多字段聯合主鍵
      主鍵由多個字段聯合組合而成。 PRIMARY KEY [字段1、字段2...]
      其位置放置在定義完所有的主鍵之后
  3. 使用外鍵約束
    外鍵用來在兩個表的數據之間建立鏈接,它可以是一列或者多列。一個表可以有一個或多個外鍵。
    [CONSTRAINT<外鍵名>] FOREIGN KEY 字段1[,字段2...] REFERENCES<主表名> 主鍵列1[,主鍵列2...]
  4. 使用非空約束
    非空約束指字段的值不能為空。對於使用了非空約束的字段,如果用戶在添加數據時沒有指定值,數據庫系統會報錯。 字段名 數據類型 NOT NULL
  5. 使用唯一性約束
    唯一性約束要求該列唯一,允許為空,但只能出現一個空值。
    唯一約束可以確保一列或者幾列不出現重復值。
    1. 在定義完列之后直接指定唯一約束。字段名 數據類型 UNIQUE
    2. 在定義完所有列之后指定唯一約束。[CONSTRAINT<約束名>] UNIQUE(<字段名>)
  6. 使用默認約束
    默認約束指定某列的默認值。 字段名 數據類型 DEFAULT 默認值
  7. 設置表的屬性值自動增加
    在數據庫應用中,可以通過為表的主鍵添加 AUTO_INCREMENT關鍵字來實現:當每新增加一條記錄,使該主鍵自動加一。一個表只能有一個字段使用 AUTO_INCREMENT約束,且該字段必須為主鍵的一部分。其約束的字段可以是任何整數類型。
    字段名 數據類型 AUTO_INCREMENT

查看數據表結構

  1. 查看表基本結構語句
    DESCRIBE 表名; 或者簡寫為 DESC 表名;
  2. 查看表詳細結構語句
    SHOW CREATE TABLE <表名/G>;
    如果不加 /G參數,顯示的結果可能非常混亂,加上參數 /G后,可使顯示結果更加直觀,易於查看。

修改數據表

  1. 修改表名
    ALTER TABLE <舊表名> RENAME [TO] <新表名>;
  2. 修改字段的數據類型
    ALTER TABLE <表名> MODIFY <字段名> <數據類型>;
  3. 修改字段名
    ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <新數據類型>;
  4. 添加字段
    ALTER TABLE <表名> ADD <新字段名> <新數據類型> [約束條件] [FIRST|AFTER 已存在字段名];
  5. 刪除字段
    ALTER TABLE <表名> DROP <字段名>;
  6. 修改字段的排列位置
    ALTER TABLE <表名> MODIFY <字段1> <數據類型> FIRST|AFTER <字段2>;
  7. 更改表的存儲引擎
    ALTER TABLE <表名> ENGINE=<更改后的存儲引擎名>;
  8. 刪除表的外鍵約束
    ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>;

刪除數據表

DROP TABLE [IF EXISTS] 表1,表2...表n;

查詢數據

基本查詢語句

SELECT
    {*|<字段列表>}
    [
        FROM <表1>,<表2>...
        [WHERE <表達式>]
        [GROUP BY <group by definition>]
        [HAVING <expression>[{<operator><expression>}...]]
        [ORDER BY <order by definition>]
        [LIMIT [offset,] <row count>]
    ]
    
 SELECT [字段1,字段2,...,字段n]
 FROM [表或視圖]
 WHERE [查詢條件];

單表查詢

  1. 查詢所有字段
    SELECT * FROM 表名;
  2. 查詢指定字段
    SELECT 字段名1[,字段名2,...,字段名n] FROM 表名;
  3. 查詢指定記錄
    SELECT語句中,通過 WHERE子句可以對數據進行過濾。
    SELECT 字段名1[,字段名2,...,字段名n] FROM 表名 WHERE 查詢條件;
  4. IN關鍵字的查詢
    IN操作符用來查詢滿足指定范圍內的條件的記錄,使用 IN操作符,將所有檢索條件用括號括起來,檢索條件之間用逗號隔開,只要滿足條件范圍內的一個值即為匹配項。
    IN關鍵字前面加上 NOT即可使得查詢的結果正好相反。
  5. BETWEEN AND的范圍查詢
    BETWEEN AND用來查詢某個范圍內的值,該操作符需要有兩個參數,即范圍的開始值和結束。如果字段值滿足指定的范圍查詢條件,則這些記錄被返回。
    同樣,在BETWEEN AND關鍵字前面加上 NOT即可使得查詢的結果正好相反。
  6. LIKE的字符匹配查詢
    LIKE關鍵字即是使用通配符來進行匹配查找。通配符是一種在SQL的 WHERE條件子句中擁有特殊意思的字符,可以和 LIKE一起使用的通配符有 %_
    百分號通配符 %,匹配任意長度的字符,甚至包括零字符。
    下划線通配符 _ ,一次只能匹配任意一個字符。
  7. 查詢空值
    空值不同於0,也不同於空字符串。空值一般表示數據未知、不適用或將在以后添加數據。
    SELECT語句中使用 IS NULL子句,可以查詢某字段內容為空記錄。
  8. AND的多條件查詢
    AND主要用於 WHERE子句中,用來鏈接兩個甚至多個查詢條件,表示所有的條件都需要滿足才會返回值。
  9. OR的多條件查詢
    OR也主要用於 WHERE子句中,用來鏈接兩個甚至多個查詢條件,表示所有的條件僅需滿足其中之一項便會返回值。
  10. 查詢結果不重復
    SELECT語句中,使用 DISTINCT關鍵字來指示MySQL消除重復的記錄。
    SELECT DISTINCT 字段名 FROM 表名;
  11. 對查詢結果排序
    ORDER BY語句來對查詢的結果進行排序。
    在后面添加 DESC表示降序排序
    在后面添加 ASC或默認,表示升序排序
  12. 分組查詢
    在MySQL中使用 GROUP BY來對數據進行分組
    [GROUP BY 字段] [HAVING <條件表達式>] [WITH ROLLUP]
    HAVING 關鍵字用來過濾數據,因為 WHERE不能和 GROUP BY混用
    WITH ROLLUP關鍵字是在所有查詢出的記錄之后增加一條記錄,該記錄計算查詢出的所有記錄的總和,即統計記錄數量。但是ROLLUP和能夠與 GROUP BY同時使用的ORDER BY不能同時使用。
  13. 使用 LIMIT限制查詢結果的數量
    LIMIT [位置偏移量,] 行數

使用集合函數查詢

函數 作用
AVG() 返回某列的平均值
COUNT() 返回某列的行數
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值的和

連接查詢

  1. 內連接查詢
    在內連接查詢中,只有滿足條件的記錄才能出現在結果關系中。兩個表之間的關系通過 (INNER) JOIN指定。 使用這種語法的時候,連接的條件使用 ON子句給出,而不是用 WHERE
  2. 外連接查詢
    1. LEFT JOIN左連接
      返回包括左表中的所有記錄和右表中連接字段相等的記錄。
    2. RIGHT JOIN右連接
      返回包括右表中的所有記錄和左表中連接字段相等的記錄。
  3. 復合條件連接查詢
    復合條件連接查詢是在連接查詢的過程中,通過添加過濾條件,限制查詢的結果,使查詢的結果更加准確。

子查詢

子查詢指一個查詢語句嵌套在另一個查詢語句內部的查詢。

  1. ANYSOME關鍵字的子查詢
    ANYSOME關鍵字是同義詞,表示滿足其中任一條件,它們允許創建一個表達式對子查詢的返回值列表進行比較,只要滿足內層子查詢中的任何一個比較條件,就返回一個結果作為外層查詢的條件。
  2. ALL關鍵字的子查詢
    使用 ALL時,需要同時滿足所有內層查詢的條件。
  3. EXISTS關鍵字的子查詢
    EXISTS關鍵字后面的參數是一個任一的子查詢,系統對子查詢進行運算以判斷它是否返回行,如果至少返回一行,那么 EXISTS的結果為 true,此時外層查詢語句將進行查詢;如果子查詢沒有返回任何行,那么 EXISTS的結果為 false,此時外層語句不進行查詢。
  4. IN關鍵字的子查詢
    使用 IN關鍵字進行子查詢時,內層查詢語句僅僅返回一個數據列,這個數據列里的值將提供給外層查詢語句進行比較操作。當外層查詢語句內只要有一個內層查詢語句返回的數據列中的數據時,則判斷為滿足條件,外層查詢語句將進行查詢。
  5. 帶比較運算符的子查詢
    子查詢可以使用如 '<','<=','=','>','>=','!='等比較運算符。

合並查詢結果

利用 UNION關鍵字,可以給出多條 SELECT語句,並將他們的結果組合成單個結果集。合並時,兩個表對應的列數和數據類型必須相同。各個 SELECT語句之間使用 UNIONUNION ALL關鍵字分割。 UNION不適用關鍵字 ALL,執行的時候刪除重復的記錄,所有返回的行都是唯一的;使用關鍵字 ALL的作用時不刪除重復行也不對結果進行自動排序。

為表和字段取別名

  1. 為表取別名
    表名 [AS] 表別名
  2. 為字段取別名
    列名 [AS] 列別名

使用正則表達式查詢

MYSQL中使用 REGEXP關鍵字指定正則表達式的字符匹配模式。

正則表達式常用字符匹配列表

選項 說明
^ 匹配文本的開始字符
$ 匹配文本的結束字符
. 匹配任何單子符
* 匹配零個或多個在他前面的字符
+ 匹配前面的字符1次或多次
<字符串> 匹配保護指定的字符串的文本
[字符集合] 匹配字符集合中的任何一個字符
[^] 匹配不在括號中的任何字符
字符串{n,} 匹配前面的字符串至少n次
字符串{n,m} 匹配前面的字符串至少n次,至多m次


免責聲明!

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



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