Part01_MySQL數據庫的基本操作
------------------------------------------------------------------------------------
內容大綱:
1. 對數據庫的操作(創建數據庫、刪除數據庫、數據庫的存儲引擎)
2. 對表的操作(創建、修改、刪除和查看錶)
3. 索引(創建、刪除、查看索引)
4. 視圖(創建、刪除、查看、修改視圖)
5. 觸發器(創建、刪除、查看、使用觸發器)
------------------------------------------------------------------------------------
正文:
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 登錄進去數據庫
01. WIN + CMD -> mysql –u –root -p
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第01章:數據庫概述
01. 數據庫_是指長期存儲在計算機內、有組織、可共享的數據集合。
02. 數據庫泛型_是指數據庫應遵循的規則。(最低要求的範式是第一範式(1NF),然後2NF...)
03. 數據庫系統(DataBase System,DBS)_ 由數據庫、數據庫管理系統、應用開發工具等構成。
04. 數據庫管理系統(DataBase Management System, DBS)_定義數據、管理和維護數據的軟件。
05. SQL語言(Structured Query Language 結構化查詢語言)_ 用於存儲數據、管理數據、更新數據和管理關係數據庫系統。
00.SQL分爲三個部分數據定義語言(Data Definition Language, DDL)
01.數據庫定義語言(Data Definition Language, DDL)_定義數據庫、表、視圖、索引和觸發器等。
02.數據庫操作語言(Data Manipulation Language, DML)_ 插入數據、查詢數據、更新數據和刪除數據。
03.數據庫控制語言(Data Control Language, DCL) _ 控制用戶的訪問權限。
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第05章:創建數據庫
01. 創建數據庫: CREATE DATABASE 數據庫名;
02. 展示數據庫列表: SHOW DATABASES;
03. 刪除數據庫: DROP DATABASE 數據庫名;
04. 顯示數據庫存儲引擎: SHOW ENGINES;
05. 顯示數據庫支持的引擎: SHOW VARIABLES LIKE ‘have%’;
06. 查詢默認存儲引擎: SHOW VARIABLES LIKE ‘storage_engine’;
07. 使用數據庫: USE 數據庫名;
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第06章:創建、修改和刪除表
--------------> 我是小節的小小分界線 <--------------(創建表)
01. 創建表:
CREATE TABLE 表名(屬性名 數據類型 [完整性約束條件], 屬性名 數據類型 [完整性約束條件], ...);
02. 設置表的主鍵:
概念_主鍵是表的能唯一標識表中的每條信息的一個特殊字段。
作用_幫助MySQL以最快速度查找到表中的某一條信息。
單字段主鍵: 屬性名 PRIMARY KEY;
多字段主鍵: PRIMARY KEY(屬性名1, 屬性名2, ... 屬性名n);
03. 設置表的外鍵:
概念_通過外鍵爲該子表(外鍵)建立與父表(主鍵)的聯繫。
原則_必須依賴於與其父表的關聯關係。
語法_CONSTRAINT 外鍵別名 FOREIGN KEY (屬性名, 屬性名...)
REFERENCES 表名(父表主鍵對應的屬性名,父表主鍵對應的屬性名)
04. 設置表的非空約束
概念_非空性是指字段的值不能爲空值(NULL)。
作用_保證所有記錄中該字段都有值。
語法_屬性名 數據類型 NOT NULL
05. 設置表的唯一性約束
概念_唯一性是指所有記錄中該字段的值不能重複出現。
作用_保證所有記錄中該字段的值不能重複出現。
語法_屬性名 數據類型 UNIQUE
06. 設置表的屬性的值自動增加
作用_爲表中插入的新記錄自動生成唯一的ID。
使用注意_一個表中只能有一個作爲主鍵一部分的字段使用AUTO_INCREMENT約束。
默認情況下,該字段的值是從1開始自增的。
語法_屬性名 數據類型 AUTO_INCREMENT
07. 設置表的默認值。
語法1_屬性名 數據類型 DEFAULT 默認值
語法2_屬性名 數據類型 某約束條件 DEFAULT 默認值
08. 查看錶的結構
查看錶基本結構語句:DESCRIBE 表名;
DESC 表名;
查看錶詳細結構語句:SHOW CREATE TABLE 表名;
SHOW CREATE TABLE 表名 \G;
SHOW CREATE TABLE 表名 \g;
--------------> 我是小節的小小分界線 <--------------(修改表)
09. 修改表名
ALTER TABLE 舊錶名 RENAME [TO] 新表名;(在使用時[TO]不用寫上)
10. 修改字段的數據類型
ALTER TABLE 表名 MODIFY 屬性名 數據類型;
11. 修改字段名
ALTER TABLE 表名 CHANGE 舊屬性名 新屬性名 新數據類型;
12. 修改字段的排列位置
00. 通用語句
ALTER TABLE 表名 MODIFY 屬性名1 數據類型 FIRST | AFTER 屬性名2;
01. 字段修改到第一個位置
ALTER TABLE 表名 MODIFY 屬性名1 數據類型 FIRST;
02. 字段修改到指定位置(屬性名2的後面)
ALTER TABLE 表名 MODIFY 屬性名1 數據類型 AFTER 屬性名2;
13. 增加字段
00. 通用語句
ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] [FIRST | AFTER 屬性名2];
01. 在表的最後位置增加字段
ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件];
02. 在表的第一位置增加字段
ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] FIRST;
03. 在表的某一位置增加字段:(排列在屬性名2後面加上字段)
ALTER TABLE 表名 ADD 屬性名1 數據類型 [完整性約束條件] AFTER 屬性名2;
14. 刪除字段
ALTER TABLE 表名 DROP 屬性名;
15. 更改表的存儲引擎
ALTER TABLE 表名 ENGINE=存儲引擎名;
16. 刪除表的外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;
--------------> 我是小節的小小分界線 <--------------(刪除表)
17. 刪除沒有被關聯的普通表
DROP TABLE 表名;
18. 刪除被其他表關聯的父表
00. 有兩步驟:
01. 刪除該表的外鍵約束: ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;
02. 以刪除普通表的方法刪除: DROP TABLE 表名;
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第07章:索引
01. 索引的含義及特點
概念_索引是創建在表上的,是對數據庫表中一列或多列的值進行排序的一種結構。
作用_提高對錶中數據的查詢速度。(通過索引,查詢數據時可不必讀完記錄的所有信息,而只是查詢索引列。)
約束_不同的存儲引擎定義了每個表中的最大索引數和最大索引長度。所有存儲引擎對每個表至少支持16個索引,總索引長度至少爲256字節。
優點_提高檢索數據的速度。
缺點_創建和維護索引需要耗費時間,增加、刪除和修改數據時,要動態維護索引。
02. 索引的分類
1.普通索引_創建普通索引時,不附加任何限制條件。這類索引可以創建在任何數據類型中,其值是否唯一和非空由字段本身的完整性約束條件決定。
2.唯一性索引_UNIQUE_限制該索引的值必須是唯一的,主鍵就是一種特殊唯一性索引。
3.全文索引_FULLTEXT_查詢數據量較大的字符串類型的字段時,使用全文索引可以提高查詢速度。全文索引只能創建在CHAR、VARCHAR或TEXT的字段上。
4.單列索引_在表中的單個字段上創建索引。單列索引可以是普通索引,也可以是唯一必性索引,還可以是全文索引。
5.多列索引_在表的多個字段上創建一個索引,該索引指向創建時對應的多個字段,可以通過這幾個字段進行查詢。(只有查詢條件使用了這些字段中第一個字段時,索引纔會被使用。
6.空間索引_SPATIAL_空間索引只能建立在空間數據類型上,這樣可以提高系統獲取空間數據的效率。
03.創建表的時候創建索引
CREATE TABLE 表名(屬性名 數據類型 [完整性約束條件],
屬性名 數據類型 [完整性約束條件],
...
屬性名 數據類型 [完整性約束條件],
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [別名] (屬性名1 [(長度)] [ASC|DESC])
);
04.創建普通索引_INDEX(屬性名);
05.創建唯一性索引_UNIQUE INDEX 別名(屬性名 ASC|DESC);
06.創建全文索引_FULLTEXT INDEX 別名(屬性名); (目前只有MyISAM存儲引擎支持全文索引)
07.創建單列索引_INDEX(屬性名);
08.創建單列索引_INDEX(屬性名1, 屬性名2...);
09.創建空間索引_SPATIAL INDEX 別名(屬性名)
10.在已存在的表上創建索引
方法1: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (屬性名[(長度)] [ASC|DESC]);
方法2: ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(屬性名[(長度)] [ASC|DESC]);
11.刪除索引
DROP INDEX 索引名 ON 表名;
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第08章:視圖
01. 視圖相關概念
定義_視圖是一種虛擬的表,是從數據庫中一個或多個表中導出來的表。
特點_數據庫中只存放了視圖的定義,而並沒有存放視圖中的數據。視圖中的數據是依賴於原來的表中的數據的。
作用_使操作簡單化、增加數據的安全性、提高表的邏輯獨立性。
02. 創建視圖的語法形式
CREATE [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 視圖名 [(屬性清單)]
AS SELECT 語句
[WITH [CASCADED|LOCAL] CHECK OPTION];
03.查看用戶是否有權限使有視圖
SELECT Select_priv, Create_view_priv FROM mysql.user WHERE user = '用戶名';
04.在單表上創建視圖
CREATE
VIEW 視圖名(字段...)
AS SELECT (表字段...) * FROM 表名;
05.在多表上創建視圖
CREATE ALGORITHM = MERGE
VIEW 視圖名(視圖字段...)
AS SELECT(表字段...)
FROM 表名,表名 WHERE
WITH LOCAL CHECK OPTION;
06.查看視圖的基本信息
DESCRIBE 視圖名;
DESC 視圖名;
SHOW TABLE STATUS LIKE '視圖名';[\G \g]
SHOW CREATE VIEW 視圖名;[\G \g]
07.在表中查看視圖的詳細信息
SELECT * FROM 數據庫名.表名;[\G \g]
08.修改或創建視圖語句
CREATE OR REPLACE [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 視圖名 [(屬性清單)]
AS SELECT 語句
[WITH [CASCADED|LOCAL] CHECK OPTION];
09.修改視圖語句
ALTER [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW 視圖名[(屬性清單)]
AS SELECT 語句
[WITH [CASCADED|LOCAL] CHECK OPTION];
10.更新視圖(通過視圖來插入,更新和刪除表中的數據)
UPDATE 視圖名 SET 屬性名 = 值, 屬性名 = 值...;
11.刪除視圖
DROP VIEW [IF EXISTS] 視圖名列表 [RESTRICT|CASCADE];
------------------------------- [ 我是每章的分界線 ] -------------------------------
00. 第09章:觸發器
01.觸發器的基本概念
定義_觸發器(TRIGGER)是由事件來觸發某個操作。滿足觸發器的觸發條件時,數據庫系統就會執行觸發器中定義的程序語句。
02.創建只有一個執行語句的觸發器
CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
ON 表名 FOR EACH ROW 執行語句
03.創建有多個執行語句的觸發器
CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
ON 表名 FOR EACH ROW
BEGIN
執行語句列表
END
04.查看觸發器信息_SHOW TRIGGERS;
05.在triggers表中查看觸發器信息_ SELECT * FROM information_schema.triggers;
06.查詢指定觸發器的詳細信息_ SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME = '觸發器名';
07.刪除觸發器 DROP TRIGGER 觸發器名;