MySQL---函数与约束

目录

一、函数

1. 字符串函数 

2. 数值函数

3. 日期函数

4. 流程函数

5. 总结 

二、约束 

1. 概述

2. 约束演示

3. 外键约束

3.1 添加外键

3.2 删除外键 

3.3 外键删除更新行为

4. 总结 

一、函数

1. 字符串函数 

命令如下所示:

-- concat
select concat("Hello" , " MySQL");//Hello MySQL-- lower
select lower("Hello");//hello-- upper
select upper("Hello");//HELLO-- lpad
select lpad('01",5,"-");//---01-- rpad
select rpad('01",5,"-");//01----- trim
select trim(" Hello  MySQL ");//Hello  MySQL-- substring
select substring("Hello MySQL",1,5);//Hello;首位索引为1

案例练习: 

命令如下所示: 

-- 1.由于业务需求变更,企业员工的工号,统一5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001,
update emp set workno = lpad(workno,5,"0");

输出如下所示:

2. 数值函数

命令如下所示:  

-- ceil
select ceil(1.1);//2-- floor
select floor(1.9);//1-- mod
seLect mod(3,4);//3%4=3-- rond
select rand();-- round
select round(2.345,2);//2.35

案例练习:  

命令如下所示: 

--若rand生成的数为0.0135566则需要右边补零
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());seleet DAY(now());-- date_add
select date_add(now(),INTERVAL 70 DAY);
select date_add(now(),INTERVAL 70 MONTH);
select date_add(now(),INTERVAL 70 YEAR);-- datediff
select datediff("2021-12-01", "2021-10-01");//60;前减后

 案例练习:  

 命令如下所示: 

select name,datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc;

 输出如下所示:

4. 流程函数

命令如下所示:  

-- if
select if(true,'Ok','Error');//OK-- ifnull
select ifnull('Ok','Default');//OKselect ifnull(' ','Default');//空select ifnull(null, 'Default');//Default-- case when then else end
--需求:查bemp表的员工姓名和工作地址〔北京/上海---->一线城市,其他---->二线城市)
selectname,( case workaddress when'北京' then '一线城市' when ' 上海' then '一线城市' else '二线城市' end ) as '工作地址 
from emp;

 案例练习:   

生成表:

如下所示: 

命令如下所示:  

selectid,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;

  输出如下所示:

5. 总结 

二、约束 

1. 概述

2. 约束演示

 案例练习:   

命令如下所示:  

create table user(id int primary key auto_increment comment "主键",name varchar(10) not null unique conment"姓名",age int check ( age > 0 && age c= 120 ) comment"年龄",status char(1]default "1"comment"状态",gender char(1) comment"性别"
)comment '用户表';    --插入数据
insert into user(name ,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,0','男');
insert into user(name,age,status,gender) values ('Tom3',19,'1','男');insert into user(name,age,status,gender) values (null,19,'1','男');
insert into user(name,age,status,gender) values ('Tom5',19,'1','男');insert into user(name,age,status,gender) values ('Tom4',80,"1','男');
insert into user(name,age,status,gender) values ('Tom5',-1,'1','男');
insert into user(name,age,status,gender) values ('Tom5',121,'1','男');insert into user(name,age,gender) values ('Tom5',120,'男');

输出如下所示: 

 

图形化界面创建如下所示:

补充: 

3. 外键约束

 命令如下所示:  

--准备数据
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称',
)comment '部门表';
INSERT INTO dept (id,name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(6,'销售部'),(5,'总经办');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',ept_id int comment '部门ID'
)comment '员工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'总裁' ,2000,'280-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),(3,‘杨道',33,'开发',8400, '2000-11-03',2,1),(4,'韦一笑',48,'开发' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'开发' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序员鼓励师' ,6600,'2004-10-12',2,1);

上述两表并未建立关联 

3.1 添加外键

 命令如下所示:   

