【MySQL】函数和约束

news2024/9/22 17:38:08

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

目录

  • 1. 函数
    • 1.1 字符串函数
    • 1.2 数值函数
    • 1.3 日期函数
    • 1.4 流程函数
  • 2.约束
    • 2.1 外键的删除更新行为

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可能不好理解,我们来看看示例
在这里插入图片描述
使用+对字符串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这个函数还是演示下怎么使用
在这里插入图片描述

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可以有多个

在这里插入图片描述

2.约束

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

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

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

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

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

添加外键:
  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 行为;

本篇到此结束,下一篇是多个数据表之间的查询操作,完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

瑞吉外卖+Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目

瑞吉外卖 Redis基础 Redis入门 redis.io nosql没有表的概念 下载与安装 注意关闭防火墙 systemctl stop firewalld 启动redis src/redis-server ./redis.conf 数据类型 常用命令 字符串 string 操作命令 哈希 hash 操作命令 列表list(类似 栈 )操作命令 集合set 操作命令 sdif…

【源码解析】流控框架Sentinel源码解析

Sentinel简介 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 资源 资源…

【分布式】数据冗余

当我们拥有了许多的存储服务器,且通过将数据在网关进行一致性哈希或者哈希桶的分发之后,我们拥有了一个具有基本负载均衡的系统,但是,此时我们又有新的问题产生了:我们所有的数据只有一份,如果这一份数据丢…

OD工具之动态逆向分析技术实例分析

OD工具之动态逆向分析技术实例分析 vscode等编写cmp.cOD工具打开cmp.exe 卧槽垃圾高级软件工程真是烦人还是记录一下吧那么简单的几行没有手册搞半天都无力吐槽了 vscode等编写cmp.c 在vscode等编辑器中编写cmp.c文件&#xff1a; #include<stdio.h> int main() {int …

手机信息管理系统【控制台+MySQL】(Java课设)

系统类型 控制台类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87737284 更多系统资源库地…

CTFshow Web入门 命令执行

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 web53 web54 web55 web56 web57 web58 web59 web60-65 web66 web67 web68 we…

Spring Boot相关概念、创建与运行

文章目录 一、Spring Boot的创建与使用&#xff08;一&#xff09;为什么要学习 Spring Boot&#xff1f;&#xff08;二&#xff09;Spring Boot的优势&#xff08;三&#xff09;Spring Boot的创建1. 安装插件2. 创建项目3. 配置国内源4. 删除无效目录 &#xff08;四&#x…

祝大家劳动节快乐

文章目录 为我的笔记整理了一个小目录 Python基础 Python基础——0.Python环境的安装 Python基础——1.变量和简单数据类型 Python基础——2.列表简介 Python基础——3.操作列表 Python基础——4.if语句 Python基础——5.字典 Python基础——6.用户输入和while循环 Python基…

【王道·计算机网络】第二章 物理层【未完】

一、通信基础 1. 基本概念 1.1 物理层接口特性 物理层解决如何在连接各种计算机的传输媒体上传输比特流&#xff0c;不指定具体的传输媒体主要任务&#xff1a;确定与传输媒体接口有关的一些特性 → 定义标准接口特性&#xff1a; 机械特性&#xff1a;定义物理连接的特性&a…

十分钟点亮iCLed35

文章目录 前言iCLed35整体介绍iCLed概念iCLed系列产品优势iCLed35(6pin)的特性&#xff1a; iCLed35(6pin)的硬件设计iCLed35(6pin)的软件配置通讯时序&#xff1a;通讯协议介绍&#xff1a;整体的数据结构&#xff1a;睡眠模式&#xff1a; 点亮iCLed35(6pin)S32K144EVB配置驱…

linux入门---软硬链接

软链接 使用指令ln -s 被链接的文件 生成的软链接文件 便可以创建软连接文件&#xff0c;ln是link的简写表明当前要创建链接文件&#xff0c;s是soft的简写表明当前创建的链接文件为软链接文件&#xff0c;然后加上被链接的文件&#xff0c;最后写上生成的链接文件的文件名比如…

【谷粒商城之服务认证OAuth2.0】

本笔记内容为尚硅谷谷粒商城服务认证OAuth2.0部分 目录 一、OAuth 2.0 二、微博登录测试 1、微博登陆准备工作 2、获取微博Access Token 3、登录测试 1.添加HttpUtils工具类 2.controller 3.service 4.vo 总结 一、OAuth 2.0 OAuth&#xff1a; OAuth&#xff08;开…

【账号激活】

由于注册时会遇到诸多错误提示&#xff01;所以出此详细教程。 重点是要巧妙的运用无痕浏览窗口。 步骤分为两步&#xff0c;sign up 激活邮箱以及 log in 短信验证码验证。 右上角新建无痕浏览窗口。新建完后记得关闭此有痕浏览窗口。 成功创建。完成第一步。 若要连续操作切记…

双极性信号、正交信号和PAM信号通信系统matlab程序+仿真

资源地址&#xff1a; 双极性信号、正交信号和PAM信号通信系统MATLAB程序仿真资源-CSDN文库 部分程序及仿真图&#xff1a; clear all EbN00:10; %SNR的范围 for ii1:length(EbN0) SNREbN0(ii); %赋值给AWGN信道模块中的SNR sim(ex5); %运行仿…

【Java笔试强训 24】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;年终奖 …

一般对称性和轮换对称性

一般对称性 一元函数的对称性 几何意义是所围图形的面积绝对值 【注】使用对称性的时候&#xff0c;首先抓积分区域关于哪个轴对称&#xff0c;其次抓被积函数是为另一轴的奇&#xff08;偶函数&#xff09;。 二元函数的对称性(奇偶性) 【注】在一般对称性中&#xff0c;(x…

MCU固件升级系列1(STM32)

本系列将从升级流程、boot代码编写、APP代码编写以及固件打包来介绍&#xff0c;硬件选用STM32F407ZGT6&#xff08;手里只有&#xff09;&#xff0c;来完成这系列教程。 前言 为什么需要固件升级: 功能更新&#xff1a;随着产品的迭代和用户需求的变化&#xff0c;可能需要…

【DM】达梦数据库与MySQL适配

一、达梦入门技术文档 新手直接看达梦入门技术文档即可 二、达梦数据库 1、介绍 达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统&#xff0c;简称DM&#xff0c;它具有如下特点&#xff1a;通用性、高性能、高可用、跨平台、高可扩展 2、与…

网络安全:windows批处理写病毒的一些基本命令.

网络安全&#xff1a;windows批处理一些命令. echo off一般都写在批处理的最上面&#xff0c;用于关闭回显&#xff0c;意思是 关闭回显&#xff1a; 没有关闭回显: 所以&#xff0c;意思就是将输入指令的过程隐藏起来。 set是设置的意思&#xff0c;作业是打印、创建和修改变…

【算法】求最短路径算法

文章目录 一、迪杰斯特拉算法1.1 算法介绍1.2 算法步骤1.3 应用场景 二、弗洛伊德算法2.1 算法介绍2.2 算法步骤2.3 应用场景 一、迪杰斯特拉算法 1.1 算法介绍 从某顶点出发&#xff0c;沿图的边到达另一顶点所经过的路径中&#xff0c;各边上权值之和最小的一条路径叫做最短…