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

MySQL 函数与约束

MySQL 函数与约束

文章目录

  • MySQL 函数与约束
    • 1 函数
      • 1.1 字符串函数
      • 1.2 数值函数
      • 1.3 日期函数
      • 1.4 流程函数
    • 2 约束
      • 2.1 概述
      • 2.2 约束演示
      • 2.3 外键约束
      • 2.4 删除/更新行为

1 函数

  函数是指一段可以直接被另一程序调用的程序或代码。

1.1 字符串函数

MySQL中内置了很多字符串函数,常用的几个如下 :

在这里插入图片描述

-- 左填充
select lpad('01',5,'-');	-- 得到---01
-- 右填充
select rapd('01',5.'-');	-- 得到01---

1.2 数值函数

常见的数值函数如下:

在这里插入图片描述

案例: 通过数据库的函数,生成一个六位数的随机验证码。

思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的,所以可以在其基础上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0

select lpad(round(rand()*1000000 , 0), 6, '0');

1.3 日期函数

常见的日期函数如下:

在这里插入图片描述

-- 增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR );

1.4 流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

在这里插入图片描述

select if(false, 'Ok', 'Error');
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
-- 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
select
name,
( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else
'二线城市' end ) as '工作地址'
from emp;
create table score(id int comment 'ID',name varchar(20) comment '姓名',math int comment '数学',english int comment '英语',chinese int comment '语文'
) comment '学员成绩表';
insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);select
id,
name,
(case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end ) '数学',
(case when english >= 85 then '优秀' when english >=60 then '及格' else '不及格' end ) '英语',
(case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格' end ) '语文'
from score;

2 约束

2.1 概述

  • 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据

  • 目的:保证数据库中数据的正确、有效性和完整性。

  • 分类:

    在这里插入图片描述

    注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

2.2 约束演示

案例:根据需求 完成表结构的创建

在这里插入图片描述

create table user(id int PRIMARY KEY AUTO_INCREMENT comment 'ID唯一标识',name varchar(10) NOT NULL UNIQUE comment '姓名',age int CHECK(age > 0 && age <= 120) comment '年龄',status char(1) default '1' comment '状态',gender char(1) comment '性别'
);

2.3 外键约束

  • 概念

    外键用来让两张表的数据之间建议连接,从而保证数据的一致性和完整性。

在这里插入图片描述

左侧的emp表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员工的信息中存储的是部门的ID dept_id,而这个部门的ID是关联的部门表dept的主键id,那emp表的dept_id就是外键,关联的是另一张表的主键。

注意:目前上述两张表,只是在逻辑上存在这样一层关系;在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的

  • 添加外键语法

    CREATE TABLE 表名(

    字段名 数据类型,

    ...

    [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)

    );

-- 为emp表的dept_id字段添加外键约束,关联dept表的主键id
alter table emp add CONSTRAINT waijian FOREIGN KEY(dept_id) REFERENCES dept(id);
  • 删除外键

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

    -- 删除emp表的外键waijian
    alter table emp drop foreign key waijian;
    

2.4 删除/更新行为

添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:

在这里插入图片描述

  • 语法:

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

alter table emp add constraint waijian foreign key (dept_id) references
dept(id) on update cascade on delete cascade ;alter table emp add constraint waijian foreign key (dept_id) references
dept(id) on update set null on delete set null ;

相关文章:

MySQL 函数与约束

MySQL 函数与约束 文章目录 MySQL 函数与约束1 函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 流程函数 2 约束2.1 概述2.2 约束演示2.3 外键约束2.4 删除/更新行为 1 函数 函数是指一段可以直接被另一程序调用的程序或代码。 1.1 字符串函数 MySQL中内置了很多字符串函数&…...

12_1 Linux Yum进阶与DNS服务

12_1 Linux Yum进阶与DNS服务 文章目录 12_1 Linux Yum进阶与DNS服务[toc]1. Yum进阶1.1 自定义yum仓库1.2 网络Yum仓库 2. DNS服务2.1 为什么要使用DNS系统2.2 DNS服务器的功能2.3 DNS服务器分类2.4 DNS服务使用的软件及配置2.5 搭建DNS服务示例2.6 DNS特殊解析 1. Yum进阶 1…...

Spring Boot集成geodesy实现距离计算

1.什么是geodesy&#xff1f; 浩瀚的宇宙中&#xff0c;地球是我们赖以生存的家园。自古以来&#xff0c;人类一直对星球上的位置和彼此的距离着迷。无论是航海探险、贸易往来还是科学研究&#xff0c;精确计算两个地点之间的距离都是至关重要的。 Geodesy&#xff1a;大地测量…...

在Windows上用Llama Factory微调Llama 3的基本操作

这篇博客参考了一些文章&#xff0c;例如&#xff1a;教程&#xff1a;利用LLaMA_Factory微调llama3:8b大模型_llama3模型微调保存-CSDN博客 也可以参考Llama Factory的Readme&#xff1a;GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100 LLMsUnify Effi…...

01——生产监控平台——WPF

生产监控平台—— 一、介绍 VS2022 .net core(net6版本&#xff09; 1、文件夹&#xff1a;MVVM /静态资源&#xff08;图片、字体等&#xff09; 、用户空间、资源字典等。 2、图片资源库&#xff1a; https://www.iconfont.cn/ ; 1.资源字典Dictionary 1、…...

33、matlab矩阵分解汇总:LU矩阵分解、Cholesky分解和QR分解

1、LU矩阵分解 语法 语法1&#xff1a;[L,U] lu(A) 将满矩阵或稀疏矩阵 A 分解为一个上三角矩阵 U 和一个经过置换的下三角矩阵 L&#xff0c;使得 A L*U。 语法2&#xff1a;[L,U,P] lu(A) 还返回一个置换矩阵 P&#xff0c;并满足 A P*L*U。 语法3&#xff1a;[L,U,P] …...

C语言——使用函数创建动态内存

一、堆和栈的区别 1)栈(Stack): 栈是一种自动分配和释放内存的数据结构,存储函数的参数值、局部变量的值等。栈的特点是后进先出,即最后进入的数据最先出来,类似于我们堆盘子一样。栈的大小和生命周期是由系统自动管理的,不需要程序员手动释放。2)堆(Heap): 堆是由…...

