Blog.059 MySQL 資料庫管理
本章目錄
1. MySQL 資料基礎
1.1 庫和表
1.2 常用的資料型別
2. 檢視資料庫結構
3. SQL 語句
4. 建立及刪除資料庫和表
5. 向資料表中插入新的資料記錄
6. 修改表名和表結構
7. 資料表高階操作
(1)資料庫 –> 資料表 –> 行(記錄):用來描述一個物件的資訊
(2)_______________ 列(欄位):用來描述物件的一個屬性
int | 整型 |
float | 單精度浮點,4位元組32位 |
double | 雙精度浮點,8位元組64位 |
char |
固定長度的字元型別 |
varchar | 可變長度的字元型別 |
text | 文字 |
image | 圖片 |
decimal(5,2) | 5個有效長度數字,小數點後面有2位 |
(1)檢視當前伺服器中的資料庫
- SHOW DATABASES; #大小寫不區分,分號“;”表示結束
(2)檢視資料庫中包含的表
- USE 資料庫名;
- SHOW TABLES;
(3)查看錶的結構(欄位)
- USE 資料庫名;
- DESCRIBE [資料庫名.]表名;
- 可縮寫成:DESC 表名;
SQL語句用於維護管理資料庫,包括資料查詢、資料更新、訪問控制、物件管理
DDL | 資料定義語言,用於建立資料庫物件,如庫、表、索引等 |
DML | 資料操縱語言,用於對錶中的資料進行管理 |
DQL | 資料查詢語言,用於從資料表中查詢符合條件的資料記錄 |
DCL | 資料控制語言,用於設定或者更改資料庫使用者或角色許可權 |
(1)建立新的資料庫
- CREATE DATABASE 資料庫名;
(2)建立新的表
- CREATE TABLE 表名 (欄位1 資料型別,欄位2 資料型別[,...][,PRIMARY KEY (主鍵名)]);
- 主鍵一般選擇能代表唯一性的欄位不允許取空值(NULL),一個表只能有一個主鍵。
(3)刪除指定的資料表
- DROP TABLE [資料庫名.]表名; #如不用USE進入庫中,則需加上資料庫名
(4)刪除指定的資料庫
- DROP DATABASE 資料庫名;
(1)向資料表中插入新的資料記錄
- INSERT INTO 表名(欄位1,欄位2[,...]) VALUES(欄位1的值,欄位2的值,...);
- 查詢表的資料記錄:SELECT * FROM ab;
(2)查詢資料記錄
- SELECT 欄位名1,欄位名2[,...] FROM 表名 [WHERE 條件表示式];
(3)修改、更新資料表中的資料記錄
- UPDATE 表名 SET 欄位名1=欄位值1[,欄位名2=欄位值2] [WHERE 條件表示式];
(4)在資料表中刪除指定的資料記錄
- DELETE FROM 表名 [WHERE 條件表示式];
(1)修改表名
- ALTER TABLE 舊錶名 RENAME 新表名;
(2)擴充套件表結構(增加欄位)
- ALTER TABLE 表名 ADD address varchar(50) default '地址不詳';
- #default '地址不詳':表示此欄位設定預設值 地址不詳;可與 NOT NULL 配合使用
(3)修改欄位(列)名,新增唯一鍵
- ALTER TABLE 表名 CHANGE 舊列名 新列名 資料型別 [unique key];
(4)刪除欄位
- ALTER TABLE 表名 drop 欄位名;
(5)使用 if 判斷 建立表並測試自增和填充
- #if not exists:表示檢測要建立的表是否已存在,如果不存在就繼續建立
- #int(4) zerofill:表示若數值不滿4位數,則前面用“0”填充,例0001
- #auto_increment:表示此欄位為自增長欄位,即每條記錄自動遞增1,預設從1開始遞增;自增長欄位資料不可以重複;自增長欄位必須是主鍵;如新增的記錄資料沒有指定此欄位的值且新增失敗也會自動遞增一次
- #unique key:表示此欄位唯一鍵約束,此欄位資料不可以重複;一張表中只能有一個主鍵, 但是一張表中可以有多個唯一鍵
- #not null:表示此欄位不允許為NULL
(1)克隆表,將資料表的資料記錄生成到新的表中
- 方法一:先複製表再匯入資料
- 方法二:複製表的同時匯入資料
(2)清空表,刪除表內的所有資料
- 方法一:delete刪除
- delete from test01;
#DELETE清空表後,返回的結果內有刪除的記錄條目;DELETE工作時是一行一行的刪除記錄資料的;如果表中有自增長欄位,使用DELETE FROM 刪除所有記錄後,再次新新增的記錄會從原來最大的記錄 ID 後面繼續自增寫入記錄。
- 方法二:truncate刪除
- truncate table test01;
#TRUNCATE 清空表後,沒有返回被刪除的條目;TRUNCATE 工作時是將表結構按原樣重新建立,因此在速度上 TRUNCATE 會比 DELETE 清空錶快;使用 TRUNCATE TABLE 清空表內資料後,ID 會從 1 開始重新記錄。
(3)建立臨時表
臨時表建立成功之後,使用SHOW TABLES命令是看不到建立的臨時表的,臨時表會在連線退出後被銷燬。 如果在退出連線之前,也可以可執行增刪改查等操作,比如使用 DROP TABLE 語句手動直接刪除臨時表。
- CREATE TEMPORARY TABLE 表名 (欄位1 資料型別,欄位2 資料型別[,...][,PRIMARY KEY (主鍵名)]);
(4)建立外來鍵約束,保證資料的完整性和一致性
- 主鍵表和外來鍵表的理解:
以公共關鍵字作主鍵的表為主鍵表(父表、主表)
以公共關鍵字作外來鍵的表為外來鍵表(從表、外表)
注意:與外來鍵關聯的子表的欄位必須設定為主鍵。要求主表外來鍵欄位和子表的欄位具備相同的資料型別、字元長度和約束。
(5)外來鍵的定義:
- 如果同一個屬性欄位x在表一中 是主鍵,而在表二中不是主鍵,則欄位x稱為表二的外來鍵
(6)MySQL中6種常見的約束:
- 主鍵約束(primary key)
- 外來鍵約束(foreign key)
- 非空約束(not null)
- 唯一性約束(unique [key|index])
- 預設值約束(default)
- 自增約束(auto_increment)
-