当前位置: 首页 > 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.zskr.cn/news/1417516.html

相关文章:

  • 【Sora 2企业形象片制作实战指南】:20年影像技术专家亲授5大降本增效核心流程,错过再等半年
  • 2026年 隧道射流风机厂家推荐榜单:SDS/SDF隧道专用风机、轴流排风机、防爆通风系统及隧道施工品牌深度解析 - 品牌企业推荐师(官方)
  • 「EEG脑电信号处理——(28)国外大模型发展综述」2026年05月27日
  • Visuino图形化编程入门:ESP32 RGB LED循环闪烁项目实战
  • 真理的重力:论“宣称”谬误与物理性必然
  • 20260527 ceph添加节点
  • 别再死记硬背了!用Python代码直观理解CNN和MLP到底啥关系
  • 【同步Overleaf, Github】
  • 2026年东莞精密蚀刻厂家推荐榜:激光/化学/镂空蚀刻加工,不锈钢铜材标牌滤网微孔无毛刺蚀刻工艺深度解析 - 品牌企业推荐师(官方)
  • 小米 MiMo V2.5 邀请码 WYMVM4
  • 贾子 AI:基于真理约束的认知革命
  • GC-16MC-LZ门侧送暖风机适配哪些采暖场景
  • 2026大连税务申报:机构深度测评榜单! - 小柏云
  • LeetCode 207:课程表 | 拓扑排序
  • 赤峰车衣门店排行|首选赤峰美车堡 XPEL 超级旗舰店(推荐指数 4.9 分) - 资讯快报
  • 2026 年青岛 UPS 不间断电源供应商怎么选?主流品牌授权服务商盘点 - 小艾信息发布
  • 2026平民寄件避坑指南:低价平台优缺点全解,德邦及主流快递最便宜下单渠道 - 时讯资讯
  • 向量空间JBoltAI :让Agent推理从黑盒走向透明
  • GitNexus 图文使用教程:为你的代码库构建知识图谱
  • 笔试训练48天:
  • 2026 赤峰车膜门店推荐排行:首选这家,口碑与实力双第一 - 资讯快报
  • 2026年栀子花香水推荐深度测评:如何为不同需求匹配最佳方案? - 资讯快报
  • 2026年青少年同性好感困惑咨询机构选择指南:专业适配与长沙本地服务解析 - 资讯快报
  • 最小 SOFA XML 场景结构 0-base.scn
  • PCA 数值计算
  • 达梦数据库DM8视图入门——简化查询、权限控制与数据安全
  • 2026 赤峰车衣门店电话|首选这家!口碑评分 4.9 分✨ - 资讯快报
  • 2026兰州卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 2026国产外夹式超声波流量计十大品牌权威测评:技术实力与市场表现深度解析 - 水质仪表品牌排行榜
  • Windows和Ubuntu共享键鼠失败?三步搞定Synergy/Barrier的SSL连接报错