MySQL下對資料庫和表的操作
阿新 • • 發佈:2019-01-05
資料庫名詞解釋
主鍵
- 主鍵指的是能夠唯一表示表中每一行的資料,通過設定主鍵來讓表具有實體完整性。
- 主鍵可以為多列。
- 主鍵用於與其它表的外來鍵關聯,以及修改和刪除中唯一確定一行
實體完整性
- 要求每一個表中的主鍵欄位都不能為空或者重複的值。
索引
- 對錶中一列或多列進行排序並建立一一對應的聯絡,來加快搜索
- 索引會加快對錶的搜尋但是索引本身也會佔用儲存空間,所以應當只對經常需要查詢的列設定索引。
約束
- 約束是用於維護表中資料的資料完整性而新增的一些規則
- 約束可以限制加入表的資料的型別
外來鍵
- A表的主鍵中的關鍵字全部來自於B表的一列,那麼B表的這一列就是外來鍵
欄位
- 對錶中一列的屬性的說明,例如學生表中學號這一列,“學號”就是欄位
MySQL命令列操作
- 進入mysql安裝目錄的bin目錄,如:
- cd e:\mysql\bin
進入mysql操作介面
mysql -u root -p
輸入密碼即可進入
修改密碼
設定密碼為123456
mysqladmin -u root -p password 123456
啟動或關閉MySQL服務
啟動
net start mysql
關閉
net stop mysql
MySQL目錄結構
目錄 | 作用 |
---|---|
Bin | mysql應用程式目錄 |
Data | 資料目錄 |
Docs | 文件 |
Include | 標頭檔案 |
Lib | 庫檔案 |
Mysql-test | 測試目錄 |
Share | 存放字符集及不同語言資訊 |
Sql-bench | 壓力測試工具 |
Mydefault.ini | mysql配置檔案 |
備份與恢復
備份資料庫
mysqldump -uroot -p123456 --database <資料庫名> > f:\<資料庫名>.sql
恢復資料庫
mysql -uroot -p123456 < f:<資料庫名>.sql
儲存引擎
檢視儲存引擎
Show engines
常見的三種儲存引擎
儲存引擎 | 特點 |
---|---|
Innodb(預設) | 對資料完整性要求嚴格,支援事務和外來鍵,讀寫速度一般,可以持久儲存 |
Myisam | 不支援事務和外來鍵,讀寫快,可以持久儲存,對完整性沒有要求 |
menory | 不支援事務和外來鍵,讀寫快,不能持久儲存,對完整性沒有要求 |
SQL語言的分類
SQL語言共分為四大類:
資料查詢語言DQL | 資料操縱語言DML | 資料定義語言DDL | 資料控制語言DCL |
---|---|---|---|
SELECT <欄位名錶> | 插入:INSERT | 建立表:CREATE TABLE | 回滾:ROLLBACK |
FROM <表或檢視名> | 更新:UPDATE | 建立庫:CREATE DATABASE | 顯式提交:COMMIT |
WHERE <查詢條件> | 刪除:DELETE | 建立索引:CREATE INDEX | 隱式提交:ALTER,COMMENT,DROP |
SQL對資料庫的操作
用utf-8字符集建立庫
CREATE DATABASE 資料庫名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
檢視系統中的所有資料庫
SHOW DATABASES
使用某個資料庫
USE <資料庫名>
刪除資料庫
DROP DATABASE <資料庫名>
SQL對錶的操作
檢視當前資料庫中的表
SHOW TABLES;
查看錶結構
DESC 表名;
MySQL資料型別
型別 | 特性 |
---|---|
INT | 整形 |
FLOAT | 單精度 |
DOUBLE | 雙精度 |
DATE | 年月日,2018-01-01 |
DATETIME | 年月日,時分秒,2018-01-01 12:01:01 |
TIMESTAMP | 毫秒值的時間表達形式 |
VARCHAR | 字元型別,括號中引數可以設定字元個數上限 |
約束種類
約束 | 作用 |
---|---|
NOT NULL | 不為空 |
NULL | 可以為空 |
PRIMARY KEY | 設定為主鍵:主鍵本身具有唯一性 |
UNIQUE KEY | 設定為唯一:該列的值不能重複* |
AUTO_INCREMENT | 設定為自增 |
DEFAULT | 設定預設值 |
COMMENT’String’ | 欄位的註釋 |
ENGINE | 指定表的儲存引擎 |
建立表
CREATE TABLE 表名 ( id INT(10) PRIMARY KEY,NAME VARCHAR(10) NOT NULL )
關鍵字 | 作用 |
---|---|
INT(10) | 整形,長度為10 |
PRIMARY KEY | 主鍵,不能為空,不能重複 |
VARCHAR(10) | 字串,長度為10 |
NOT NULL | 不能為空 |
複製表
只複製表結構及約束,但不復制資料
CREATE TABLE 新表 LIKE 舊錶
複製表結構及資料,但不復制約束
CREATE TABLE 新表 AS SELECT * FROM 舊錶
修改表
ALTER TABLE <表名> <修改選項>
新增
新增欄位
ALTER TABLE <表名稱> ADD COLUMN <欄位名> <欄位型別> 約束條件(可選)
新增主鍵
ALTER TABLE <表名稱> ADD PRIMARY KEY ( <設定為主鍵的欄位> )
修改
修改表的名稱
ALTER TABLE <表名稱> RENAME <新的表名稱>
批量改表名
RENAME TABLE 表1 TO 表1新名字,表2 TO 表2新名字;
修改欄位名稱
- 注意:欄位型別的相容性及精度,除非該列全部資料為null
ALTER TABLE <表名稱> CHANGE COLUMN <舊的欄位名> <新的欄位名> <欄位型別>
修改欄位型別
- 注意:相容性及精度,除非該列全部資料為null
ALTER TABLE <表名稱> MODIFY COLUMN <欄位名> <新的欄位型別>
修改欄位約束,設定預設值
ALTER TABLE <表名稱> ALTER COLUMN <欄位名> SET DEFAULT <預設值>
刪除
刪除預設值
ALTER TABLE <表名稱> ALTER COLUMN <欄位名> DROP DEFAULT
刪除欄位
ALTER TABLE <表名稱> DROP COLUMN <欄位名>
刪除主鍵
ALTER TABLE <表名稱> DROP PRIMARY KEY
刪除表
DROP TABLE <表名稱>
禁用啟用約束
禁用約束
ALTER TABLE <表名稱> DISABLE KEYS
啟用約束
ALTER TABLE <表名稱> ENABLE KEYS
外來鍵約束
- 用於設定主表中的某一列中的值必須來自於另一個表中的主鍵的值
- 對於主表中的這一列來說就是添加了外來鍵約束
- 設定了外來鍵約束的這一列的值必須來自於另一個表的主鍵,而另一個表並沒有約束
新增外來鍵約束
ALTER TABLE 主表 ADD FOREIGN KEY 外來鍵約束的名字(主表中被約束的欄位) REFERENCES 從表(從表的主鍵名);
關鍵字 | 解釋 |
---|---|
主表 | 主表就是需要新增外來鍵約束的表,約束的這一列可以是任意一列 |
從表 | 從表就是主表中外來鍵約束列的值的來源的表,這個資料來源必須是從表的主鍵 |
外來鍵約束的名字 | fk_主表名從表名新增約束的欄位名一般用這種格式命名方便閱讀 |
刪除外來鍵約束
ALTER TABLE 主表 DROP FOREIGN KEY 外來鍵約束的名字
索引
- 相當於建立一個新的目錄,然後將目錄按順序排列,每一項和建立索引的列的位置一一對應,查詢時通過值迅速找到索引,然後通過索引找到原來表中的值的位置。
- 索引可以加快查詢但是索引本身也會佔用空間。一般只給頻繁需要查詢的列新增索引
新增索引
ALTER TABLE <表名稱> ADD INDEX 索引名(欄位名)
索引名建議:idx_<表名稱>_<欄位名>
刪除索引
ALTER TABLE <表名稱> DROP INDEX 索引名