MySQL数据库---笔记2
- 一、函数
- 1.1、字符串函数
- 1.2、数值函数
- 1.3、日期函数
- 1.4、流程函数
- 二、约束
- 2.1、概述
- 2.2、演示
- 2.3、外键约束
一、函数
函数 是指一段可以直接被另一段程序调用的程序或代码。
1.1、字符串函数
| 函数 | 功能 |
|---|---|
| CONCAT(S1,S2,…Sn) | 字符串拼接,将S1,S2,…Sn拼接成一个字符串 |
| LOWER(str) | 将字符串str全部转为小写 |
| UPPER(str) | 将字符串str全部转为大写 |
| LPAD(str,n,pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
| RPAD(str,n,pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
| TRIM(str) | 去掉字符串头部和尾部的空格 |
| SUBSTRING(str,start,len) | 返回从字符串str从start位置起的len个长度的字符串 |
SELECT 函数(参数)

update emp set worknum = lpad(worknum,5,'0');
1.2、数值函数
| 函数 | 功能 |
|---|---|
| CEIL(x) | 向上取整 |
| FLOOR(x) | 向下取整 |
| MOD(xy) | 返回x/y的模 |
| RAND() | 返回0~1内的随机数 |
| ROUND(x,y) | 求参数x的四舍五入的值,保留y位小数 |
SELECT 函数(参数)

#调用了三次库函数 生成一个六位数的随机数
select lpad(round(rand()*1000000,0),6,'0');
1.3、日期函数
| 函数 | 功能 |
|---|---|
| CURDATE() | 返回当前日期 |
| CURTIME() | 返回当前时间 |
| NOW() | 返回当前日期和时间 |
| YEAR(date) | 获取指定date的年份 |
| MONTH(date) | 获取指定date的月份 |
| DAY(date) | 获取指定date的日期 |
| DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
| DATEDIFF(date1,date2) | 返回起始时间date1 和 结束时间date2之间的天数 |
SELECT 函数(参数)

#查询员工入职天数,并且排列
select username,datediff(curdate(),newDay1_1.entryTime) as 'entrydaytoday' from newday1_1 order by entrydaytoday desc;
1.4、流程函数
流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率
| 函数 | 功能 |
|---|---|
| IF(value , t , f) | 如果value为true,则返回t,否则返回f |
| IFNULL(value1 , value2) | 如果value1不为空,返回value1,否则返回value2 |
| CASE WHEN [ val1 ] THEN [res1] …ELSE [ default ] END | 如果val1为true,返回res1,…否则返回default默认值 |
| CASE [ expr ] WHEN [ val1 ] THEN [res1] …ELSE [ default ] END | 如果expr的值等于val1,返回res1,…否则返回default默认值 |
SELECT 函数(参数)

create table newDay1_2(
id int comment '编号',
name varchar(10) comment '姓名',
chinese int comment '语文',
math int comment '数学',
english int comment '英语'
)comment '成绩表';
select *from newDay1_2;
insert into newDay1_2 values (1,'小王',89,92,89),(2,'小李',91,93,87),(3,'小黄',88,78,90);
select
id,
name,
(case when chinese>=85 then '优秀'when chinese>=60 then '及格' else '不及格' end) '语文',
(case when math>=85 then '优秀'when math>=65 then '及格' else '不及格'end) '数学',
(case when english>=85 then '优秀'when english>=65 then '及格' else '不及格'end) '英语'
from newDay1_2;
二、约束
2.1、概述
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
- 目的:保证数据库中数据的正确、有效性和完整性。
- 分类:
| 约束 | 描述 | 关键字 |
|---|---|---|
| 非空约束 | 限制该字段的数据不能为null | NOT NULL |
| 唯一约束 | 保证该字段的所有数据都是唯一、不重复的 | UNIQUE |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY KEY |
| 默认约束 | 保存数据时,如果未指定该字段的值,则采用默认值 | DEFAULT |
| 检查约束(8.0.16版本之后) | 保证字毅值满足某一个条件 | CHECK |
| 外键约束 | 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 | FOREIGN KEY |
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。
2.2、演示

create table newDay1_3(
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 '状态',
gander char(1) comment '性别'
)comment '用户表';
- 也可以使用图示化工具
2.3、外键约束
- 概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。












![[MRCTF2020]Ez_bypass1](https://img-blog.csdnimg.cn/img_convert/81cf413e9af64e04ade15a8a4323e464.png)