--准备数据
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称',
)comment '部门表';
INSERT INTO dept (id,name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(6,'销售部'),(5,'总经办');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',ept_id int comment '部门ID'
)comment '员工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'总裁' ,2000,'280-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),(3,‘杨道',33,'开发',8400, '2000-11-03',2,1),(4,'韦一笑',48,'开发' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'开发' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序员鼓励师' ,6600,'2004-10-12',2,1);--添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

输出如下所示: 

3.2 删除外键 

 命令如下所示:   

--准备数据
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称',
)comment '部门表';
INSERT INTO dept (id,name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(6,'销售部'),(5,'总经办');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',ept_id int comment '部门ID'
)comment '员工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'总裁' ,2000,'280-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),(3,'杨逍',33,'开发',8400, '2000-11-03',2,1),(4,'韦一笑',48,'开发' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'开发' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序员鼓励师' ,6600,'2004-10-12',2,1);--添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--删除外键
hlter table emp drop foreign key fk_emp_dept_id;

 输出如下所示: 

3.3 外键删除更新行为

 命令如下所示:    

--准备数据
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称',
)comment '部门表';
INSERT INTO dept (id,name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(6,'销售部'),(5,'总经办');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',ept_id int comment '部门ID'
)comment '员工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'总裁' ,2000,'280-01-01',null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),(3,'杨逍',33,'开发',8400, '2000-11-03',2,1),(4,'韦一笑',48,'开发' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'开发' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序员鼓励师' ,6600,'2004-10-12',2,1);--添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--删除外键
hlter table emp drop foreign key fk_emp_dept_id;--外键的删除和更新行为
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade;

 输出如下所示:  

图形化界面设置如下所示:

4. 总结 

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

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

相关文章

苹果CMS:如何去掉首页帮助提示信息

首先我们安装好苹果CMS,未安装的可以参考苹果cms:介绍及安装 安装好之后我们需要进入模版设置,可能对于刚刚接触CMS框架的朋友是不清楚地址的: https://www.yourweb.com/admin_login.php/admin/mxpro/mxproset 其中【yourweb】…

爱设计AiPPT.cn赵充:营销工作的AI进化

爱设计&AiPPT.cn是一家 AIGC 数字科技企业,致力于打造「下一代个人与组织的 Ai 工作站」 。目前旗下产品包括AiPPT.cn、爱设计AIGC 内容中台、365 编辑器、爱设计在线设计工具、AiH5 等超过 10 余款应用 AI 能力的内容创作工具。日前,爱设计&AiP…

python的协程异步

参考资料 https://blog.csdn.net/qq_43380180/article/details/111573642?spm1001.2014.3001.5506 协程的概念 指的是在一个线程中,可以在某个地方挂起的特殊函数,并且可以重新在挂起处继续运行。协程不是进程,也不是线程。 进程 VS 线程…

TypeScript-类型断言

类型断言 当开发者比TS本身更清楚当前的类型是什么,可以使用断言(as)让类型更加精确和具体 const _link document.getElementById(link) console.log(_link.href) // 出错了,如下图 const _link document.getElementById(link) as HTMLAnchorElement…

【三数之和】python,排序+双指针

暴力搜索3次方的时间复杂度,大抵超时 遇到不会先排序 排序双指针 上题解 照做 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:res[]nlen(nums)#排序降低复杂度nums.sort()k0#留两个位置给双指针i,jfor k in range(n-2):if nums[k]…

【再探】Java—泛型

Java 泛型本质是参数化类型,可以用在类、接口和方法的创建中。 1 “擦除式”泛型 Java的“擦除式”的泛型实现一直受到开发者的诟病。 “擦除式”的实现几乎只需要在Javac编译器上做出改进即可,不要改动字节码、虚拟机,也保证了以前没有使…

光伏电站在线监测智能诊断系统:开启无人值守新纪元

光伏电站在线监测智能诊断系统:开启无人值守新纪元 大家都知道光伏电站是通过汲取着太阳的光芒,为人类提供源源不断的电能源。然而,随着光伏电站规模的扩大和复杂性的增加,如何有效提高发电效率、减少人工维护成本,实…

