数据库学习记录8-流程函数

目录

流程函数

约束


流程函数

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

函数功能
IF(value , t , f)如果value为true,则返回t,否则返回 f
IFNULL(value1 , value2)如果value1不为空,返回value1,否则 返回value2
CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果val1为true,返回res1,... 否 则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END如果expr的值等于val1,返回 res1,... 否则返回default默认值

演示如下:

A. if

# 返回error
select if(false, 'Ok', 'Error');

B. ifNull

# 返回为ok
SELECT IFNULL('ok','default');
# 返回为''
SELECT IFNULL('','Default');
# 返回为default
SELECT IFNULL(NULL,'Default');

C. case when then else end

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

case [字段]

when xxx then ' '

when xxx then ' '

else '  '

end 

SELECT
    NAME,
    (CASE workaddress 
    WHEN '北京' THEN '一线城市'
    WHEN '上海' THEN '一线城市' 
    ELSE '二项城市' 
    END) AS '工作地点'
FROM emp;

## 相当于 Java 中switch了

case 

when 条件 then xxx

when 条件 then xxx

else xxx 

end

SELECT NAME,
	age,
	(CASE 
	WHEN age > 60 THEN '老年人'
	WHEN age BETWEEN 40 AND 60 THEN '中年人'
	ELSE '年轻人'
	END) AS '年龄'
FROM emp;

MySQL的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景, 思考一下需要用到什么样的函数来实现?

        1). 数据库中,存储的是入职日期,如 2000-01-01,如何快速计算出入职天数呢? --------> 答案: datediff

        2). 数据库中,存储的是学生的分数值,如98、75,如何快速判定分数的等级呢? ----------> 答案: case ... when ...

约束

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

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

约束关键字描述
非空NOT NULL限制该字符不为NULL
唯一约束UNIQUE保证该字段数据唯一,不可重复
默认约束DEFAULT保证数据在未填充时有默认值
主键约束PRIMARY KEY主键是一行数据的唯一标识
检查约束CHECK保证字段值满足某一个条件
外键约束FOREIGN KEY用来让两张表的数据之间建立连接,保证数据的一致 性和完整性

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

 

 对应的建表语句

CREATE TABLE tb_user(
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID唯一标识',
    NAME VARCHAR(20) NOT NULL UNIQUE COMMENT '名字',
    age INT COMMENT '年龄',
    STATUS CHAR(1) DEFAULT '1' COMMENT '状态',
    gender CHAR(1) COMMENT '性别'
);

外键约束

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

添加外键

alter table 表名 add constraint 外键名称 foreign key (外键字段) reference 表名(字段)

删除外键

alter table 表名 drop foreign key 外键名称

删除/更新行为

 具体语法为:

设置更新和删除都是级联(cascade)

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES
主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references
dept(id) on update cascade on delete cascade ;

 其他情况类型-->set null

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兜兜转转m

一毛钱助力博主实现愿望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值