【MySQL】函数和约束

这篇具有很好参考价值的文章主要介绍了【MySQL】函数和约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如标题所说,本文重点只有两个:MySQL语句里面的函数和约束

1. 函数

因为在前一篇文章里面有讲到聚合函数,所以在这里就不重复介绍了,本文所介绍的函数有4类:字符串函数,数值函数,日期函数和流程函数

1.1 字符串函数

由于字符串函数比较多,所以只介绍常用的

函数 说明
concat(s1,s2,s3…) 拼接字符串
lower(str)/upper(str) 字符串全部转为小写/大写
trim(str) 删除字符串头尾的空格
substring(str,start,len) 截取字符串,从start位置开始,截取长度为len
lpad(str,n,pad) 左填充,用pad对str的左边进行填充使字符串长度达到n,相应的还有右填充,函数名为rpad,参数和用法与lpad一致

上面的这些函数,如果你学过Java的话,那么对这些函数应该不会陌生
这里lpad和rpad可能不好理解,我们来看看示例
【MySQL】函数和约束
使用+对字符串01进行填充,直至01长度到达5

1.2 数值函数

函数 说明
ceil(i) i向上取整
floor(i) i向下取整
rand() 返回0~1之间的随机数
mod(x,y) 返回x/y的模
round(x,y) 对x进行四舍五入,保留y位小数

1.3 日期函数

函数 说明
curdate()/curtime() 返回当前日期/当前时间
now() 返回当前的日期和时间
year(date) 获取指定日期的年份,同样的,还有month(date)和day(date)
datediff(date1,date2) 计算date1和date2之间的天数,如果date1小于date2,计算的结果为负数
date_add(date,interval expr type) 在date后加上一段时间,可以为年,月,日

date_add这个函数还是演示下怎么使用
【MySQL】函数和约束

1.4 流程函数

流程函数在SQL语句中主要进行条件筛选

函数 说明
if(value,t,f) 类似if语句,value值为真返回t,否则返回f
ifnull(value1,value2) value1不为空时返回value1,否则返回value2
case when [val] then [res]…else [default] end 当val的值为true时返回res,否则返回default,when和then可以有多个
case [expr] when [val] then [res]…else [default] end 当expr的值等于val的时候返回res,否则返回default,when和then可以有多个

【MySQL】函数和约束

2.约束

约束用于字段,是用来限制存储在数据表上的数据,这样做是为了保证数据的有效性,比如age字段你就不能写除数字以外的数据,常见的约束有下面几种:

约束 说明
not null 非空约束,此字段的数据不能为空
unique 唯一约束,此字段的所有数据不能重复
defaule 默认约束,此字段中如果有数据没有指定值,那么就采用默认值
primary key 主键约束,主键是一行数据的唯一标识,主键要求非空且唯一
foreign key 外键约束,用于两张数据表建立连接,保证数据的完整性和一致性

因为约束是作用于字段,所以我们在建表的时候就可以为字段添加约束,在建表之后通过alter修改字段数据类型时加上约束也可以

此外还有一个关键字:auto_increment;这个关键字表示的是自动增长,是MySQL才有的一个关键字
在创建数据表的时候一般会选择id作为主键,而id又是从1开始往后递增的,所以primary key和auto_increment经常同时使用实现主键自增

我在这里新建一个简单的数据表,然后来看看数据表的结构
首先是没有约束的:
【MySQL】函数和约束
然后是有约束的:
【MySQL】函数和约束
然后是外键约束的使用
外键所关联的是另一张数据表的主键,两张表中含有外键的称为子表,关联的另一张为父表
外键同样可以在创建数据表的时候指定,也可以是在创建数据表之后再添加

添加外键:
  creat table 表名(字段1 数据类型,
  [constraint] [外键名称] foreign key (外键字段名) references 主表(主表列名));

  alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);
删除外键:
  alter table 表名 drop foreign key 外键名称;

2.1 外键的删除更新行为

在对父表进行修改的时候子表的外键的行为,可以指定

