mysql 基础笔记二
6.3 函数函数就是一段可以直接被另一段程序调用的程序或代码。6.3.1 字符串函数函数说明CONCAT(S1,S2,...,Sn)字符串拼接将S1,S2,...,Sn拼接成一个字符串LOWER(str)将字符串str全部转为小写UPPER(str)将字符串str全部转为大写LPAD(str,n,pad)左填充用字符串pad对str的左边进行填充达到n个字符串长度RPAD(str,n,pad)右填充用字符串pad对str的右边进行填充达到n个字符串长度TRIM(str)去掉字符串头部和尾部的空格SUBSTRING(str,start,len)返回从字符串str的start位置开始的len个长度的字符串默认索引从1开始代码块SELECT 函数(参数);6.3.2 数值函数函数功能CEIL(x)向上取整FLOOR(x)向下取整MOD(x,y)返回x/y的模RAND()返回0~1内的随机数ROUND(x,y)求参数x的四舍五入的值保留y位小数6.3.3 日期函数函数功能CURDATE()返回当前日期yyyy-mm-ddCURTIME()返回当前时间hh:mm:ssNOW()返回当前日期和时间yyyy-mm-dd hh:mm:ssYEAR(date)获取指定date的年份MONTH(date)获取指定date的月份DAY(date)获取指定date的日期每月的第几号DATE_ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数date1 - date2DATE_ADD(date,INTERVAL expr type)函数细节expr如果是正数表示从时间date向后推如果是负数就表示往前推如果是0就表示是date本身type常用的类型YEAR(年)、MONTH(月)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)6.3.4 流程函数函数功能IF(value, t, f)如果value为true则返回t否则返回fIFNULL(value1, value2)如果value1不为空返回value1否则返回value2CASE WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果val1为true返回res1… 否则返回defaultCASE [ expr ] WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END如果expr的值等于val1返回res1… 否则返回default7.约束约束是作用于表中字段上的规则用于限制存储在表中的数据目的是保证数据库中数据的正确、有效性和完整性约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE主键约束主键是一行数据的唯一标识要求非空且唯一PRIMARY KEY默认约束保存数据时如果未指定该字段的值则采用默认值DEFAULT检查约束8.0.16版本后保证字段值满足某一个条件CHECK(自定义条件)自动增长添加数据时如果没有为字段设置值会自动增长1个单位AUTO_INCREMENT外键约束用来让两张图的数据之间建立连接保证数据的一致性和完整性FOREIGN KEY约束是作用于表中字段上的可以在创建表/修改表的时候添加约束有些情况下虽然数据没有成功添加但仍然会占用自动增长一个值比如事务回滚违反约束条件或数据类型不匹配等导致插入操作失败示例外键约束外键用来让两张表之间建立连接从而保证数据的一致性和完整性重点外键 永远 是加在【子表 / 从表】里的主表父表什么都不用做只需要有主键就行添加外键1. 建表时加外键CREATE TABLE 表名(字段名 字段类型,...[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名));2. 表已存在用 ALTER 加ALTER TABLE 表名ADD CONSTRAINT 外键名称FOREIGN KEY (外键字段名)REFERENCES 主表(主表列名);每一句解释ALTER TABLE emp→ 给员工表加外键fk_emp_dept→ 外键名字随便起FOREIGN KEY (dept_id)→ 员工表里的关联字段REFERENCES dept(id)→ 关联部门表的主键删除外键 (前面起名的作用就是用于删除外键)ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;2.删除/更新行为行为说明NO ACTION当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则不允许删除/更新与RESTRICT一致RESTRICT当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则不允许删除/更新与NO ACTION一致CASCADE当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则也删除/更新外键在子表中的记录SET NULL当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则设置子表中该外键值为null要求该外键允许为nullSET DEFAULT父表有变更时子表将外键设为一个默认值Innodb不支持代码块ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名)ON UPDATE 行为 ON DELETE 行为;建表时:有表时: