一、数据类型
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/n/241010.html