MySQL 中的約束及相關操作
1 約束型別
約束主要完成對資料的檢驗,保證資料庫資料的完整性;如果有相互依賴資料,保證該資料不被刪除。
常用五類約束:
1. not null:非空約束,指定某列不為空
2. unique: 唯一約束,指定某列或幾列組合的資料不能重複
3. primary key:主鍵約束,指定某列或幾列組合的資料非空且唯一
4. foreign key:外來鍵,指定該列記錄屬於主表中的一條記錄,參照另一條資料
5. check:檢查,指定一個表示式,用於檢驗指定資料
根據約束資料列限制,約束可分為:
單列約束:每個約束只約束一列
多列約束:每個約束約束多列資料
NOT NULL和DEFAULT只存在列級約束
create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check 約束*/ check(age > 20) );
上面 check 約束要求 age 必須大於 20,在 mysql 8.0 之前但沒有任何作用。但是建立 table 的時候沒有任何錯誤或警告,
在 MySQL8.0.16 中,check 約束已經起作用了 。
2 相關操作
2.1 新增單列
ALTER TABLE student ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10; // 新增到最後面 ALTER TABLE student ADD password VARCHAR(20) NOT NULL AFTER name; //新增到name後 ALTER TABLE student ADD truename VARCHAR(20) NOT NULL FIRST; //新增到最前面 SHOW COLUMNS FROM student;
2.2 新增多列
ALTER TABLE tbl_name ADD [COLUMN](col_name, col_definition,...) 不能指定位置,直接新增到所有欄位最後
2.3 刪除列
語法:ALTER TABLE tbl_name DROP [COLUMN] col_name; ALTER TABLE users1 DROP truename; ALTER TABLE users1 DROP password, DROP age, ADD ...; // 操作用逗號分開
2.4 新增唯一約束及刪除
ALTER TABLE users2 ADD UNIQUE (username); SHOW INDEXES FROM users2\G; //檢視唯一約束名字 ALTER TABLE users2 DROP INDEX username;
2.5 新增主鍵及刪除
ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY(id); //新增約束並制定約束名為PK_users2_id ALTER TABLE users2 DROP PRIMARY KEY; // 執行後id的主鍵約束沒有,username的唯一約束變為主鍵約束
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947868/viewspace-2766254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 約束MySql
- 字典及相關操作
- 列表及相關操作
- python的字典及相關操作Python
- Mysql入門【Mysql約束】MySql
- MySQL 之慢查詢相關操作MySql
- MySQL自增約束MySql
- MySQL 欄位約束MySql
- JSON及Python操作JSON相關JSONPython
- mysql資料庫約束MySql資料庫
- MySQL——約束(constraint)詳解MySqlAI
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- 5_MySQL 表的欄位約束MySql
- HAC叢集部署vip及相關操作
- MySQL之完整性約束MySql
- SQLite語句(一):表的操作和約束SQLite
- Eclipse中引入spring的約束EclipseSpring
- 10、Oracle中的約 束constraintOracleAI
- Word的相關操作
- Cookie的相關操作Cookie
- MySQL中鎖的相關問題DTQUMySql
- MySQL索引分類及相關概念辨析MySql索引
- 關於外來鍵約束
- mysql新增約束語句筆記MySql筆記
- Linux相關的操作指令Linux
- 時間相關的操作
- Eclipse中引入MyBatis約束EclipseMyBatis
- mysql 相關MySql
- 簡單瞭解 MySQL 中相關的鎖MySql
- 倒排索引及ES相關概念對比MySQL索引MySql
- MongoDB相關操作MongoDB
- 學習PHP中的URL相關操作函式PHP函式
- 約束你的git操作,讓你生無可戀。Git
- 你知道是哪個是常見的約束中MySql不支援的嗎?MySql
- MySQL學習筆記——建立與約束MySql筆記
- 教你mysql如何增加外來鍵約束MySql
- Java中陣列及相關類的使用Java陣列
- SQL外來鍵約束的含義及建立SQL