MySQL---函数与约束

news2024/11/17 6:00:08

目录

一、函数

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');//OK

select ifnull(' ','Default');//空

select ifnull(null, 'Default');//Default

-- case when then else end
--需求:查bemp表的员工姓名和工作地址〔北京/上海---->一线城市,其他---->二线城市)
select
    name,
    ( case workaddress when'北京' then '一线城市' when ' 上海' then '一线城市' else '二线城市' end ) as '工作地址 
from emp;

 案例练习:   

生成表:

如下所示: 

命令如下所示:  

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;

  输出如下所示:

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.coloradmin.cn/o/1684308.html

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

相关文章

Qt | QGridLayout 类(网格布局)

01、上节回顾 Qt | QBoxLayout 及其子类(盒式布局)02、QGridLayout 简介 1、网格布局原理(见下图): 基本原理是把窗口划分为若干个单元格,每个子部件被放置于一个或多个单元格之中,各 单元格的大小可由拉伸因子和一行或列中单元格的数量来确定,若子部件的大小(由 sizeH…

园区网的基本了解

园区网使用的典型技术---IEEE802.3标准/IEEE802.11标准 封闭式园区网络 ---由内部人员使用,不能访问互联网。 ---制订各式各样的规章制度 ---NAC,网络接入控制 开放式园区网络 ---服务于公众的,认证 园区网的发展 第一代:…

开关电源重点可靠性测试项目与测试方法

为确保开关电源在复杂工作环境下的安全性与稳定性,各种安全性测试成为不可或缺的环节。本文将深入探讨几项关键的安全性测试项目,帮助用户全面了解如何评估开关电源的可靠性和安全性。 一、过压保护测试方法 目的是为了检测当输出电压过高时,…

express.js--token中间件验证及token解析(三)

主要作用 访问路由接口时,哪些需要校验token 通过token解析身份信息,就可以知道是哪个人 框架基本搭建express.js--基本用法及路由模块化(一)-CSDN博客 如何生成tokenexpress.js--生成token(二)-CSDN博客 middleware/index.js const jwt require(…

【linux】yumvim工具理解使用

目录 Linux 软件包管理器 yum 关于 rzsz 注意事项 查看软件包 Linux开发工具 Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 简单vim配置 配置文件的位置 sudo提权 Linux 软件包管理器 yum 1.yum是什么&#xff1…

Java基础22(JSON解析 注解)

目录 一、JSON解析 1. JSON语法 2. JSON的用途 3. Java解析JSON 4. 使用Fastjson 4.1 Fastjson 的优点 4.2 Fastjson 导包 4.3 Fastjson的主要对象 4.4 常用方法 将Java对象 "序列化"(转换) 为JSON字符串: 将JSON字符串…

薪资不公、晋升无望?动笔写一份申诉材料吧!

薪资不公、晋升无望?动笔写一份申诉材料吧! 引言:每个努力工作的人都值得公平对待 在职场上,我们付出了汗水和智慧,期待着相应的回报——合理的工资和公正的晋升机会。然而,现实并不总是如此美好。当你感觉…

康谋分享 | aiSim5基于生成式AI扩大仿真测试范围(终)

在前面的几章节中探讨了aiSim仿真合成数据的置信度,此外在场景重建和测试流程闭环的过程中,难免会面临3D场景制作重建耗时长、成本高、扩展性低以及交通状况复杂程度难以满意等问题,当前的主要挑战在于如何自动化生成3D静态场景并添加动态实例…

深入理解C#中的IO操作 - FileStream流详解与示例

文章目录 一、FileStream类的介绍二、文件读取和写入2.1 文件读取(FileStream.Read)2.2 文件写入(FileStream.Write) 三、文件复制、移动和目录操作3.1 文件复制(FileStream.Copy)3.2 文件移动(…

VMware ESXI 7.0安装部署

1、为什么要虚拟化? 目前,物理服务器存在以下几个问题: 1)硬件资源利用率低; 2)可靠性不足,物理服务器宕机即可造成整体业务停摆; 3)维护量大,无法实现统…

H5228 6.5-75V60V48V36V24V12V 升降压芯片LED恒流驱动IC 支持无频闪数转模调光

H5228 是款调光特性良好的宽范围调光比且无频闪调光的 LED 恒流驱动器。支持降压、 升压和升降压拓扑的应用,具有 6.5~75V 宽输入工作电压范围,采用连续电流模式(CCM) 为高亮度 LED 供电。调光深度可调很低,在低亮负…

计算机缺失ffmpeg.dll如何修复,五种详细的修复教程分享

当你在使用电脑过程中,突然遇到系统或软件弹出提示信息,告知“ffmpeg.dll文件丢失”怎么办?当电脑提示ffmpeg.dll丢失时,可能会导致一些应用程序无法正常运行或出现错误提示。下面我将介绍5种解决电脑提示ffmpeg.dll丢失的方法。 …

【Linux】:进程切换

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux进程切换的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精…

全面了解CC攻击和防范策略

前言 “ CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。” 什么是CC攻击? CC攻击前身是一个名为Fatboy的攻击程序,而之所以后来人们会称之为CC,也叫HTTP-FLOOD&#xff…

浅谈面向对象--多态

接口 接口概述 我们要完成一个工程,需要一个插座 思考1:去市场买个回来!> 市场上有公牛、小米... > 小米和公牛认识吗?什么原因导致公牛和小米的插座我都可以用 接口是一种约定的规范,是多个抽象方法的集合&…

基于网络爬虫技术的网络新闻分析(四)

目录 4.2 系统异常处理 4.2.1 爬虫异常总体概况 4.2.2 爬虫访问网页被拒绝 5 软件测试 5.1 白盒测试 5.1.1 爬虫系统测试结果 5.1.2 中文分词系统测试结果 5.1.3 中文文章相似度匹配系统测试结果 5.1.4 相似新闻趋势展示系统测试结果 5.2 黑盒测试 5.2.1 爬虫系统测…

【每日刷题】Day47

【每日刷题】Day47 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 112. 路径总和 - 力扣(LeetCode) 2. 2404. 出现最频繁的偶数元素 - 力扣&am…

PPT图片高清导出

PPT制作的图片高清导出 适用于windows系统 案例 例如想要导出下面这张图片 1. 保存为emf文件 2. 将emf文件导入画图软件 导入方法直接将emf文件拖进去就行,可以看到图片成功高清显示(可以通过放缩检查是否模糊)。 3. 修改分辨率 点击上方…

Redis协议的请求和响应有哪些“套路”可循?no.18

Redis 协议 Redis 支持 8 种核心数据结构,每种数据结构都有一系列的操作指令,除此之外,Redis 还有事务、集群、发布订阅、脚本等一系列相关的指令。为了方便以一种统一的风格和原则来设计和使用这些指令,Redis 设计了 RESP&#…

适用于Windows 电脑的最佳视频恢复软件和方法

毫无疑问,丢失您的基本数据总是有压力的,尤其是当这些是您为捕捉最美好回忆而收集的重要视频文件时。要恢复丢失或损坏的视频文件,您可以借助视频恢复工具。但是,在选择最佳视频恢复工具时,您必须考虑多个扫描选项&…