【PL理论】(16) 形式化语义:语义树 | <Φ, S> ⇒ M | 形式化语义 | 为什么需要形式化语义 | 事实:部分编程语言的设计者并不会形式化语义

&#x1f4ad; 写在前面&#xff1a;本章我们将继续探讨形式化语义&#xff0c;讲解语义树&#xff0c;然后我们将讨论“为什么需要形式化语义”&#xff0c;以及讲述一个比较有趣的事实&#xff08;大部分编程语言设计者其实并不会形式化语义的定义&#xff09;。 目录 0x00…...

前端杂谈-警惕仅引入一行代码言论

插入一行 JavaScript 代码似乎是一种无受害者犯罪。这只是一个小脚本&#xff0c;对吧&#xff1f;但 JavaScript 可以导入更多 JavaScript。-杰里米基思 “这只是一行代码”是我们经常听到的宣传语。这也可能是我们对自己和他人说的最大的谎言。 “仅用一行添加样式”&#x…...

有关cookie配置的一点记录

Domain&#xff1a;可以用在什么域名下&#xff0c;按最小化原则设Path&#xff1a;可以用在什么路径下&#xff0c;按最小化原则Max-Age和Expires&#xff1a;过期时间&#xff0c;只保留必要时间Http-Only&#xff1a;设置为true&#xff0c;这个浏览器上的JS代码将无法使用这…...

Oracle如何定位硬解析高的语句?