行为 说明
no action 在父表中更新/删除记录时,先检查此记录有没有外键,有则不允许更新/删除
restrict 在父表中更新/删除记录时,先检查此记录有没有外键,有则不允许更新/删除
cascade 在父表中更新/删除记录时,先检查此记录有没有外键,有则更新/删除外键在子表中的记录
set null 在父表中删除记录时,先检查此记录有没有外键,有则将子表中对应的外键设为null(前提是此外键允许为null)
set default 父表有变更时,子表外键设为一个默认值(MySQL默认的Innodb引擎不支持)

使用外键的删除更新行为需要使用的关键字为on

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名) on update 行为 on delete 行为;

本篇到此结束,下一篇是多个数据表之间的查询操作,完文章来源地址https://www.toymoban.com/news/detail-431483.html

到了这里,关于【MySQL】函数和约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 15天学习MySQL计划(常用函数/约束)第三天

    1.1字符串函数 函数 功能 concat(s1,s2) 字符串拼接,将s1,s2拼接成一个字符串 lower(str) 将字符串str全部转为小写 upper(str) 将字符串str全部转为大写 lpad(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到N个字符串长度 rpad(str,n,pad) 右填充,用字符串pad对str的右边进行填充,

    2023年04月21日
    浏览(48)
  • 【从删库到跑路】详细讲解MySQL的函数和约束作用

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 是指一段可以直接被另一段程序调用的程序或代码 🎈字符串拼接函数 🎈把字符串全部变为小写 🎈把字符串全部变为大写 🎈字符串

    2024年02月09日
    浏览(65)
  • 【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫

    Vue 路由库Router 【重点】 安装 基本使用 路由配置 路由模式 路由传递参数 路由内置对象 路由守卫 Vue的内置API 【掌握】 ref Vue.set Vue.nextTick Vue.filter Vue.component Vue.use Vue.directive 进行页面的跳转(相当于a标签),Vue是SPA单页面应用,他的页面跳转必须使用Vue-Router路由进行实现

    2024年02月06日
    浏览(48)
  • Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。

    Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。 get_pins命令用于获取指定对象(Object)的引脚(Pin)列表。我们可以使用get_pins来获取具有特定命名约定的引脚(如CLOCK、RESET等),并通过对这些引

    2024年02月05日
    浏览(61)
  • 小知识点系列(十四) 本文(3万字) | 解深度解读损失函数 | CrossEntropy | BCE | BCEWithLogits | NLL |MSE | L1 |

    点击进入专栏: 《人工智能专栏》 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程

    2024年02月22日
    浏览(62)
  • MySQL只有information_schema一个数据库

    背景:centos新安装的mysql数据库。使用DbEaver连接mysql库时,发现左边不显示表。使用命令框mysql -uroot回车登录时,发现只能看到information_schema一个数据库了。 原因: 因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿

    2024年02月05日
    浏览(39)
  • 约束优化求解之罚函数法

    罚函数法 本部分考虑约束优化问题: min ⁡ f ( x ) s . t . x ∈ χ (1) begin{aligned} min f(x) \\\\ s.t. xinchi end{aligned} tag{1} min f ( x ) s . t . x ∈ χ ​ ( 1 ) 这里 χ ⊂ R n chisubsetmathbb{R}^n χ ⊂ R n 为问题的可行域。与无约束问题不同,约束优化问题中自变量 x x x 不能任意取值,这导致

    2023年04月19日
    浏览(33)
  • SQL函数、约束、查询、索引和事务

    目录 字符串函数 数值函数 日期函数 流程函数 多表查询 多表查询 -- 内连接 多表查询 -- 自连接  多表查询 -- 外连接 子查询  合并查询  all-any 蠕虫复制测试效率 表中数据去重   主键和约束 主键 约束 自增长约束 索引  事务  事务的使用 事务的隔离级别  存储引擎

    2023年04月09日
    浏览(60)
  • Mysql底层重点

    索引分类: 按物理存储分类:聚簇索引(主键索引)、二级索引(辅助索引) 按字段特性分类:主键索引,普通索引,唯一索引,前缀索引 按字段个数分类:单列索引,联合索引 主键索引:拿主键当作索引, 普通索引:除主键之外的字段当做索引 二级索引:除主键之外的

    2024年02月14日
    浏览(29)
  • MySQL-13.MySQL约束

    1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成的无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对 表数据进行额

    2024年01月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包