目录
一、函数
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数据库
select concat('Hello','MySQL');
这段代码会拼接'Hello'和'MySQL',可以看到是没有空格的。
select lower('HELLO');
这个函数会将所有大写的字母转换为小写。
select upper('Hello');
将整个字符串转换成大写。
select lpad('01',5,'-');
这个函数是左填充函数,意思是在现在所有的字符串基础上‘01’添加到5个字符。
select rpad('01',5,'-');
右填充函数,结合上文。
select trim(' Hello MySQL');
去除头部和尾部空格和间隔,但不去除中间的空格。
select substring('Hello world',1,5);
提取字符串,从第一个字符提取至第5个字符。
select ceil(1.1);
向上取整。
select floor(1.9);
向下取整。
select mod(5,4);
select rand();
求一个0-1的随机数。
select round(2.347,2);
后面的数字表示取几位小数,四舍五入取整。
select curtime();
返回当前时间(时-分-秒)。
select now();
返回当前时间(年-月-日-时-分-秒)
select YEAR(now());
返回当前年份。
select MONTH(now());
select DAY(now());
select date_add(now(),INTERVAL 70 MONTH);
求距离当前时间后一段时间的具体时间,这段代码表示的是70个月后是哪天。
select datediff('2007-04-19','2023-11-28')
求两个时间间的日子。
select if(false,'OK','Error');
条件如果是true就返回前一个字符串,否则返回后一个字符串。
select ifnull(null,'Default');
如果为空就返回Default。
将北京划为一线城市,将上海划为二线城市。
select
name,
case workaddress when '北京' then '一线城市' else '二线城市' end
from emp;
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不可为空。
同样的name行中,unique表示唯一,当输入第二个同样的姓名时,会报错,与此同时主键会断开,不着急,等我慢慢讲。
id行用了一个主键 primary key auto_increment。
insert into user(name,age,status,gender)values('Tom1',19,'1','男'),('Tom2',25,'0','男');
插入数据时,不用输入id。
此时,id已有,这就是主键的用处。
如图所示。
age行,使用check()检查年龄大于0小于120岁,如果输入时年龄不在这个范围,就报错。
建立父表
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);
alter table emp add constraint fk_emp_dept_id foreign key (dept_id)references dept(id);
建立后员工表中的dept_id就可以与父表链接起来了。
但是要注意的一点就是链接外链会影响效率。
alter table emp drop foreign key fk_emp_dept_id;
这篇文章就到此结束咯!祝愿你有所收获!