mysq用户自定义完整性之 添加检查约束。

本文介绍如何使用MySQL中的ENUM数据类型来实现列值的有效性约束。通过一个具体的例子展示了如何创建一个只允许特定性别值('F' 或 'M')的字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“检查约束”是关系型数据库中用户自定义完整性的一种,mysql可以通过enum来约束列的取值范围,如下:

创建了一个数据库test,要在test数据库里创建表ttt:

use test;
create table ttt(
	id int auto_increment primary key,
	sex enum('F', 'M'),
	name varchar(20) not null
);

这个时候如果你插入一行数据,sex不为F或者M,则插入失败!

### MySQL 自定义函数的创建与使用 #### 创建自定义函数 在 MySQL 中,可以通过 `CREATE FUNCTION` 语句来创建用户自定义函数。以下是详细的说明: 1. **设置结束符** 默认情况下,MySQL 的语句结束符为分号 (`;`)。如果函数体内有多条 SQL 语句,则需要临时更改结束符以避免解析错误。通常会将结束符更改为双美元符号 (`$$`) 或其他字符组合[^1]。 ```sql DELIMITER $$ ``` 2. **定义函数结构** 函数的基本语法如下所示[^2]: ```sql CREATE FUNCTION function_name ( parameter1 datatype, parameter2 datatype, ... ) RETURNS return_datatype [DETERMINISTIC | NOT DETERMINISTIC] BEGIN -- 函数逻辑代码 RETURN result_value; END$$ ``` - `function_name`: 函数名称。 - 参数列表:可以有零个或多个输入参数,每个参数由名称和数据类型组成。 - `RETURNS`: 定义函数返回的数据类型。 - `[DETERMINISTIC | NOT DETERMINISTIC]`: 表明该函数是否每次对于相同的输入都会产生相同的结果。默认是非确定性的(`NOT DETERMINISTIC`)。 3. **编写函数体** 如果函数体包含多条语句,则需要用 `BEGIN...END` 将它们包裹起来[^3]。例如: ```sql CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED) RETURNS INT BEGIN DELETE FROM son WHERE id = uid; RETURN (SELECT COUNT(*) FROM son); END$$ ``` 4. **恢复默认结束符** 在完成函数定义后,需将结束符恢复为分号以便后续正常操作。 ```sql DELIMITER ; ``` #### 使用自定义函数 一旦创建好函数,就可以像使用内置函数一样调用它。调用方式如下: ```sql SELECT function_name(arguments); ``` 例如,假设我们有一个名为 `get_rate` 的函数用于获取某日期下某种货币的汇率[^5]: ```sql SELECT get_rate('2023-11-11', 'USD') AS exchange_rate; ``` 此查询将会返回指定日期 `'2023-11-11'` 和货币种类 `'USD'` 对应的汇率值。 #### 条件判断的应用 在某些场景中可能需要用到条件分支处理逻辑,在这种情况下可以利用 `IF` 或者 `CASE` 语句来进行控制流管理[^4]。下面是一个简单的例子展示如何基于不同的输入提供相应的输出: ```sql DELIMITER $$ CREATE FUNCTION greet(name VARCHAR(50)) RETURNS VARCHAR(60) BEGIN DECLARE greeting_message VARCHAR(60); IF name IS NULL THEN SET greeting_message = 'Hello, Guest!'; ELSE SET greeting_message = CONCAT('Hello, ', name, '!'); END IF; RETURN greeting_message; END$$ DELIMITER ; ``` 在这个例子中,当传入的名字为空时,默认问候消息将是 `"Hello, Guest!"`;否则则根据实际名字构建个性化的欢迎词。 --- ### 示例总结 上述内容涵盖了从基本概念到具体实践的过程,包括但不限于设定合适的定界符、正确书写函数主体部分以及灵活运用各种SQL特性如条件表达式等知识点。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值