1. 程式人生 > >MySQL下對資料庫和表的操作

MySQL下對資料庫和表的操作

資料庫名詞解釋

主鍵

  • 主鍵指的是能夠唯一表示表中每一行的資料,通過設定主鍵來讓表具有實體完整性。
  • 主鍵可以為多列。
  • 主鍵用於與其它表的外來鍵關聯,以及修改和刪除中唯一確定一行

實體完整性

  • 要求每一個表中的主鍵欄位都不能為空或者重複的值。

索引

  • 對錶中一列或多列進行排序並建立一一對應的聯絡,來加快搜索
  • 索引會加快對錶的搜尋但是索引本身也會佔用儲存空間,所以應當只對經常需要查詢的列設定索引。

約束

  • 約束是用於維護表中資料的資料完整性而新增的一些規則
  • 約束可以限制加入表的資料的型別

外來鍵

  • 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  TABLE1 TO1新名字,表2 TO2新名字;

修改欄位名稱

  • 注意:欄位型別的相容性及精度,除非該列全部資料為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 索引名