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 ;

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

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

相关文章

通用信息提取数据预处理

train_data./datasets/duuie output_folder./datasets/duuie_pre ignore_datasets["DUEE", "DUEE_FIN_LITE"] schema_folder./datasets/seen_schema # 对CCKS2022 竞赛数据进行预处理 import shutil # shutil.copytree(train_data,output_folder) impor…

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC&#xff1f;用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…

linux安装jdk + docker+dockercompose+aliyunACR

下载安装包 链接&#xff1a;https://pan.baidu.com/s/1AyFvPA5qwy4IxfZoTQohrQ 提取码&#xff1a;6666 安装jdk jdk-8u411-linux-x64.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1BZ7J4L5PY-9nuQyxBMDGTA 提取码&#xff1a;6666 1、解压jdk tar -xvf jdk-8u411-li…

如何克隆笔记本电脑上的硬盘?

笔记本电脑的信息存储在硬盘上&#xff0c;一旦硬盘发生故障&#xff0c;数据很容易丢失。克隆技术使我们能够将一个硬盘上的数据精确复制到另一个硬盘上&#xff0c;然后将其用作备份。此外&#xff0c;如果我们决定升级到更大容量或固态硬盘&#xff0c;克隆技术还允许我们将…

linux中xterm窗口怎么调整字体大小

需求&#xff1a;打开的xterm窗口字体比较小&#xff0c;怎么才能调整字体大小&#xff0c;打开的大写&#xff1a; 解决方法&#xff1a; 在home目录下搞一个设置文件 .Xresource&#xff0c;里面内容如下 然后把设置文件添加到 .tcshrc 文件中生效 这样重新打开的xterm字…

真北游记|三江交汇,碧海苍梧,端午去梧州吃龟苓膏

准备 t-14&#xff1a;高铁抢票&#xff08;A&#xff09; t-14&#xff1a;订行程(B)酒店&#xff08;C&#xff09; T-2&#xff1a;准备水、零食 T-1&#xff1a;物质准备&#xff1a;衣服、纸巾、毛巾、雨伞&#x1f302;、拖鞋、口罩&#x1f637;&#xff08;D&#xff0…

ARMxy赋能温室环境自动化调控

智慧农业正以其独特的魅力描绘着未来的轮廓。作为这一变革的中坚力量&#xff0c;ARMxy工业计算机凭借其高性能、低功耗及高度灵活性&#xff0c;正逐步成为智能温室控制、精准灌溉及作物生长监测领域的核心引擎。 智能温室的智慧大脑 位于某地的现代农业园区&#xff0c;一座…

力扣118. 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1…

Python图像处理入门学习——基于霍夫变换的车道线和路沿检测

文章目录 前言一、实验内容与方法二、视频的导入、拆分、合成2.1 视频时长读取2.2 视频的拆分2.3 视频的合成 三、路沿检测3.1 路沿检测算法整体框架3.2 尝试3.3 图像处理->边缘检测(原理)3.4 Canny算子边缘检测(原理)3.5 Canny算子边缘检测(实现)3.5.1 高斯滤波3.5.2 图像转…

软件游戏steam_api.dll丢失的解决方法,总结5种有效的方法

在玩电脑游戏时&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“游戏缺少steam_api.dll”。这个问题可能让很多玩家感到困惑和烦恼。那么&#xff0c;究竟是什么原因导致游戏缺少steam_api.dll呢&#xff1f;又该如何解决这个问题呢&#xff1f;本文将为大家…

ISO 19115-2:2019 第6章 获取和处理元数据

6 获取和处理元数据 6.1 获取和处理要求的元数据 ISO 19115-1 确定了描述数字地理资源所需的元数据。本文件扩展了 ISO 19115-1 中确定的元数据,并确定了描述地理资源获取和处理所需的附加元数据。 6.2 获取和处理元数据包及其依赖关系 ISO 地理信息系列标准使用一个或多个…

接口测试时, 数据Mock为何如此重要?

一、为什么要mock 工作中遇到以下问题&#xff0c;我们可以使用mock解决&#xff1a; 1、无法控制第三方系统某接口的返回&#xff0c;返回的数据不满足要求 2、某依赖系统还未开发完成&#xff0c;就需要对被测系统进行测试 3、有些系统不支持重复请求&#xff0c;或有访问…

Qt安装时出现无法下载存档,环境配置,main中自定义类编译不过问题

1. Qt安装时出现无法下载存档 进入Qt安装程序exe所在的文件目录&#xff0c;一般在下载文件夹&#xff0c;右键打开cmd。cmd输入&#xff1a;对应的exe镜像提速。 .\qt-online-installer-windows-x64-4.8.0.exe --mirror https://mirrors.cloud.tencent.com/qt/ 2. 环境配置 …

Jmeter压测 —— 1秒发送1次请求

场景&#xff1a;有时候测试场景需要设置请求频率为一秒一次&#xff08;或几秒一次&#xff09;实现方法一&#xff1a;1、首先需要在线程组下设置循环次数&#xff08;可以理解为请求的次数&#xff09; 次数设置为请求300次&#xff0c;其中线程数跟时间自行设置 2、在设置…

XSS(跨站脚本攻击)

1.什么是xss XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;为了避免和CSS层叠样式表名称冲突&#xff0c;所以改为了 XSS&#xff0c;是最常见的Web应用程序安全漏洞之一,XSS是指攻击者在网页中嵌入客户端脚本&#xff0c;通常是JavaScript编写…

晨控CK-UR12-E01与欧姆龙NX/NJ系列EtherNet/IP通讯手册

晨控CK-UR12-E01与欧姆龙NX/NJ系列EtherNet/IP通讯手册 晨控CK-UR12-E01 是天线一体式超高频读写器头&#xff0c;工作频率默认为902MHz&#xff5e;928MHz&#xff0c;符合EPC Global Class l Gen 2&#xff0f;IS0-18000-6C 标准&#xff0c;最大输出功率 33dBm。读卡器同时…

vue3-使用富文本编辑器-wangEditor-文章发表1

最近在搞项目:我们组内几位成员正在搞一个网站搭建,以后更新会比较缓慢 引言:如果要网站要用的富文本编辑器的话,这边推荐用wangEditor 官网地址传送 : wangEditorhttps://www.wangeditor.com/ 我现在还在扩展我的写文章用的富文本编辑器 现在我将简单介绍一下其基本使用方…

#15松桑前端后花园周刊-Turborepo 2.0、ESLint v9.4.0、重新学习promise、CSS gap

⚡️行业动态 ESLint 推出了一个新的 ESLint 配置迁移器 ESLint 用户没有升级到 ESLint v9.x 的最大原因之一是迁移配置文件似乎很困难和复杂。因此 Eslint 推出eslint/migrate-config支持将. eslintrc 文件迁移到 eslint.config.js&#xff0c;以帮助用户提高配置文件的速度。…

Web 自动化测试(基于Pytest极简)

Pytest 初体验 在使用 Python 进行 Web UI 自动化测试时&#xff0c;我们除了使用 unittest 单元测试框架&#xff0c;还可以使用 pytest&#xff0c;本节实验就给大家简单的介绍一下 pytest。 环境配置 本系列实验我们借助 VS Code 工具编写代码&#xff0c;使用的 Python …

Elasticsearch-经纬度查询(8.x)

目录 一、开发环境 二、pom文件 三、ES配置文件 四、ES相关字段 五、ES半径查询 ES的字段类型:geo_point&#xff0c;可以实现以一个点为中心的半径查询(geo_distance query) ES 地里位置查询: 半径查询(geo_distance query)查询指定矩形内的数据(geo_bounding_box quer…