当前位置: 首页 > article >正文

[MySQL--基础]函数、约束

hello! 这里是欧_aita的频道。
今日语录:不管你觉得自己能做什么,或者你觉得你不能做什么,你都是对的。
祝福语:愿你的程序像太阳一样明亮,给世界带来温暖和光明。
大家可以在评论区畅所欲言,可以指出我的错误,在交流中共同进步。
欢迎大家关注我的专栏:

数据结构与算法(内含蓝桥杯训练)

C++

MySQL数据库

 一、函数

1.1 字符串函数

 1.1.1 concat函数

select concat('Hello','MySQL');

这段代码会拼接'Hello'和'MySQL',可以看到是没有空格的。

 1.1.2 lower函数

select lower('HELLO');

 这个函数会将所有大写的字母转换为小写。

1.1.3 upper函数 

 

select upper('Hello');

将整个字符串转换成大写。

1.1.4  lpad函数

select lpad('01',5,'-');

 这个函数是左填充函数,意思是在现在所有的字符串基础上‘01’添加到5个字符。

1.1.5 rpad函数 

select rpad('01',5,'-');

 右填充函数,结合上文。

1.1.6 trim函数 

 

select trim(' Hello MySQL');

去除头部和尾部空格和间隔,但不去除中间的空格。

1.1.7  substring函数

select substring('Hello world',1,5);

 提取字符串,从第一个字符提取至第5个字符。

 

1.2  数值函数

1.2.1  ceil函数

select ceil(1.1);

 向上取整。

1.2.2 floor函数

select floor(1.9);

向下取整。

1.2.3  mod函数

select mod(5,4);

 

1.2.4  rand函数

select rand();

求一个0-1的随机数。

 

1.2.5 round函数

select round(2.347,2);

 后面的数字表示取几位小数,四舍五入取整。

 1.3 日期函数 

1.3.1  curtime函数

select curtime();

 返回当前时间(时-分-秒)。

1.3.2  now函数 

select now();

 返回当前时间(年-月-日-时-分-秒)

1.3.3  year,month,day函数

select YEAR(now());

返回当前年份。

select MONTH(now());

 

 

select DAY(now());

1.3.3 date_add函数

select date_add(now(),INTERVAL 70 MONTH);

 求距离当前时间后一段时间的具体时间,这段代码表示的是70个月后是哪天。

1.3.4 datediff函数

select datediff('2007-04-19','2023-11-28')

求两个时间间的日子。

1.4 流程函数 

1.4.1  if函数

select if(false,'OK','Error');

条件如果是true就返回前一个字符串,否则返回后一个字符串。

1.4.2  ifnull函数

 

select ifnull(null,'Default');

如果为空就返回Default。

1.4.3 case when then else end 函数

 

将北京划为一线城市,将上海划为二线城市。

select
    name,
    case workaddress when '北京' then '一线城市' else '二线城市' end
from emp;

 

二、约束 

2.1 非空约束

 

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 '用户表';

在name行中,not null 表示非空约束,即name不可为空。

2.2 唯一约束

同样的name行中,unique表示唯一,当输入第二个同样的姓名时,会报错,与此同时主键会断开,不着急,等我慢慢讲。

2.3 主键约束 

id行用了一个主键 primary key auto_increment。

insert into user(name,age,status,gender)values('Tom1',19,'1','男'),('Tom2',25,'0','男');

 插入数据时,不用输入id。

此时,id已有,这就是主键的用处。 

2.4 默认约束 

 如图所示。

2.5 检查约束

 age行,使用check()检查年龄大于0小于120岁,如果输入时年龄不在这个范围,就报错。

2.6 外键约束

2.6.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,'财务部'),(4,'销售部'),(5,'总经办');

emp子表的建立 

create table emp(
    id int auto_increment comment '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',
    dept_id int comment '部门ID'
)comment '员工表';
insert into emp(id,name,age,job,salary,entrydate,managerid,dept_id)values
            (1,'金庸',66,'总裁',2000,'2000-01-01',null,5),
            (2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),
            (3,'杨逍',33,'开发',8400,'2000-11-03',2,1),
            (4,'韦一笑',48,'开发',11000,'2002-02-05',2,1),
            (5,'常遇春',43,'开发',10500,'2004-09-07',3,1),
            (6,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1);

 2.6.2 建立外键关联

alter table emp add constraint fk_emp_dept_id foreign key (dept_id)references dept(id);

建立后员工表中的dept_id就可以与父表链接起来了。

 

 

但是要注意的一点就是链接外链会影响效率。 

2.6.3 删除外链链接

 

alter table emp drop foreign key fk_emp_dept_id;

这篇文章就到此结束咯!祝愿你有所收获!


http://www.kler.cn/a/148747.html

相关文章:

  • Serverless架构在实时数据处理中的应用
  • 在esxi8.0中安装黑群晖的过程记录及小问题处理
  • 基于微信小程序的公务员考试学习平台的设计与实现,LW+源码+讲解
  • 【MYSQL】数据库日志 (了解即可)
  • LeetCode题解:5.最长回文子串【Python题解超详细,中心拓展、动态规划、暴力解法】
  • Dockerfile的使用
  • 如何编写自己的python包,并在本地进行使用
  • Python中如何用栈实现队列
  • 1、windows10系统下Qt5.12.0与卸载
  • Unity 关于SpriteRenderer 和正交相机缩放
  • Git 本地服务器搭建 Windows
  • Redis常用操作及应用(二)
  • Nacos2.x配置中心源码分析
  • idea社区版免费下载方式
  • leetCode 100. 相同的树 和 leetCode 101. 对称二叉树 和 110. 平衡二叉树 和 199. 二叉树的右视图
  • 【Kotlin】高阶函数和Lambda
  • GitLab 登录中,LDAP和 Standard 验证有什么区别
  • C++:C++11新特性---右值引用
  • Notion for Mac:打造您的专属多功能办公笔记软件
  • 小狐狸ChatGPT付费创作系统V2.3.4独立版 +WEB端+ H5端最新去弹窗授权
  • 【开题报告】基于uniapp的瑜伽学习交流小程序的设计与实现
  • 近五年—中国十大科技进展(2018年—2022年)
  • Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织
  • 【C++ Primer Plus学习记录】while循环
  • 批量将本地N个英文Html文档进行中文翻译-操作篇
  • 移动应用开发介绍及iOS方向学习路线(HUT移动组版)