MySQL基础——函数和约束

目录

1函数

1.1字符串函数

1.2数值函数

1.3日期函数

1.4流程函数

2约束

2.1约束概述和演示

2.2外键约束(表连接键)

1函数

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

1.1字符串函数

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

语法:select 函数(参数);

练习:

#concat连接字符

select concat('hell','o');

#lower 将字符串全部转为小写

select lower('HEllo');

upper 将字符串全部转为大写

select upper('HEllo');

#lpad左填充到5个字符

select lpad('he',5,'-');

#rpad右填充

select rpad('he',5,'-');

#trim 去掉头尾的空格,中间不管

select trim(' he llo ');

#substring(str,start,len) 返回从字符串str从start位置起的len个长度的字符串

select substring('helloworld',1,5)

案例:由于业务需求变更,企业员工的工号,统一5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001.

update emp set workno=lpad(workno,5,'0');select * from emp

1.2数值函数

常见的数值函数如下:

语法:select 函数(参数);

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

我的代码:不严谨
select round(rand()*1000000,0);

正确代码:还要补0

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

1.3日期函数

常见的日期函数如下:

练习:

#当前日期

select curdate();

#当前时间

select curtime();

#当前日期和时间

select now();

#获取指定date的年份

select year(now());

#返回一个日期/时间值加上一个时间间隔expr后的时间值,这里是加上70年后

select now() ,date_add(now(),interval 70 year);

#时间差:返回起始时间date1和结束时间date2之间的天数

select datediff('2024-6-23','2024-6-14');

案例:查询所有员工的入职天数,并根据入职天数倒序排序。

分析:入职天数=当前日期-入职日期,时间差用datediff函数,当前日期用curdate函数。

代码:

select name, datediff(curdate(),endate) entrydate from emporder by entrydate desc;

1.4流程函数

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

案例:查询emp表的员工姓名和工作地址(北京/上海---->一线城市,其他---->二线城市)

代码1:case when

select name,workaddress,case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end addressfrom emp;

代码2:case when 这种写法可以用于不等式

select name,workaddress,case when workaddress='北京' then '一线城市' when workaddress='上海' then '一线城市' else '二线城市' end addressfrom emp;

代码3:if

select name,workaddress,if(workaddress in ('北京','上海'),'一线城市','二线城市') addressfrom emp;

结果都是一样的:

2约束

2.1约束概述和演示

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

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

分类:

案例:根据需求,完成表结构的创建。需求如下:

对应创建SQL代码:

create table user(id int primary key auto_increment comment '主键',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 '性别')comment '用户表'

如果插入的数据中,age超过范围,check就会报错:

因为name varchar(10) not null unique comment '姓名',如果name为null也会报错。

如果是通过图形化界面添加表,可以直接进行勾选:

2.2外键约束(表连接键)

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

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

添加外键:

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

现在就不能直接删除某个表中的记录了。这就保证了数据的一致性和完整性。

删除外键:

alter table emp drop foreign key fk_emp_dept_id;

删除:表或表键用drop,数据字段用delete

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

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

相关文章

WPF界面设计

1、使用C#-WPF实现抽屉效果-炫酷漂亮的侧边栏导航菜单-SplitViewMD主题重绘原生控件的美观效果-提供源码Demo下载 码源地址&#xff1a;https://download.csdn.net/download/Prince999999/89424685 2、使用C#-WPF实现抽屉效果-菜单导航功能实现&#xff0c;常规的管理系统应该…

JVM 一些常见问题QA

GC Roots 虚拟机栈中引用的对象&#xff1b; 本地方法栈中JNI引用的对象&#xff1b; 方法区中类静态变量引用的对象&#xff1b; 方法区中常量引用的对象&#xff1b; Full GC是Minor GCMajor GC吗&#xff1f; Minor GC&#xff1a;回收年轻代&#xff1b; Major GC&…

【强化学习】gymnasium自定义环境并封装学习笔记

【强化学习】gymnasium自定义环境并封装学习笔记 gym与gymnasium简介gymgymnasium gymnasium的基本使用方法使用gymnasium封装自定义环境官方示例及代码编写环境文件__init__()方法reset()方法step()方法render()方法close()方法 注册环境创建包 Package&#xff08;最后一步&a…

描述React的组件生命周期方法,并解释它们在何时被调用。

React的组件生命周期方法分为三个阶段&#xff1a;挂载阶段&#xff08;Mounting&#xff09;、更新阶段&#xff08;Updating&#xff09;和卸载阶段&#xff08;Unmounting&#xff09;。以下是这些阶段中各个生命周期方法的描述和调用时机&#xff1a; 挂载阶段&#xff08…

Ubuntu启动之引导内核阶段

按照Linux系统从打开电源到进入系统的顺序&#xff0c;整个启动过程可分为以下阶段。 BIOS阶段&#xff0c;Ubuntu启动之BIOS阶段-CSDN博客引导程序阶段&#xff0c;Ubuntu启动之引导程序阶段-CSDN博客内核阶段&#xff0c;加载内核、初始化。进入系统&#xff0c;显示登录界面…

搭建Python虚拟环境(三):Conda

使用Conda搭建虚拟环境的详细指南 Conda 是一个开源包管理系统和环境管理系统&#xff0c;能够安装、更新、运行和管理软件包和环境。本文将详细介绍如何使用Conda搭建虚拟环境&#xff0c;包括安装Conda、常用命令、创建虚拟环境、激活虚拟环境、退出虚拟环境以及迁移虚拟环境…

Tomcat基础详解

