一、數據類型
MySQL支持多種數據類型,包括數字、文本、日期時間等。
數字類型包括整數和浮點數,可設置長度和小數位數。文本類型包括字符型和二進制型,可設置長度和編碼方式。日期時間類型包括DATE、TIME、DATETIME、TIMESTAMP等。
下面是一個示例:
CREATE TABLE `students` ( `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(20) NOT NULL, `age` INT(11) NOT NULL, `gender` ENUM('male', 'female') NOT NULL, `birthday` DATE NOT NULL, `score` FLOAT(4, 2) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、索引
索引是提高MySQL查詢效率的關鍵,MySQL支持多種類型的索引,包括普通索引、唯一索引、主鍵索引、全文索引等。
普通索引是最基本的索引類型,它不限制列的值是否唯一。唯一索引強制索引列的值是唯一的。主鍵索引是一種特殊的唯一索引,用於唯一標識表的每一行。全文索引主要用於全文搜索。
下面是一個示例:
CREATE TABLE `students` ( `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(20) NOT NULL, `age` INT(11) NOT NULL, `gender` ENUM('male', 'female') NOT NULL, `birthday` DATE NOT NULL, `score` FLOAT(4, 2) NOT NULL, INDEX `idx_age` (`age`), UNIQUE INDEX `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
三、事務
事務是指MySQL中一組SQL語句,要麼全部執行成功,要麼全部執行失敗,不存在執行一部分的情況。事務可以幫助MySQL保持數據的完整性以及一致性。
MySQL通過使用事務處理器InnoDB,支持ACID屬性,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。
下面是一個示例:
START TRANSACTION; UPDATE `students` SET `score`=`score`+10 WHERE `age`<18; COMMIT;
四、存儲過程
存儲過程是由SQL語句和控制語句組成的程序,可以在MySQL服務器上創建、保存和執行。存儲過程可以包含條件語句、循環語句、變量等,可以應對更為複雜的應用場景。
使用存儲過程能夠提高應用程序的性能、減少網絡流量和響應時間。
下面是一個示例:
DELIMITER // CREATE PROCEDURE `get_student_by_age`(IN `age` INT) BEGIN SELECT `name`, `gender`, `birthday` FROM `students` WHERE `age`=age; END // DELIMITER ;
五、觸發器
觸發器是MySQL的一個特殊的存儲過程,它在數據庫的某個表發生指定的事件時自動執行。觸發器可以用來進行數據的驗證、約束、觸發其他業務邏輯的執行等。
MySQL支持BEFORE和AFTER兩種觸發時機,分別對應於事件發生前和發生後。
下面是一個示例:
CREATE TRIGGER `update_student_score` BEFORE UPDATE ON `students` FOR EACH ROW BEGIN IF NEW.`score`<0 THEN SET NEW.`score`=0; END IF; END;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/241010.html