MySQL函数和约束

news2024/11/30 0:48:08

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约束

​概念:约束是做作用于表中字段上的规则,用于限制存储表中的数据           
目的​:保证数据库中数据的正确性,有效性和完整性​。
分类
在这里插入图片描述

案例

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 主表 (主表列名) ;

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S容器OOM killed排查

背景 数据服务平台南海容器k8s设置的内存上限2GB,多次容器被OOM killed。 启动命令 java -XX:MaxRAMPercentage70.0 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/apps/logs/ ***.jar排查过程 1 当收到实例内存超过95%告警时,把jvm进程堆dump下…

kotlin 转 Java

今天突然想研究下有些kotlin文件转为Java到底长什么样,好方便优化kotlin代码,搞了半天发现一个非常简单的Android Studio或者Intellij idea官方插件Kotlin,Kotlin是插件的名字,真是醉了; 这里以AS为例,使用…

git在windows上安装

介绍git工具在windows上如何安装 git官网下载地址 1.1、下载 https://github.com/git-for-windows/git/releases/download/v2.36.0.windows.1/Git-2.36.0-64-bit.exe自行选择版本,这里我选择的是 Git-2.36.0-64-bit这个版本 1.2、安装 安装路径选择英文且不带空格…

九、适配器模式

一、什么是适配器模式 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式(Adapter)包含以下主要角色&…

OpenVPN服务器

目录 一、OpenVPN是什么? 二、OpenVPN连接建立的过程 三、数据包远程传输处理过程(自我理解) 四、OpenVPN实验案例 4.1生成OpenVPN所需证书文件 4.2配置OpenVPN服务器 4.3配置OpenVPN客户端 4.4在远程客户端windows 10上进行测试 一、OpenVPN…

HTML5之drawImage函数

参数说明: drawImage(image, x, y) //按原图片大小绘制。 drawImage(image, x, y, width, height) //按指定大小绘制。 drawImage(image, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight) //常用于图片裁剪。 其中&#xff1a…

实战:基于卷积的MNIST手写体分类

前面实现了基于多层感知机的MNIST手写体识别,本章将实现以卷积神经网络完成的MNIST手写体识别。 1. 数据的准备 在本例中,依旧使用MNIST数据集,对这个数据集的数据和标签介绍,前面的章节已详细说明过了,相对于前面章…

对比Flink、Storm、Spark Streaming 的反压机制

分析&回答 Flink 反压机制 Flink 如何处理反压? Storm 反压机制 Storm反压机制 Storm 在每一个 Bolt 都会有一个监测反压的线程(Backpressure Thread),这个线程一但检测到 Bolt 里的接收队列(recv queue)出现了…

C++笔记之临时变量与临时对象与匿名对象

C笔记之临时变量与临时对象与匿名对象 code review! 文章目录 C笔记之临时变量与临时对象与匿名对象1.C中的临时变量指的是什么?2.C中的临时对象指的是什么?3.C中临时对象的作用是什么?什么时候要用到临时对象?4.给我列举具体的例子说明临…

idm下载视频

idm下载视频 安装后 地址为: 链接:下载地址 提取码:fgzv 安装后 设置浏览器插件 完成 参考文章

自动驾驶和辅助驾驶系统的概念性架构(二)

摘要: 本篇为第二部分主要介绍底层计算单元、示例工作负载 前言 本文档参考自动驾驶计算联盟(Autonomous Vehicle Computing Consortium)关于自动驾驶和辅助驾驶计算系统的概念系统架构。该架构旨在与SAE L1-L5级别的自动驾驶保持一致。本文主要介绍包括功能模块图…

自从学了C++之后,小雅兰就有对象了!!!(类与对象)(下)——“C++”

各位CSDN的uu们好呀,好久没有更新啦,今天继续类和对象的内容,下面,让我们进入西嘎嘎类和对象的世界吧!!! 1. 再谈构造函数 2. Static成员 3. 友元 4. 内部类 5.匿名对象 6.拷贝对象时的一些…

设计模式的使用——模板方法模式+动态代理模式

一、需求介绍 现有自己写的的一套审批流程逻辑,由于代码重构,需要把以前的很多业务加上审批的功能,再执行完审批与原有业务之后,生成一个任务,然后再统一处理一个任务(本来是通过数据库作业去处理的&#x…

pandas数据分析之数据绘图

一图胜千言,将信息可视化(绘图)是数据分析中最重要的工作之一。它除了让人们对数据更加直观以外,还可以帮助我们找出异常值、必要的数据转换、得出有关模型的想法等等。pandas 在数据分析、数据可视化方面有着较为广泛的应用。本文…

C# 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

C# 在调用Cdll时,可能会出现 :试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)这个错误。 一般情况下是C#目标平台跟Cdll不兼容,64位跟32位兼容性问题, a.客户端调用Cdll报的错则, 1)允许的话把C#客户端…

SQL-basics

SQL 一些常用的查询语句用法 SQL 中的聚合函数 SQL 中的子查询 SQL 使用实例 SELECT F_NAME , L_NAME FROM EMPLOYEES WHERE ADDRESS LIKE ‘%Elgin,IL%’; SELECT F_NAME , L_NAME FROM EMPLOYEES WHERE B_DATE LIKE ‘197%’; SELECT * FROM EMPLOYEES WHERE (SALARY BET…

总结974

今日共计学习12h,日计划完成90%.今晚又把总结时间占用了,明天预留0.5h进行月总结吧,重新制定学习时间表,之前的已经用不了。 跟一个学府的老师聊了聊天,感觉聊完之后,本以为会心情舒畅,没想到反…

ELK安装、部署、调试(五)filebeat的安装与配置

1.介绍 logstash 也可以收集日志,但是数据量大时太消耗系统新能。而filebeat是轻量级的,占用系统资源极少。 Filebeat 由两个主要组件组成:harvester 和 prospector。 采集器 harvester 的主要职责是读取单个文件的内容。读取每个文件&…

同学,您有一张校招绿通卡请查收!

“金三银四”过去,马上“金九银十”了,有实习还没着落的,有在实习但留下成谜的,也有不顾其他只忙秋招的;还有依旧撒网投简历的;以及23 届还在找工作的。 小伙伴们,今年真的好难。 &#xff08…

SQLI-labs-第三关

目录 知识点:单括号)字符get注入 1、判断注入点: 2、判断当前表的字段数 3、判断回显位置 4、爆库名 5、爆表名 6、爆字段名,以users表为例 7、爆值 知识点:单括号)字符get注入 思路: 1、判断注入点&#xff1…