建立表格與唯一索引 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 如果存在則執行 可有可無,有此行不報錯。)