MySQL函数和约束

MySQL常见函数

字符串常见函数

# concat : 字符串拼接
select concat('Hello' , ' MySQL');
# lower : 全部转小写
SELECT LOWER('Hello');
# upper : 全部转大写
SELECT UPPER('hello');
# lpad : 左填充
SELECT LPAD('hello',10,'0');
# rpad : 右填充
SELECT RPAD('hello',10,'0');
# trim : 去除空格
SELECT trim(' word ');
# substring : 截取子字符串
SELECT SUBSTR('hello word',1,5);

数值常见函数

# ceil:向上取整
SELECT CEIL(3.14);
# floor:向下取整
SELECT FLOOR(3.14);
# mod:取模
SELECT MOD(4,3);
# rand:获取随机数
SELECT RAND();
# round:四舍五入
SELECT ROUND(4.565,2);

日期常见函数

# curdate:当前日期
 select curdate();
# curtime:当前时间
select curtime();
# now:当前日期和时间
select now();
# YEAR , MONTH , DAY:当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());
# date_add:增加指定的时间间隔
SELECT DATE_ADD(NOW(),INTERVAL 30 DAY);
# datediff:获取两个日期相差的天数
SELECT DATEDIFF('2023-08-30','2022-08-03');

流程常见函数

select if(false, 'Ok', 'Error');select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');# 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
# 方式1
SELECT 
`name`,
workaddress,CASE workaddress
  WHEN '上海' THEN
    '一线城市'
  WHEN '北京' THEN
    '一线城市'
  ELSE
    '二线城市'
END AS addres
FROM emp;# 方式2
SELECT 
`name`,
workaddress,
IF(workaddress = '北京' OR workaddress = '上海','一线城市','二线城市') address
FROM emp;


MySQL约束

​概念:约束是做作用于表中字段上的规则,用于限制存储表中的数据           
目的​:保证数据库中数据的正确性,有效性和完整性​。
分类
MySQL函数和约束_第1张图片

案例

CREATE TABLE `tb_blog` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `shop_id` bigint NOT NULL COMMENT '商户id',
  `user_id` bigint unsigned NOT NULL COMMENT '用户id',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
  `images` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '探店的照片,最多9张,多张以","隔开',
  `content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '探店的文字描述',
  `liked` int unsigned DEFAULT '0' COMMENT '点赞数量',
  `comments` int unsigned DEFAULT NULL COMMENT '评论数量',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT
​

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

# 创建表时添加外键
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);
# 为表添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)
REFERENCES 主表 (主表列名) ;

删除/更新行为(级联行为)

注:开发中一般不推荐使用外键约束,外键约束在高并发和大数据实践中会带来很多性能问题,甚至会产生死锁问题​。而且对于开发者来说,外键的级联操作也会给开发者带来极大的不便。但是会保留外键逻辑​

你可能感兴趣的:(mysql,数据库)