当前位置: 首页 > news >正文

MYSQL--函数,约束

一、函数
函数就是一段可以直接被另一段程序调用的程序或代码。
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 函数(参数);

2 数值函数
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x,y) 返回x/y的模
RAND() 返回0~1内的随机数
ROUND(x,y) 求参数x的四舍五入的值,保留y位小数

3 日期函数
CURDATE() 返回当前日期(yyyy-mm-dd)
CURTIME() 返回当前时间(hh:mm:ss)
NOW() 返回当前日期和时间(yyyy-mm-dd hh:mm:ss)
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期(每月的第几号)
DATE_ADD(date,INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1,date2) 返回起始时间date1和结束时间date2之间的天数(date1减date2)
注:DATE_ADD(date,INTERVAL expr type)函数细节:

  1. expr如果是正数,表示从时间date向后推,如果是负数就表示往前推,如果是0就表示是date本身
  2. type常用的类型:YEAR(年)、MONTH(月)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)
    例如:-- 今天 + 7天
    SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS 一周后;

4 流程函数
IF(value, t, f) 如果value为true,则返回t,否则返回f
IFNULL(value1, value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END 如果val1为true,返回res1,… 否则返回default
CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] … ELSE [ default] END 如果expr的值等于val1,返回res1,… 否则返回default

二、约束
约束是作用于表中字段上的规则,用于限制存储在表中的数据,目的是保证数据库中数据的正确、有效性和完整性​
​​
1.非空约束​ 限制该字段的数据不能为null​ NOT NULL​
​ 唯一约束​ 保证该字段的所有数据都是唯一、不重复的​ UNIQUE​
​ 主键约束​ 主键是一行数据的唯一标识,要求非空且唯一​ PRIMARY KEY​
​ 默认约束​ 保存数据时,如果未指定该字段的值,则采用默认值​ DEFAULT​
​ 检查约束​ 保证字段值满足某一个条件​ CHECK(自定义条件)​
​ 自动增长​ 添加数据时如果没有为字段设置值,会自动增长1个单位​ AUTO_INCREMENT​
​ 外键约束​ 用来让两张图的数据之间建立连接,保证数据的一致性和完整性​ FOREIGN KEY​
​注:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束
有些情况下,虽然数据没有成功添加,但仍然会占用自动增长一个值,比如事务回滚;违反约束条件或数据类型不匹配等导致插入操作失败

2.外键约束
外键用来让两张表之间建立连接,从而保证数据的一致性和完整性
2.1语法
2.1.1添加外键
法一: CREATE TABLE 表名(
字段名 字段类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
);
法二:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);
注:外键要求主表对应字段必须是主键 / 唯一索引

2.1.2删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

2.2 删除/更新行为

NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新(与RESTRICT一致)
RESTRICT 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新(与NO ACTION一致)
CASCADE 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则也删除/更新外键在子表中的记录
SET NULL 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(要求该外键允许为null)
SET DEFAULT 父表有变更时,子表将外键设为一个默认值(Innodb不支持)

示例:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为;
注:ON UPDATE 和 ON DELETE 可以写不一样的行为

http://www.jsqmd.com/news/906215/

相关文章:

  • 不止于安装HAP:用hdc_std命令行玩转OpenHarmony设备文件管理、日志抓取与性能调优
  • 为什么一半科技PLM是流程制造企业的首选?2026年PLM系统采购必看
  • 【Sora 2企业形象片制作实战指南】:20年影像技术专家亲授5大降本增效核心流程,错过再等半年
  • 基于Arduino的自动灭火机器人:从传感器到执行器的嵌入式系统实践
  • 【干货指南】IGV使用攻略:ChIP-seq、ATAC-seq结果怎么看?一篇带你入门基因组可视化
  • CountUp.js 终极指南:让网页数字动起来的完整解决方案
  • 「EEG脑电信号处理——(28)国外大模型发展综述」2026年05月27日
  • 2026年 隧道射流风机厂家推荐榜单:SDS/SDF隧道专用风机、轴流排风机、防爆通风系统及隧道施工品牌深度解析 - 品牌企业推荐师(官方)
  • 找rdi的方法
  • Visuino图形化编程入门:ESP32 RGB LED循环闪烁项目实战
  • 真理的重力:论“宣称”谬误与物理性必然
  • 产品经理如何用原型工具减少与研发沟通成本
  • 20260527 ceph添加节点
  • 为什么未来大部分大学生要学AI智能体?
  • AI驱动的安全左移实践(Claude安全测试辅助深度拆解)
  • Arduino Nano通用传感器测试板设计:从原理到实战的硬件开发指南
  • 别再死记硬背了!用Python代码直观理解CNN和MLP到底啥关系
  • HarmonyOS 手机号与身份证格式化:FormatUtil 隐私脱敏实战
  • 基于Arduino与AI视觉的自动救生艇:从感知到执行的全栈实现
  • 2026 年 5 月初级会计考前冲刺:时间规划与刷题工具实测指南 - 讲清楚了
  • 华为手机刷机降级避坑指南:MRT HW Flash Tool离线版实测与常见错误解决
  • 【同步Overleaf, Github】
  • 2026年东莞精密金属按键/铝合金按键/面板边框/折弯铝面板边框/机箱面板边框厂家推荐:匠心工艺与结构强度双优之选 - 品牌企业推荐师(官方)
  • 揭秘瓷砖厂商不为人知的生产内幕与选砖诀窍
  • 2026年东莞精密蚀刻厂家推荐榜:激光/化学/镂空蚀刻加工,不锈钢铜材标牌滤网微孔无毛刺蚀刻工艺深度解析 - 品牌企业推荐师(官方)
  • Wireshark图形功能新玩法:除了排障,还能帮你做自动化监控和报告
  • 皮尔逊相关系数从入门到‘避坑’:用NumPy手撕公式,再拿真实数据验证你的理解
  • 2026 年 5 月会计备考避坑:免费在线刷题实测与高效通关指南 - 讲清楚了
  • 湖北玖晟工业气膜|核心专属优势
  • 固定资产管理场景:易点易动如何靠它实现企业降本增效