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

目录

 一、函数

1.1 字符串函数

 1.1.1 concat函数

 1.1.2 lower函数

1.1.3 upper函数 

1.1.4  lpad函数

1.1.5 rpad函数 

1.1.6 trim函数 

1.1.7  substring函数

1.2  数值函数

1.2.1  ceil函数

1.2.2 floor函数

1.2.3  mod函数

1.2.4  rand函数

1.2.5 round函数

 1.3 日期函数 

1.3.1  curtime函数

1.3.2  now函数 

1.3.3  year,month,day函数

1.3.3 date_add函数

1.3.4 datediff函数

1.4 流程函数 

1.4.1  if函数

1.4.2  ifnull函数

1.4.3 case when then else end 函数

二、约束 

2.1 非空约束

2.2 唯一约束

2.3 主键约束 

2.4 默认约束 

2.5 检查约束

2.6 外键约束

2.6.1 准备条件 

2.6.2 建立外键关联

2.6.3 删除外链链接


前言

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;

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

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aitee

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值