MYSQL三、MYSQL的函数与约束

一、函数

  1. 函数:是指一段可以直接被另一段程序调用的程序或代码。
  2. MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

1、字符串函数

在这里插入图片描述

--  concat : 字符串拼接 
select concat('Hello' , ' MySQL');  -- 输出: Hello MySQL--  lower : 全部转小写select lower('Hello');  -- 输出:hello-- upper : 全部转大写
select upper('hello'); -- 输出:HELLO--  lpad : 左填充(向01的左边填充-,使它达到5个字符的长度)select lpad('01', 5, '-');  --  输出:---01--  rpad : 右填充(向01的右边填充-,使它达到5个字符的长度)
select rpad('01', 5, '-');  -- 输出:01----- trim : 去除空格(去掉字符串头部和尾部的空格)
select trim(' Hello  MySQL '); -- 输出:Hello  MySQL--  substring : 截取子字符串(从字符串'Hello MySQL'的第1个字符起,截取5个字符的长度)select substring('Hello MySQL',1,5);  -- 输出:Hello

2、数值函数

在这里插入图片描述

-- ceil:向上取整
select ceil(1.1); -- 输出:2-- floor:向下取整select floor(1.9);  -- 输出:1-- mod:取模select mod(7,4); -- 输出:3-- rand:获取0-1内的随机数
select rand();-- round:四舍五入(取小数点后2位数)
select round(2.344,2); -- 输出:2.34

测试:通过数据库的函数,生成一个六位数的随机验证码。
思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的,所以可以在其基础上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0

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

3、日期函数

在这里插入图片描述

--  curdate:当前日期
select curdate();--  curtime:当前时间select curtime(); -- now:当前日期和时间select now(); --  YEAR , MONTH , DAY:当前年、月、日select YEAR(now()); select MONTH(now());select DAY(now());-- date_add:增加指定的时间间隔 (70的值为正表示日期时间增加,为负表示日期时间减少)
select date_add(now(), INTERVAL 70 YEAR );--  datediff:获取两个日期相差的天数select datediff('2024-10-01', '2024-11-01'); -- 输出:-31

4、流程函数

  1. 流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
    在这里插入图片描述