第一篇&#xff1a;Tomcat基础篇 lecture&#xff1a;邓澎波 一、构建Tomcat源码环境 工欲善其事必先利其器&#xff0c;为了学好Tomcat源码&#xff0c;我们需要先在本地构建一个Tomcat的运行环境。 1.源码环境下载 源码有两种下载方式&#xff1a; 1.1 官网下载 https://…

时序预测 | MATLAB实现TCN-Attention自注意力机制结合时间卷积神经网络时间序列预测

时序预测 | MATLAB实现TCN-Attention自注意力机制结合时间卷积神经网络时间序列预测 目录 时序预测 | MATLAB实现TCN-Attention自注意力机制结合时间卷积神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-Attention自注意力机制结合时…

拥抱数字世界|AI在娱乐行业的应用,娱乐新纪元已到来

在蓬勃发展的全球化趋势下&#xff0c;越来越多的厂商正在批量涌入娱乐赛道&#xff0c;期待能创造新的增长奇迹。随着科技的不断发展&#xff0c;人工智能技术正日益深入各行各业&#xff0c;其中媒体和娱乐行业更是迎来了一场革命性的变革。在媒体和娱乐领域展现出了巨大的潜…

模型 商业画布

说明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九块拼图&#xff0c;构建商业模式。 1 商业画布的应用 1.1 商业画布用于明确“GreenCycle”初创企业&#xff08;虚构&#xff09;的商业模式 假设有一家名为“GreenCycle”的初创…

多线程中run()和start()的区别

我们知道&#xff0c;在多线程中 Thread thread new Thread(runnable); thread.start();以及 thread.run();都可以执行runnable中run方法下的代码&#xff0c;但是二者又有所不同 下面给出一段代码用以体现二者的区别&#xff1a; 以下代码中&#xff0c;通过thread.start()启…

Scala的高级特性

Scala的高级特性 ☀小白的Scala学习笔记 目录 Scala的高级特性 1.匿名函数 2.如何把方法转化为函数 3.柯里化 1&#xff09;柯里化 2&#xff09;实例 3&#xff09;柯里化应用&#xff1a;排序 4&#xff09;练习 Tea 1.匿名函数 Scala 中的匿名函数是一种没有命名的…

可视化剪辑,账号矩阵管理,视频分发,聚合私信多功能一体化营销工具 源代码开发部署方案

可视化剪辑&#xff0c;账号矩阵管理&#xff0c;视频分发&#xff0c;聚合私信多功能一体化营销工具 源代码开发部署方案 可视化剪辑&#xff1a; 可视化剪辑开发是一种通过图形化界面和拖放操作&#xff0c;以可视化的方式进行影片剪辑和编辑的开发方法。它可以让非专业用户…

小知识点快速总结:Batch Normalization Layer(BN层)的作用

本系列文章只做简要总结&#xff0c;不详细说明原理和公式。 目录 1. 参考文章2. 主要作用3. 具体分析3.1 正则化&#xff0c;降低过拟合3.2 提高模型收敛速度&#xff0c;加速训练3.3 减少梯度爆炸或者梯度消失的情况 4. 补充4.1 BN层做的是标准化不是归一化4.2 BN层的公式4.…

代码随想录算法训练营第三十六天|860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

LeetCode 860.柠檬水找零 题目链接&#xff1a;860.柠檬水找零 踩坑&#xff1a;以为不需要考虑具体怎么找钱&#xff0c;一直在从整体上想解决方案。 思路&#xff1a;当客户支付5元我们只需要收下&#xff0c;当客户支付10元我们只能找零5元&#xff0c;当客户支付20元我们…

adb之ps命令用法

目录 前言一、命令参数二、输出结果含义 前言 在adb shell终端&#xff0c;输入 ps&#xff0c;可查看手机当前所有的进程状态&#xff0c;其中ps的英文全称是Process Status。 ps命令对于分析系统异常情况时都是必备的技能&#xff0c;需要通过这个简单命令来查看系统真实的状…

12.IO相关概念

NIO 非阻塞IO BIO 阻塞IO stream vs channel 1.stream不会自动缓冲数据;channel会利用系统提供的发送缓冲区,接受缓冲区,更为底层。 2.stream仅支持阻塞API;channel同时支持阻塞、非阻塞API,网络channel可配合selector实现多路复用。 3.二者均为全双工,即读写可以同…

Golang 依赖注入库Wire应用案例

文章目录 简介Github指南安装案例wire.NewSetwire.Buildwire.Bindwire.Structwire.Valuewire.InterfaceValue 简介 Go语言的依赖注入库Wire是由Google提供的一个代码生成工具&#xff0c;用于简化和自动化依赖注入过程。Wire主要通过生成代码来处理依赖关系&#xff0c;而不是…

上网行为管理产品有哪些?好用的四款上网行为管理产品

上网行为管理产品是现代企业网络安全架构中的重要组成部分&#xff0c;它们旨在帮助企业有效监控、管理和控制员工的网络使用行为&#xff0c;确保网络资源的合理利用&#xff0c;保障信息安全&#xff0c;提升工作效率。 以安企神为例&#xff0c;我们将详细介绍它的主要功能…

【内存管理之C语言数组】

1.栈空间上的C数组 糟糕的可用性&#xff0c;但是你将在遗留代码中见到它们 相同类型的对象的内存块 大小必须是常量表达式 第一个元素索引为0 2.指针和C数组 更奇怪的是&#xff1a;数组标识符退化为指向第一个元素的指针 3.访问数组 4.堆空间上的C数组 相同类型的对象的内…