YOLOV5算法多目标检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着计算机视觉技术的飞速发展,目标检测已成为许多实际应用场景中的关键技术&…

数据结构之二叉树的超详细讲解(2)--(堆的概念和结构的实现,堆排序和堆排序的应用)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 数据结构之二叉树的超详细讲解(2)--(堆的概念和结构的实现,堆排序和堆排序的应用) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记…

电脑卸载linux安装windows后每次开机都出现grub

原因分析 这是因为电脑硬盘中还存在linux系统的引导程序,并且启动顺序还在windows之前,有时候通过bios根本找不到它的存在,以至于每次windows开机出现grub之后都要输入exit退出linux的引导之后才能使得电脑进入windows,这个有时会…

Python | Leetcode Python题解之第108题将有序数组转换为二叉搜索树

题目: 题解: class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 选择任意一个中间位置数字作为根节点mid (left right randint(0, 1)) // 2root TreeNode(nums…

纯血鸿蒙APP实战开发——边缓存边播放案例

介绍 OhosVideoCache是一个支持边播放边缓存的库,只需要将音视频的url传递给OhosVideoCache处理之后再设置给播放器, OhosVideoCache就可以一边下载音视频数据并保存在本地,一边读取本地缓存返回给播放器,使用者无需进行其他操作…

NDIS小端口驱动(五)

在需要的时候,我们也许需要NDIS微型端口程序信息,下面会从多个方面来讨论如何查询NDIS微型端口驱动。 查询无连接微型端口驱动程序 若要查询无连接微型端口驱动程序维护的 OID,绑定协议调用 NdisOidRequest 并传递 一个NDIS_OID_REQUEST 结…

Mac 安装 git

文章目录 前言一、介绍二、下载三、验证四、配置五、Git常用命令六、git提交和撤销工作流程代码提交和提交同步代码撤销和撤销同步 FAQ1.homebrew 下载解决方法一(强烈推荐):解决方法二: 总结 前言 Git 是一个开源的分布式版本控…

LeetCode547省份数量

题目描述 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给…

第十一章 文件及IO操作

第十一章 文件及IO操作 文件的概述及基本操作步骤 文件: 存储在计算机的存储设备中的一组数据序列就是文件不同类型的文件通过后缀名进行区分 文本文件:由于编码格式的不同,所占磁盘空间的字节数不同(例如GBK编码格式中一个中文字符占2字…

cesium绘制三角网可视化及mesh网格数据解析

可视化运行效果(水质污染扩散) 实现运行效果 术语 Mesh网格数据解析 Mesh(网格)在不同领域有不同的应用和定义。在计算机网络中,Mesh网络指的是一种无中心的网状结构,每个节点都与其他节点相连。而在3D计算机图形学中&#…

云原生Kubernetes: K8S 1.26版本 部署KubeSphere

目录 一、实验 1.环境 2.K8S 1.26版本部署HELM 3.K8S 1.26版本 部署KubeSphere 4.安装KubeSphere DevOps 二、问题 1.如何安装Zadig 2.扩展插件Zadig安装失败 3.calico 如何实现不同node通信 4.如何清除docker占用的磁盘空间 5.如何强制删除资源 6.namespace删除不…

宿舍管理系统--毕业设计

毕业设计💼MD5加密🔒SSM框架🎨Layui框架🎄 实现功能 管理员的登录与登出 管理员,班级,学生,宿舍,卫生,访客各模块增删改查 个别模块关联查询 各个模块数据导出Excel 一些截图

[4]CUDA中的向量计算与并行通信模式

CUDA中的向量计算与并行通信模式 本节开始,我们将利用GPU的并行能力,对其执行向量和数组操作讨论每个通信模式,将帮助你识别通信模式相关的应用程序,以及如何编写代码 1.两个向量加法程序 先写一个通过cpu实现向量加法的程序如…