-- 如果false的值为true,则返回Ok,否则返回Error
select if(false, 'Ok', 'Error'); -- Error-- ifFull,如果参数1不为null,则返回参数1,否则返回参数2select ifnull('Ok','Default'); -- Okselect ifnull('','Default'); -- 返回空的字符串,即前面的参数select ifnull(null,'Default'); -- 返回Default-- case when then else end
-- 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)selectname,( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址'from emp;  -- 如果workaddress的值='北京'或者'上海'则返回一线城市,否则返回二线城市

二、约束

  1. 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  2. 目的:保证数据库中数据的正确、有效性和完整性。
    在这里插入图片描述
    约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

案例演示
在这里插入图片描述

CREATE TABLE tb_user(id int AUTO_INCREMENT PRIMARY KEY  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  '性别');

在为字段添加约束时,我们只需要在字段之后加上约束的关键字即可,需要关注其语法。

外键约束

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

1.1、添加外键

 CREATE TABLE 表名(
字段名    数据类型,...[CONSTRAINT]  [外键名称]  FOREIGN  KEY (外键字段名)   REFERENCES   主表 (主表列名)
);ALTER   TABLE  表名   ADD  CONSTRAINT   外键名称   FOREIGN   KEY (外键字段名)  
REFERENCES  主表 (主表列名) ;--CONSTRAINT关键字用于为外键约束指定一个名称,以便对其进行引用和操作
 create table tb_user(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '1: 男 , 2: 女',phone char(11) comment '手机号') comment '用户基本信息表';create table tb_user_edu(id int auto_increment primary key comment '主键ID',degree varchar(20) comment '学历',major varchar(50) comment '专业',primaryschool varchar(50) comment '小学',middleschool varchar(50) comment '中学',university varchar(50) comment '大学',userid int unique comment '用户ID',constraint fk_userid foreign key (userid) references tb_user(id)) comment '用户教育信息表';

为表添加数据时,先添加没有外键的表,然后有外键的表再根据主表的的数据添加数据

-- 为emp表的dept_id字段添加外键约束,外键名称为fk_emp_dept_id,关联dept表的主键id。
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

1.2、删除外键

ALTER   TABLE  表名   DROP  FOREIGN  KEY  外键名称;
-- 删除emp表的外键fk_emp_dept_id。alter table emp drop foreign key fk_emp_dept_id;

1.3、 删除/更新行为

  1. 添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:
    在这里插入图片描述
 ALTER TABLE  表名  ADD CONSTRAINT  外键名称  FOREIGN KEY  (外键字段)   REFERENCES   
主表名 (主表字段名)   ON UPDATE CASCADE ON DELETE CASCADE;
-- cascadealter table emp add constraint fk_emp_dept_id foreign key (dept_id) references 
dept(id) on update cascade on delete cascade ;-- set nullalter table emp add constraint fk_emp_dept_id foreign key (dept_id) references 
dept(id) on update set null on delete set null ;

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

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

相关文章

通用代码生成器应用场景六,为完善的应用系统收集需求

通用代码生成器应用场景六&#xff0c;为完善的应用系统收集需求 使用急就章功能可以开发一个简单的应用先凑和着使用。此应用系统也可以成为完善的应用系统的原型和祖先。如果您新规划一个完善的应用系统&#xff0c;您可以先使用通用代码生成器生成一个临时使用的系统&#x…

人脸识别系统之动态人脸识别

二&#xff0e;动态人脸识别 1.摄像头人脸识别 1.1.导入资源包 import dlib import cv2 import face_recognition from PIL import Image, ImageTk import tkinter as tk import os注&#xff1a;这些导入语句允许您在代码中使用这些库和模块提供的功能&#xff0c;例如创建…

Cacti EZ中文版 12.2.27 ISO 下载安装

简介 修改了yum源为中国高校联合镜像源 github改为gitee。 系统增加中文语言包。 修改时区为东八区。 增加了常用的软件包。 PS&#xff1a;CactiEZ是一个自动化安装cacti和插件的ISO镜像&#xff0c;本教程的ISO是基于官方的IOS针对国内网络做了修改。 可按照目前最新的Ca…

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单&#xff0c;师傅入驻全套商业源码 一、系统定义 家政上门服务系统是一种利用互联网技术&#xff0c;将家政服务需求与专业的家政服务人员进行高效匹配的平台。它允许用户通过…

【OceanBase诊断调优】—— obdiag 工具助力OceanBase数据库诊断调优(DBA 从入门到实践第八期)

1. 前言 昨天给大家分享了【DBA从入门到实践】第八期&#xff1a;OceanBase数据库诊断调优、认证体系和用户实践 中obdiag的部分&#xff0c;今天将其中的内容以博客的形式给大家展开一下&#xff0c;方便大家阅读。 2. 正文 在介绍敏捷诊断工具之前&#xff0c;先说说OceanBa…

springboot配置

springboot配置 配置文件分类 springboot提供了多种属性配置方式 application.xml(只有老的spring项目使用)application.propertiesapplication.yml(或yaml) 优先级:properties>yml>yaml 配置文件 pom.xml★ 在Spring Boot项目中&#xff0c;pom.xml文件是Maven项目…

PLM系统与PDM系统、ERP系统、CRM系统有哪些关系?

在当今快速发展的信息技术时代&#xff0c;企业信息化已成为提升管理水平和增强竞争力的关键。其中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;作为企业信息化的基石&#xff0c;与其他信息系统如产品数据管理&#xff08;PDM&#xff09;、企业资源规划&#xf…

基于SpringBoot+Vue的公园管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

如何自建yum源仓库

文章目录 1&#xff0c;创建可用的yum源文件夹&#xff0c;把你自己的软件包&#xff0c;并放在这个目录文件夹中2&#xff0c;将yum源文件夹目录复制到/var/www/html/中3&#xff0c;客户端修改配置文件4&#xff0c;创建一个 RPM 软件包存储库5&#xff0c;查验是否成功6&…

Dify快速接入微信

一、Dify简介 项目官网&#xff1a;Dify.AI 生成式 AI 应用创新引擎 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非…

ESP32-C3模组上跑通OTA升级(11)

接前一篇文章&#xff1a;ESP32-C3模组上跑通OTA升级&#xff08;10&#xff09; 本文内容参考&#xff1a; 《ESP3-C3 物联网工程开发实战》 乐鑫科技 特此致谢&#xff01; 上一回说到解决了证书验证的问题&#xff0c;但紧接着又出现了一个新的问题&#xff1a;版本相同无…

QT等比例缩放图片

1、这里使用QLabe控件显示图片&#xff0c;如下&#xff1a; label->setPixmap(QPixmap::fromImage(image_2)); 以上是直接原始大小来显示QImage image_2图片。 label->setAlignment(Qt::AlignCenter); 以上代码&#xff0c;是将显示的图片居中展示&#xff0c;默认…

Vue3-Pinia(大菠萝)附源码

文章目录 Pinia 开源地址Pinia 定义与起源优点与特性Pinia使用准备一个小模块(可参考以下程序)搭建 pinia 环境存储读取数据修改数据(三种方式)storeToRefsgetters$subscribestore组合式写法 更多相关内容可查看 Pinia 开源地址 git地址&#xff1a;https://gitee.com/its-a-l…

干货分享 | 详解TSMaster CAN 与 CANFD 的 CRCE2E 校验方法

面对切换工具链的用户来说&#xff0c;在 TSMaster 上完成总线通讯中的 CRC/E2E 校验处理不是特别熟悉&#xff0c;该文章可以协助客户快速使用 TSMaster 完成 CAN/CAN FD 总线通讯的 CRC/E2E 校验。 本文关键字&#xff1a;TSMaster&#xff0c;CAN/CANFD&#xff0c;CRC 校验…

RK3588平台编译zlog 日志模块

下载zlog之后 解压 进入zlog目录 新建一个build_rk3588.sh脚本 内容如下 make CCaarch64-linux-gcc PREFIX./install_rk3588 将工具链导入环境变量 export PATH/home/QMCY/RK3588/arm64tools/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/:$PATH 编译无问题 产生的…

【wiki知识库】04.SpringBoot后端实现电子书的增删改查以及前端界面的展示

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;今日内容 二、&#x1f30f;前端页面的改造 2.1新增电子书管理页面 2.2新增路由规则 2.3修改the-header代码 三、&#x1f697;SpringBoot后端Ebook模块改造 3.1增加电子书增/改接口 3.1.…

基于SpringBoot+Vue租房网站设计和实现(源码+LW+部署文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

基于全志T507-H的Igh EtherCAT主站案例分享

基于全志T507-H的Linux-RT IgH EtherCAT主站演示 下文主要介绍基于全志T507-H&#xff08;硬件平台&#xff1a;创龙科技TLT507-EVM评估板&#xff09;案例&#xff0c;按照创龙科技提供的案例用户手册进行操作得出测试结果。 本次演示的开发环境&#xff1a; Windows开发环…

【二进制部署k8s-1.29.4】九、cilium1.15.4安装

文章目录 简介 一.安装helm和cilium 客户端命令二.安装cilium2.1.安装cilium对于系统内核的版本的要求2.2.安装的命令及参数如下&#xff1a;参数注释&#xff1a; 三.确认cilium的安装状态四.访问cilium的监控页面hubble-ui 简介 本章节主要讲解k8s集群网络插件cni的安装&…

react-native运行程序 出现 Application XXX is waiting for the debugger

1.重启adb: adb kill-server、 adb start-server. 2、确定USB调试模式是否开启&#xff0c;如果已经开启了&#xff0c;关闭了重新打开一下 3.选择调试模式并关闭等待调试程序