【学习笔记分享】MySQL数据库基础篇(中)函数、约束看这里就够了~

MySQL数据库学习笔记分享,持续更新~敬请关注~

希望对正在学习MySQL数据库的小伙伴有帮助,如有不当之处,请予指正~

目录

函数

定义:

字符串函数

数值函数

日期函数

流程函数

约束

概述

分类(包括非空、唯一、主键、默认、检查约束演示)

外键约束 

函数

定义:

函数是指一般可以直接被另一段程序调用的程序或代码。

字符串函数

常用字符串函数:

函数作用
CONCAT(S1,S2,...Sn)字符串拼接,将S1~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个长度的字符串

 

--CONCAT(S1,S2...Sn);
SELECT CONCAT('D','e','mo');
--LOWER(str)
SELECT LOWER('Demo');
--LPAD(str,n,pad)
SELECT LPAD('000',6,'*');
--TRIM(str)
SELECT TRIM(' Hello KuGou ');
--SUBSTRING(str,start,len);
SELECT SUBSTRING('Hello',1,2);--注意:索引值从1开始

数值函数

常用数值函数:

函数作用
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)

返回x%y

RAND()返回0~1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数
--CEIL(x);
SELECT CEIL(0.8);
--FLOOR(x);
SELECT FLOOR(1.2);
--MOD(x);
SELECT MOD(5,2);
--RAND();
SELECT RAND();--0~1之间的随机数
--ROUND(x,y);
SELECT ROUND(1.23,1);

日期函数

常用日期函数:

函数作用
CURDATE()返回当前时间
CURTIME()返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定date的年份
MONTH(date)获取指定date的月份
DAY(date)获取指定date的日期
DATE_ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数

注意:DATEDIFF(date1,date2);计算方式为date1-date2,计算时间间隔时,应该更早的时间在后,否则返回值为负数; 

--CURDATE();
SELECT CURDATE();
--CURTIME();
SELECT CURTIME();
--NOW();
SELECT NOW();
--YEAR(date);
SELECT YEAR(NOW());--查看当前时间对应的年份
--DATE_ADD(date,INTERVAL expr type);
--expr是一个变量;type是时间单位,如DAY,MONTH,YEAR
SELECT DATE_ADD(N0W(),INTERVAL 30 DAY);
--DATEDIFF(date1,date2);
SELECT DATEDIFF('2022-12-07','2022-12-01');

流程函数

常用流程函数

函数作用
IF(value,t,f)如果value为true,返回t,否则返回f
IFNULL(value1,value2)如果value不为空,返回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默认值
--IF(value,t,f);
SELECT IF(true,'yes','no');
--IFNULL(value1,value2);
SELECT IFNULL('yes','default');
SELECT IFNULL(null,'default');
--CASE WHEN [val1] THEN [res1]...ELSE [default] END;
SELECT name,(CASE WHEN age < 18 THEN '未成年' ELSE '已成年' END) AS '是否成年' FROM test;
--CASE [expr] WHEN [val1] THEN [res1]...ELSE [default] END
SELECT name,(CASE age WHEN 13 THEN '小' WHEN 14 THEN '小' ELSE '大' END) AS '体格' FROM test; 

约束

概述

概念:约束是作用于表字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确性,有效性和完整性。

分类

约束描述关键字
非空约束限制该字段的数据不能为nullNOT NULL
唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE
主键约束主键是一行数据的唯一标识、要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
检查约束(8.0.16版本之后)保证字段满足某一个条件CHECK
外键约束用来让两张表的数据之间建立联系,保证数据的一致性和完整性FOREIGN KEY
CREATE TABLE student(
    --主键约束自动增长(插入数据时不填写此项,表中id自动增长)
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    --非空约束、唯一约束
    name VARVHAR(12) NOT NULL UNIQUE COMMENT '姓名',
    --检查约束
    age INT CHECK (age > 0 && age <= 130) COMMENT '年龄',
    --默认约束
    gender CHAR(1) DEFAULT '1' COMMENT '性别'
);

注意:当插入数据时如果主键id的数值不是连续增长,则有可能是插入数据时数据不符合约束,但主键已经被申请。

外键约束 

概念:外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

子表:拥有外键的表。

父表:外键所关联的表。

语法:

添加外键

--方式一:创建表时
--CREATE TABLE 表名(
--    字段名 数据类型,
--    ...
--    [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
--);

--方式二:表创建完成之后
--ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);
ALTER TABLE stu ADD CONSTRAINT fk_stu_group_id FOREIGN KEY(group_id) REFERENCES group(id);

 删除外键

--ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
ALTER TABLE stu DROP FOREIGN KEY fk_stu_group_id;

删除/更新行为

行为说明
NO ACTION当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。
RESTRICT当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。
CASCADE当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SET NULL当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这样要求外键允许取null)
SET DEFAULT父表有变化时,子表将外键列设置成一个默认的值(lnnodb不支持)
--ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE stu ADD CONSTRAINT fk_stu_group_id FOREIGN KEY(group_id) REFERENCES group(id) ON UPDATE CASCADE ON DELETE CASCADE;

MySQL数据库基础篇(中)到这里就结束了,制作不易,全文手敲,希望看到的小伙伴,你们能够喜欢~ 

下期预告:MySQL数据库基础知识(下)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是只菜鸟呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值