[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;
这篇文章就到此结束咯!祝愿你有所收获!