前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL数据库】详细讲解MySQL的函数和约束作用

【MySQL数据库】详细讲解MySQL的函数和约束作用

原创
作者头像
用户10753035
发布2023-09-13 23:38:10
1710
发布2023-09-13 23:38:10
举报
文章被收录于专栏:从删库到跑路

🍔函数

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

⭐字符串函数

🎈字符串拼接函数

代码语言:javascript
复制
concat('s1','s2');

🎈把字符串全部变为小写

代码语言:javascript
复制
select lower('str');

🎈把字符串全部变为大写

代码语言:javascript
复制
select upper('str');

🎈字符串左填充

代码语言:javascript
复制
select lpad('str',length,'-');
 -- 在str左边用-进行填充,达到长度为n

🎈字符串右填充

代码语言:javascript
复制
select rpad('str',length,'-');
 -- 在str右边用-进行填充,达到长度为n

🎈去掉字符串头部和尾部的空格

代码语言:javascript
复制
select trim('str');

🎈字符串截取

代码语言:javascript
复制
select substring('str',截取起始位置,截取长度);

🏀应用

由于业务需求变化,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0 (比如1好员工的工号应该是00001)

代码语言:javascript
复制
update emp set worknumber = lpad(worknumber,5,'0');
 --            更新的字段(工号)

⭐数值函数

🎈向上取整

代码语言:javascript
复制
select ceil(number);

🎈向下取整

代码语言:javascript
复制
select floor(number);

🎈返回x/y的模

代码语言:javascript
复制
select mod(num1,num2);

🎈求随机数

是0~1之间的随机数

代码语言:javascript
复制
select rand();

🎈四舍五入,并且保留n位小数

对number进行四舍五入,并且保留length位小数

代码语言:javascript
复制
select round(number,length);

🏀应用

通过数据库的函数,生成一个六位数的随机验证码

代码语言:javascript
复制
select lpad(round()*1000000,0),6,'0');

⭐日期函数

🎈返回当前日期

代码语言:javascript
复制
select curdate();

🎈返回当前时间

代码语言:javascript
复制
select curtime();

🎈返回当前日期+时间

代码语言:javascript
复制
select now();

🎈获取指定date的年份

代码语言:javascript
复制
select YEAR(date);

🎈获取指定date的月

代码语言:javascript
复制
select MONTH(date);

🎈获取指定date的天

代码语言:javascript
复制
select DAY(date);

🎈返回一个时间,是date向后推迟number个DAY(或MONTH,YEAR)

代码语言:javascript
复制
select date_add(now(),INTERVAL 70 MONTH);

🎈两个指定时间中相差的天数

代码语言:javascript
复制
select datediff('2021-12-01','2022-12-01');

🏀应用

查询所有员工的入职天数,并根据入职天数倒序排序

代码语言:javascript
复制
select name datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc;

解释:entrydays是函数的别名,这样子就不用写一串函数了,order by 后面的是排序方式

⭐流程控制函数

🎈进行判断

如果条件表达式的结果是true,那么返回OK,否则返回Error

代码语言:javascript
复制
select if(条件表达式,'OK','Error');

🎈如果第一个值为null,那么返回第二个值,否则返回第一个值

代码语言:javascript
复制
select ifnull('OK','Default');

🎈case语句

代码语言:javascript
复制
select 
     name,
     ( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end )
 
 from emp;

🍔约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据 目的:保证数据库中数据的正确,有效性和完整性 分类:

🎈主键约束

主键约束(Primary Key Constraint):主键约束用于定义一个唯一标识来标识表中的每一行。它要求主键列的值唯一且非空。主键可以由一个或多个列组成。

"column"是指表中的一个字段,"datatype"是数据类型

代码语言:javascript
复制
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    primary key (column1, column2, ...)
);

🎈唯一约束

唯一约束(Unique Constraint):唯一约束用于确保表中的某个列或一组列的值是唯一的。唯一约束允许空值(NULL),但对于非空值,要求其在列中是唯一的。

"column"是指表中的一个字段,"datatype"是数据类型

代码语言:javascript
复制
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    unique (column1, column2, ...)
);

🎈外键约束

外键约束(Foreign Key Constraint):外键约束用于建立表与表之间的关联关系。用来让两张表之间建立连接,从而保证数据的一致性和完整性

"column"是指表中的一个字段,"datatype"是数据类型

🏀添加外键

情况1:表结构没有创建好(直接在表里面进行添加)

代码语言:javascript
复制
CREATE TABLE table_name2 (
    column1 datatype primary key,
    column2 datatype,
    ...
    foreign key (column2) references table_name1(column1)
);

情况2:表结构创建好了

代码语言:javascript
复制
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名) ;
🏀删除外键
代码语言:javascript
复制
alter table 表名 drop foreign key 外键名称;

🎈检测约束

检查约束(Check Constraint):检查约束用于限制列中的值必须满足指定的条件。可以使用逻辑运算符、比较运算符和函数等来定义检查约束条件。

"column"是指表中的一个字段,"datatype"是数据类型

代码语言:javascript
复制
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype check (condition),
    ...
);

🎈非空约束

非空约束(Not Null Constraint):非空约束用于确保表中的某个列不接受空值(NULL)。

"column"是指表中的一个字段,"datatype"是数据类型

代码语言:javascript
复制
CREATE TABLE table_name (
    column1 datatype not null,
    column2 datatype,
    ...
);
🏀样例
代码语言:javascript
复制
create table user(
     id int primary key auto_increment comment '主键',
     name varchar(10) not null unique comment '姓名',
     age int check ( age > 0 && age < 30 ) comment '年龄',
     status char(1) default '1' comment '状态',
     gender char(1) comment '性别'
 ) comment '用户表';

插入数据

代码语言:javascript
复制
insert into user(name,age,status,gender) values ('Tom1','19','1','男'),('Tom2','25','0','男');

⭐总结

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰

我正在参与 腾讯云开发者社区数据库专题有奖征文

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🍔函数
    • ⭐字符串函数
      • 🎈字符串拼接函数
      • 🎈把字符串全部变为小写
      • 🎈把字符串全部变为大写
      • 🎈字符串左填充
      • 🎈字符串右填充
      • 🎈去掉字符串头部和尾部的空格
      • 🎈字符串截取
    • ⭐数值函数
      • 🎈向上取整
      • 🎈向下取整
      • 🎈返回x/y的模
      • 🎈求随机数
      • 🎈四舍五入,并且保留n位小数
    • ⭐日期函数
      • 🎈返回当前日期
      • 🎈返回当前时间
      • 🎈返回当前日期+时间
      • 🎈获取指定date的年份
      • 🎈获取指定date的月
      • 🎈获取指定date的天
      • 🎈返回一个时间,是date向后推迟number个DAY(或MONTH,YEAR)
      • 🎈两个指定时间中相差的天数
    • ⭐流程控制函数
      • 🎈进行判断
      • 🎈如果第一个值为null,那么返回第二个值,否则返回第一个值
      • 🎈case语句
      • 🎈主键约束
      • 🎈唯一约束
      • 🎈外键约束
      • 🎈检测约束
      • 🎈非空约束
  • 🍔约束
    • ⭐总结
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档