建立表格與唯一索引
CREATE Database databaseName;
CREATE Table tableName;
CREATE View viewName;
CREATE Database IF NOT EXISTS databaseName;
(檢查資料庫是否重複,如果存在就不會再建立。)
建立欄位:
CREATE TABLE 學生表{
學號 CHAR(8),
姓名 CHAR(4) NOT NULL,
PRIMARY KEY (學號), //主鍵
UNIQUE(電話) //唯一索引
}
修改表格:
修改欄位:
ALTER TABLE 資料表名稱 CHANGE COLUMN 舊欄位 新欄位 新形態(新長度) 特殊功能;
ALTER TABLE `Life` CHANGE COLUMN `accountId` `accountId` int(7) unsigned zerofill NOT NULL;
NOT NULL 不能空值
unsigned zerofill補上一堆零
建立索引:
ALTER TABLE table_name ADD INDEX index_name( column_1,column_2 ) ;
ADD PRIMARY KEY
DROP PRIMARY KEY
Key是PRI, 那么该列是主键的组成部分
ADD UNIQUE KEY
DROP UNIQUE KEY
Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)
ADD INDEX
DROP INDEX
Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分
建立欄位:
ALTER TABLE 學生表 ADD 性別 CHAR(1) Default '男';
新增性別欄位,並且預設值為男。
修改欄位:
ALTER TABLE 學生表 MODIFY 地址 CHAR(50) NOT NULL;
刪除欄位:
ALTER TABLE 學生表 DROP 電子信箱;
刪除表格:刪除指定表格欄位內的值
DELETE FROM table_name WHERE Name='王二';
DROP Database IF EXISTS databaseName;
(檢查資料庫是否重複,如果存在就不會再建立。)
關聯表格設定:
CASCADE:在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄
SET NULL:在父表上update/delete記錄時,將子表上匹配記錄的列設為null
(要注意子表的外鍵列不能為not null)
NO ACTION:如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作
RESTRICT:同no action, 都是立即檢查外鍵約束
SET NULL:父表有變更時,子表將外鍵列設置成一個默認的值但Innodb不能識別
插入:
不存在即插入,如果存在則覆寫:
replace into table(id, name) values(1, '張三') ;
/*或者*/
replace into table(id, name) select 1, '張三' ;
不存在及插入,如果存在則不做處理:
insert into table(id, name)
select null, '張三' from DUAL
where not exists (select id from table where name = '張三') ;
觸發程序(TRIGGER):
是一種特殊的預存程序。
當某種條件(新稱、修改、刪除)成立時,事先設定的預存程序會自動被執行。
被動地執行指令。
可以確保多個資料異動時,資料表間的一致性。
(用來確保資料庫的完整性規則)
例如:刪除一筆學生資料時,順便將該筆資料加入到休退學資料表中。
刪除一筆文章時,將該筆資料加入到封存查驗資料表中,供未來發生問題時舉證及回朔,而非用開關隱藏。
AFTER事後處理
BEFORE事前預防
建立:
CREATE TRIGGER 觸發程序名稱 BEFORE/AFTER(事前預防/事後處理) INSERT/UPDATE/DELETE ON 資料表名稱 FOR EACH ROW BEGIN sql指令集 END;
(FOR EACH ROW BEGIN 影響多行數據或單行時,每一行皆觸發一次)
刪除:
DROP TRIGGER IF EXISTS 觸發程序名稱;
(IF EXISTS 如果存在則執行 可有可無,有此行不報錯。)