一、函数
- 字符串函数
select concat('hello','mysql')
-- lower
select lower('HEELO')
-- upper
select upper('hello')
-- lpad
select lpad('11',5,'-')
-- rpad
select rpad('11',5,'-')
-- trim
select trim(' hello world ')
-- substring
select substring('hello',1,3)
-- 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001
update employee set workno = lpad(workno,5,'0')
- 数值函数
-- ceil
select ceil(1.1) -- 结果为2
-- floor
select floor(1.8) -- 结果为1
-- mod
select mod(3,4) -- 结果为3
-- rand
select rand() -- 结果为0-1的随机数
-- round
select round(3.456,2) -- 结果为3.46
--案例:要求随机生成一个六位数验证码
select round(rand()*1000000,0) -- 这行代码概率生成6位数代码,因为rand生成的是0-1之间的随机小数,那就有可能生成0.01或者0.001开头的小数
select lpad(round(rand()*1000000,0),6,'0') --这样就可以生成一个6位数的随机验证码了
- 日期函数
-- date_add()
select date_add(now(),INTERVAL 70 day )-- 返回起始日时间加上70天后的时间
select date_add(now(),INTERVAL 7 month)-- 返回起始日时间加上7个月后的时间
-- datediff(date1,date2)
select datediff('2021-12-01','2021-10-01')-- 返回2021-12-01和2021-10-01之间的天数
-- 查询所有员工的入职天数,并根据入职天数倒序排序
select name ,datediff(curdate(),entrydate) '入职时间' from employee order by 入职时间 desc
- 流程函数
-- case when[] then[] else[] end
select name ,(case when age>60 then '及格' else '不合格' end) '年龄'
from employee
-- case []when [] then [] else [] end
-- 需求:查询emp表的员工姓名和工作地址(北京/上海---->一线城市 ,其他------> 二线城市)
select
name,
( case workaddress when '北京' then '一线城市' when '上海' then '一线城市'
else '二线城市' end) '工作地址'
from employee;
二、约束
下面为新建一个约束表的例子
create table user(
id int primary key auto_increment comment'主键',
name varchar(10) not null unique comment '姓名',-- 这里当插入的表项,姓名重复,则姓名重复插入的语句不生效,但是主键值却会增加1,
age int check ( age>0 and age <=120 ) ,
status char(1) default '1' comment '状态',
gender char(1) comment '性别'
)comment '用户表';
外键约束
alter table emp add constraint fk_emp_dept_id foreign key (dept_id)references dept(id);
暂时先更新到这里吧