MYSQL-6-函数与约束-3/17

一、函数

指一段可以直接被另一端程序调用的程序和代码

1.字符串函数

sql 复制代码
-- 1.字符串拼接
select concat('hello',',','mysql');

-- 2.将字符串全部转为小写
select lower('Hello MySQL');
-- 3.转为大写
select upper('hello,MySQL');

-- 4.左填充 将字符串pad 对str 的左边进行填充直到达到n的字符串长度
-- select lpad(str,n,pad)
select lpad('1',5,'-');
-- 5.右填充
select rpad('1',5,'-');

-- 6.去除字符串头部和尾部的空格
select trim(' Hello MySQL ');

-- 7.返回从字符串str 从start 位置起的len个长度的字符串
-- substring(str,start,len)
-- 第一个字符为索引1
select substring('Hello MySQL',1,6)

2.数值函数

sql 复制代码
-- 二、数值函数
-- 1.cell(x) 向上取整
select ceil(122.5);

-- 2.floor 向下取整
select floor(122.5);

-- 3.mod(x,y) 返回x/y 的模
select mod(12,5);

-- 4.rand() 返回0~1的随机数
select rand();

-- 5.round(x,y) 求参数x的四舍五入的值 保留y 位小数
select round(12.225,2);

-- 练习 求随机六位数验证码
select lpad((round(rand(),6)*1000000),6,0);

3.日期函数

sql 复制代码
-- 三、日期函数
-- 1.curdate() 返回当前日期
select curdate();
-- 2.curtime() 返回当前时间
select curtime();
-- 3.now() 返回 当前日期 + 时间
select now();

-- 4.year(date) 获取指定date 年份
select year('2025-1-15');
-- 5.mouth(date)
-- 6.day(date)

-- 7.date_add(date,interval expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
select date_add('2025-1-15',interval 70 day); -- 2025-1-15往后退七十天

-- 8.datediff(date1,date2) 返回起始时间与结束时间date2之间的天数 (date1 - date2)
select datediff(now(),'2025-1-15');
select datediff(now(),'2006-10-14');

4.流程函数

sql 复制代码
-- 三、流程函数
-- 1.if(value,t,f) 如果value为true 则返回t,否则返回f
select if(2,'ok','error');

-- 2.ifnull(value1,value2) 如果value1不为空则返回value1 否则返回value2
select ifnull('ok','error');

-- 3.case when [val1] then [res1] ... else [default] end
-- 如果val1为true 则返回res1, ... 否则返回default默认值
select
    id,
    name,
    (case employee.workno when 1 then 'No1' when 2 then 'No2' else 'hide' end) as '序号',
    case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end
from employee;

-- 4.case [expr] when [val1] then [res1] ... else [default] end
-- 如果 expr 的值等于val1 ,则返回res1,...否则返回default默认值

二、约束

作用于表中字段上的规则,用于限制存储在表中的数据

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

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 '用户名';
-- primary key    : 主键约束(非空 且 唯一)
-- auto_increment : 自动增长
-- not null       : 非空约束
-- check ()       : 检查约束
-- default ' '    : 默认约束 '默认值'

-- 插入数据
insert into user(name,age,status,gender) values ('Tom1','19','1','男'),('Tom2','21','1','女')

-- 注意 插入name 时候如果失败也会自动增长id?

2.学会用DataGrip 自动生成约束

3.外键约束

sql 复制代码
-- 添加外键
alter table emp add constraint fl_emp_dept_id foregin key (dept_id) references dept(id);

--删除外键
alter table emp drop foregin key fk_emp_dept_id;


相关推荐
东方护航数据恢复(深圳)几秒前
RAID5单盘故障后阵列状态分析与重建风险评估_东方护航数据恢复深圳店
大数据·数据库
会编程的土豆25 分钟前
GORM 常见操作从入门到能写 DAO
数据库·gorm
只会cv的小前端1 小时前
七巧低代码服务端脚本使用方法
android·低代码·rxjava
1 小时前
Android 自定义 View 实战:从零打造工业级全向摇杆控件(OmniJoystickView)
android·kotlin·自定义view·摇杆控件
A15362551 小时前
2026 电商物流系统推荐:多渠道仓配履约数字化选型指南
大数据·数据库·人工智能
雨白1 小时前
深入理解 Kotlin 协程 (十一):以逸待劳,探秘 select 多路复用与并发安全策略
android·kotlin
tianyu2341 小时前
MySQL字符串处理函数完全指南:从入门到实战
mysql·字符串·函数·截取
天空之外1361 小时前
Docker安装MySQL 8.4 LTS、Docker安装Redis 7.4.x、Docker安装MinIO
java·mysql·docker
ClouGence2 小时前
CloudDM:开源免费!一站式数据库访问、SQL审核、权限与脱敏管控平台
数据库·sql·开源
(轻舟已过万重山)3 小时前
第39章 评估迭代:上线只是开始,迭代才是关键
大数据·数据库·人工智能