查询subpool 情况 select KSMDSIDX supool,round(sum(KSMSSLEN)/1024/1024,2) SQLA_size_mb from x$ksmss where KSMDSIDX<>0 and KSMSSNAMSQLA group by KSMDSIDX;查询subpool top5 SELECT *FROM (SELECT KSMDSIDX subpool,KSMSSNAM name,ROUND(KSMSSLEN / 102…...

Linux卸载残留MySQL【带图文命令巨详细】

Linux卸载残留MySQL 1、检查残留mysql2、检查并删除残留mysql依赖3、检查是否自带mariadb库 1、检查残留mysql 如果残留mysql组件&#xff0c;使用命令 rpm -e --nodeps 残留组件名 按顺序进行移除操作 #检查系统是否残留过mysql rpm -qa | grep mysql2、检查并删除残留mysql…...

4句话学习-k8s节点是如何注册到k8s集群并且kubelet拿到k8s证书的

一、kubelet拿着CSR&#xff08;签名请求&#xff09;使用的是Bootstrap token 二、ControllerManager有一个组件叫CSRAppprovingController&#xff0c;专门来Watch有没有人来使用我这个api. 三、看到有人拿着Bootstrap token的CSR来签名请求了&#xff0c;CSRAppprovingContr…...

2024全国大学生数学建模竞赛优秀参考资料分享

0、竞赛资料 优秀的资料必不可少&#xff0c;优秀论文是学习的关键&#xff0c;视频学习也非常重要&#xff0c;如有需要请点击下方名片获取。 一、赛事介绍 全国大学生数学建模竞赛(以下简称竞赛)是中国工业与应用数学学会主办的面向全国大学生的群众性科技活动&#xff0c;旨…...

QPS,平均时延和并发数

我们当前有两个服务A和B&#xff0c;想要知道哪个服务的性能更好&#xff0c;该用什么指标来衡量呢&#xff1f; 1. 单次请求时延 一种最简单的方法就是使用同一请求体同时请求两个服务&#xff0c;性能越好的服务时延越短&#xff0c;即 R T 返回结果的时刻 − 发送请求的…...

【Python核心数据结构探秘】:元组与字典的完美协奏曲

文章目录 &#x1f680;一、元组⭐1. 元组查询的相关方法❤️2. 坑点&#x1f3ac;3. 修改元组 &#x1f308;二、集合⭐1. 集合踩坑❤️2. 集合特点&#x1f4a5;无序性&#x1f4a5;唯一性 ☔3. 集合&#xff08;交&#xff0c;并&#xff0c;补&#xff09;&#x1f3ac;4. …...

Golang | Leetcode Golang题解之第137题只出现一次的数字II

题目&#xff1a; 题解&#xff1a; func singleNumber(nums []int) int {a, b : 0, 0for _, num : range nums {b (b ^ num) &^ aa (a ^ num) &^ b}return b }...

Spring和SpringBoot的特点

1.Spring的特点 1.IOC和AOP是Spring的两大核心特性&#xff0c;即控制反转和依赖注入。 2.松耦合&#xff1a;IOC和AOP两大特性可以尽可能地将对象之间的关系解耦 3.可配置&#xff1a;提供外部化配置的方式&#xff0c;可以灵活地配置容器及容器中的Bean 4.一站式&#xff1a…...

怎么使用join将数组转为逗号分隔的字符串

在JavaScript中&#xff0c;你可以使用Array.prototype.join()方法将一个数组转换为逗号分隔的字符串。join()方法接受一个可选的参数&#xff0c;该参数指定了数组元素之间的分隔符。如果不提供参数&#xff0c;则默认使用逗号&#xff08;,&#xff09;作为分隔符。 下面是一…...

Web前端博客论坛:构建、运营与用户体验的深度解析

Web前端博客论坛&#xff1a;构建、运营与用户体验的深度解析 在数字化浪潮的推动下&#xff0c;Web前端博客论坛成为了广大开发者交流技术、分享经验的重要平台。如何构建一个功能齐全、运营有序的博客论坛&#xff0c;以及如何提升用户体验&#xff0c;是摆在每一位前端开发…...

Java从入门到放弃

线程池的主要作用 线程池的设计主要是为了管理线程&#xff0c;为了让用户不需要再关系线程的创建和销毁&#xff0c;只需要使用线程池中的线程即可。 同时线程池的出现也为性能的提升做出了很多贡献&#xff1a; 降低了资源的消耗&#xff1a;不会频繁的创建、销毁线程&…...

基于51单片机的车辆动态称重系统设计

一 动态称重 所谓动态称重是指通过分析和测量车胎运动中的力,来计算该运动车辆的总重量、轴重、轮重和部分重量数据的过程。动态称重系统按经过车辆行驶的速度划分,可分为低速动态称重系统与高速动态称重系统。因为我国高速公路的限速最高是120,所以高速动态称重系统在理论…...

C语言之常用字符串函数总结、使用和模拟实现

文章目录 目录 一、strlen 的使用和模拟实现 二、strcpy 的使用及模拟实现 三、strcat 的使用和模拟实现 四、strcmp 的使用和模拟实现 五、strncpy 的使用和模拟实现 六、strncat 的使用和模拟实现 七、strncmp 的使用和模拟实现 八、strstr 的使用和模拟实现 九、st…...

【JMeter接口测试工具】第二节.JMeter项目实战(上)【实战篇】

文章目录 前言项目实战零、接口测试流程一、测试数据准备二、接口功能测试三、掌握测试用例编写四、自动化脚本架构搭建总结 前言 零、接口测试流程 1、制定测试计划,分配任务 2、从 API 文档中提取接口清单&#xff1a;对 API 文档简化,提高测试效率,接口清单就是对 API 文档…...

Ansible——fetch模块

目录 参数 示例1&#xff1a;最基本的用法 示例2&#xff1a;指定目标目录和主机名子目录 示例3&#xff1a;flat 参数设置为 yes 示例4&#xff1a;处理源文件不存在的情况 示例5&#xff1a;验证文件校验和 示例 Playbook 1. 拉取远程主机上的 syslog 文件 2. 直接…...

HTTP常见响应状态码

1xx&#xff1a;正在处理中 100 Continue&#xff1a;服务器确认收到了请求的第一部分&#xff0c;并告知客户端继续发送剩余的请求。 101 Switching Protocols&#xff1a;服务器根据客户端的请求&#xff0c;同意切换到另一个协议。 2xx&#xff1a;成功响应 200 OK&#…...

如何制定工程战略

本文介绍了领导者如何有效制定工程战略&#xff0c;包括理解战略核心、如何收集信息并制定可行的策略&#xff0c;以及如何利用行业最佳实践和技术债务管理来提升团队效能和产品质量。原文: How to Build Engineering Strategy 如果你了解过目标框架&#xff08;如 OKR&#xf…...

认识和使用 Vite 环境变量配置,优化定制化开发体验

Vite 官方中文文档&#xff1a;https://cn.vitejs.dev/ 环境变量 Vite 内置的环境变量如下&#xff1a; {"MODE": "development", // 应用的运行环境"BASE_URL": "/", // 部署应用时使用的 URL 前缀"PROD": false, //应用…...

Java18新特性总结

Java 18作为Java编程语言的一个重要更新&#xff0c;引入了一系列新特性和改进&#xff0c;旨在提高开发者的生产力和程序的性能。以下是Java 18的主要新特性概述&#xff1a; 元编程功能&#xff1a; Java 18引入了元注释和元类型声明的功能&#xff0c;允许开发人员在编译时…...

理解 Java 中的 `final` 关键字

理解 Java 中的 final 关键字 final 关键字是 Java 编程语言中一个重要的修饰符&#xff0c;它可以应用于类、方法和变量。理解 final 的用法和作用对于编写稳健和高效的 Java 代码至关重要。在本文中&#xff0c;我们将深入探讨 final 关键字的各种用法及其意义。 一、final…...

娄底手机网站制作/百度百度一下就知道

vue webpack 项目中数据更新后页面没有刷新问题&#xff0c;ie11下&#xff0c;如果GET请求请求相同的URL&#xff0c;默认会使用之前请求来的缓存数据&#xff0c;而不会去请求接口获取最新数据&#xff0c;我用的解决方法是在每个请求发送前&#xff0c;拦截请求并给请求接口…...

权威的手机网站建设/郑州网站建设制作公司

this&#xff0c;表示当前的上下文对象是一个html对象&#xff0c;可以调用html对象所拥有的属性和方法。 $(this),代表的上下文对象是一个jquery的上下文对象&#xff0c;可以调用jQuery的方法和属性值。转载于:https://www.cnblogs.com/family-626-77/p/5700251.html...

网站开发开什么票/培训网址

http://www.elecfans.com/tongxin/123/20180103610476.html 经常看到RS485和MODBUS写在一起&#xff0c;它们的区别和联系&#xff1f; RS485是一个物理接口&#xff0c;简单的说是硬件。 MODBUS是一种国际标准的通讯协议&#xff0c;用于不同厂商之间的设备交换数据&#xff0…...

兰州高端网站建设/推广网站的文案

一、定义概览 AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一&#xff0c;所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O&#xff08;log n&#xff09;。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。…...

app建设网站/搜狗站长平台验证不了

目录 一、安装 Node .js 二、环境配置 三、测试 四、补充 五、报错处理 一、安装 Node .js 百度搜索Node.js 进入官网或者Node.js 中文网 Node.js 中文网 下载 | Node.js 中文网测试安装结果 npm -v 二、环境配置 说明&#xff1a;npm块默认安装到【C:\Users\用户名\Ap…...

泉州定制网站建设/百度搜索网站

接到客户那边的问题&#xff0c;说电脑不时的会出现一些自动弹出的IE浏览器&#xff0c;都是些广告信息。估计是客户电脑的浏览器被劫持了。通过客户发过来的截图信息&#xff0c;会出现一个scandisk.exe的错误报告&#xff0c;估计问题就出在这里。网上查询了一下这个流氓软件…...