SQL:函数以及约束

目录

介绍

函数

字符串函数

数值函数

日期函数

流程函数

约束

总结


介绍

说到函数我们都不陌生,在C,C++,java等语言中都有库函数,我们在平时也是经常使用,函数就是一段代码,我们既可以自定义实现,又可以使用库里内置的函数;从来更加简洁方便的完成业务;同样的在SQL中也有一些内置函数来供我们使用;

函数

函数:一段可以直接别另一段程序调用的程序或代码;
注意:要看到函数的结果要使用select +函数;

字符串函数

1>字符串拼接(concat)

使用语句

select concat("hello ","mysql");

结果: 

2>转换为小写(lower)

将字符串中的大写字符转换为小写,原本是小写的不变;
使用语句:

select lower("HellO");

结果: 

3>转换为大写(upper)

使用语句:

select upper("hello");

结果: 

4>使用自定义字符左填充(lpad)

这个函数的参数有三个;分别是填充前的字符串,填充后字符串的长度,填充字符;
注意这里的填充字符可以是一个单个字符,也可以是字符串;

如果是单个字符
使用语句:

select lpad("1",5,'0');

结果:

如果是字符串

使用语句:

select lpad("2",6,'01');

这里我设置的长度为6,只有5个位置可以填充,所以这里是01依次填充,直到填完;
结果:

5>使用自定义字符右填充(rpad)

这里需要注意的是有填充是从最右端依次依次向左填充的:
eg:使用语句:

select rpad("2",6,'01');

 结果是201010;

6>去头去尾的空格(trim)

使用语句:

select trim("  Hello , mysql");

结果: 把头部和尾部的空格去掉了;

7>返回指定字符串长度部分(substring)

使用语句:

select substring("abcdefg",1,5);

结果:"abcde";

注意如果没有写len长度的话,就会取起始位置到字符串的末尾;

数值函数

对x向下取整:取小于x的最大整数;
对x向上取整:取大于x的最小整数;
x模y:x/y的余数;

问题:我们如何返回0~10^x之间整数的随机数呢?

我们可以先使用rand生成一个0~1之间的小数,然后乘上10^x,这时候随机数的整数部分是有x位,但是小数部分还需要处理,我们就可以使用round来保留0位小数;这样就得到了0~10^x之间的随机数整数了; 

日期函数

这里的日期是年-月-日,time是时-分-秒,now就是年-月-日-时-分-秒;

流程函数

第一个if(value,t,f)与C语言中的三元表达式(value!=0?t:f;)很相似;后面的根据需求了解即可;

约束

概念:约束是作用于表中字段上的限制,用于限制存储在表中的数据;
目的:保证表中数据的正确性,有效性和完整性; 

 格式:
1.在创建表时,直接写在字段的数据类型后面;
2.在已经创建好的表中的字段中添加约束需要使用关键字alter;具体后面会有;

现在创建一个用户表,并同时加上约束;(一个字段并不是只能有一个约束);

1>主键(primary)和自增(auto_increment)


设置主键后,该字段的数据就要保持完整性(不为空且唯一);这个很好理解,下面来看一下自增性;

现在我向表中插入三个数据,但是我并没有插入id(id的约束是主键自增),虽然我们没有写,但是因为有自增,所以id不为空,而且是唯一的;下面我们来看看表;
自增的作用就是会自动的根据序列递增式的填充;

注意:如果我们插入失败了一个行数据,虽然没有插入成功,但是已经向数据库申请到了空间,下次插入的时候自增约束的字段并不会按照表格中现有的数据挨着填充;
比如:上表中id已经自动填充到3了,如果我插入一行数据失败了,然后我再插入一行数据成功了,那么新插入的一行数据的id就是5,而不是4;

 2>检查(check)

这个比较简单,只需要注意格式就可以了,格式与where的格式相同;

3>外键(foreign key (从表字段) reference (主表)(主表字段))

外键:外键是用来让两张表的数据建立联系,从而保证数据的一致性和完整性; 

以这两张表为例,每个员工都有一个所属的部门,部门都有一个id序号,而我们在填员工的部门id时必须得按照部门表中的id来填,也就是员工表中的dept_id的范围约束在了部门表的id取值中,这样就可以保证每个员工的所属部门都是存在的;

现在创建员工表:

 
在没有使用外键之前,尽管两张表在逻辑上有联系,但是在物理上是没有关系的,也就是说我更改部门表中的id员工表没有任何反应,我在员工表中填一个不存在的一个部门id也不会报错;

1>添加外键

使用语句:

 

外键添加后会在字段前出现一个蓝色的小钥匙标志 ;

2>检验是否两个表建立了联系

现在我删除掉部门表中的id为1的部门,在员工表中有好多行的员工在该部门,删除后如果报错了说明两个表之间建立了联系,如果没有报错说明两个表之阿金仍然没有建立物理上的联系;
我删除执行会出现一条报错语句,说明外键发挥了作用;不可以删除或更新主表数据;因为这样会影响到从表的很多数据都需要改变; 下面我们来说说外键的删除和更新行为;

3>删除和更新行为

1>CASCADE(同步)

如果我把部门表中id为1的数据更改为6,那么员工表中的原来dept_id是1的也会变成6;
如果我如果把部门表中id为1的数据删除,那么员工表中的原来dept_id是1的那一行的数据都会被删除;

2>SET NULL 

如果我把部门表中id为1的数据更改为6或者删除,那么员工表中的原来dept_id是1就会全部变成null;

总结

非空约束:NOT NULL
唯一约束:UNIQUE
主键约束:PRIMARY(自增:AUTO_INCREMENT)
默认约束:DEFAULT
检查约束:CHECK
外键约束:FOREIGN KEY

其中最重要的是主键和外键,他们与其他的使用格式不同;要求更严格;
外键的使用使得表与表之间不再是独立的,为以后的多表操作奠定了基础;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五子棋双人对战项目(4)——匹配模块(解读代码)

目录 一、约定前后端交互接口的参数 1、websocket连接路径 2、构造请求、响应对象 二、用户在线状态管理 三、房间管理 1、房间类: 2、房间管理器: 四、匹配器(Matcher) 1、玩家实力划分 2、加入匹配队列(add) 3、移除…

【C语言指南】数据类型详解(上)——内置类型

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C语言指南》 期待您的关注 目录 引言 1. 整型(Integer Types) 2. 浮点型(Floating-Point …

java发送邮件email实战

1.首先在项目中增加依赖&#xff0c;在pom文件中添加如下坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>2.发邮件工具类如下 package com.example.demo.…

力扣 —— 多数元素 轮转数组

多数元素 题目(简单) 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a; nums [3,2,3] 输…

第24天sql注入(小迪安全学习)

前置知识&#xff08;搭建环境失败&#xff0c;搞不了实验了&#xff0c;学下理论知识吧&#xff09; sql注入 脚本代码在实现代码与数据库进行数据通讯时&#xff08;从数据库中取出相关数据&#xff09;&#xff0c;将定义的SQL语句进行执行查询数据时其中的SQL语句能通过参…

VSOMEIP代码阅读整理(1) - 网卡状态监听

一. 概述 在routing进程所使用的配置文件中&#xff0c;存在如下配置项目&#xff1a;{"unicast" : "192.168.56.101",..."service-discovery" :{"enable" : "true","multicast" : "224.244.224.245",…

Oracle 表空间时间点恢复

已有一个数据库全备&#xff0c;在PDB中恢复被drop掉的表空间 1.新建表空间 create tablespace PITR_TBS datafile /u01/app/oracle/oradata/PRODCDB/PDBPROD2/PITR_TBS01.dbf size 10m; 2.使用RMAN备份. backup as compressed backupset database INCLUDE CURRENT CONTROLFI…

从零开始搭建UVM平台(八)-加入agent

书接上回&#xff1a; 从零开始搭建UVM平台&#xff08;一&#xff09;-只有uvm_driver的验证平台 从零开始搭建UVM平台&#xff08;二&#xff09;-加入factory机制 从零开始搭建UVM平台&#xff08;三&#xff09;-加入objection机制 从零开始搭建UVM平台&#xff08;四&…

Cortex微控制器软件接口标准(CMSIS)

Cortex微控制器软件接口标准 目前&#xff0c;软件开发已经是嵌入式系统行业公认的主要开发成本&#xff0c;通过将所有Cortex-M芯片供应商产品的软件接口标准化&#xff0c;能有效降低这一成本&#xff0c;尤其是进行新产品开发或者将现有项目或软件移植到基于不同厂商MCU的产…

react-问卷星项目(4)

项目实战 使用CSS 尽量不要使用内联CSS 内联style代码多&#xff0c;性能差&#xff0c;扩展性差外链css文件可复用代码&#xff0c;可单独缓存文件 元素内联style 和HTMl元素的style相似必须用JS写法&#xff0c;不能是字符串&#xff0c;里面必须是对象 <span style…

进阶数据库系列(十三):PostgreSQL 分区分表

概述 在组件开发迭代的过程中&#xff0c;随着使用时间的增加&#xff0c;数据库中的数据量也不断增加&#xff0c;因此数据库查询越来越慢。 通常加速数据库的方法很多&#xff0c;如添加特定的索引&#xff0c;将日志目录换到单独的磁盘分区&#xff0c;调整数据库引擎的参…

无人化焦炉四大车系统 武汉正向科技 工业机车无人远程控制系统

焦炉四大车无人化系统介绍 采用格雷母线光编码尺双冗余定位技术&#xff0c;炉门视觉定位自学习技术&#xff0c;wifi5G无线通讯技术&#xff0c;激光雷达安全识别技术&#xff0c;焦化智慧调度&#xff0c;手机APP监控功能。 焦炉四大车无人化系统功能 该系统能自动生成生产…

IDTL:茶叶病害识别数据集(猫脸码客 第205期)

Identifying Disease in Tea Leaves茶叶病害识别数据集 一、引言 在农业领域&#xff0c;茶叶作为一种重要的经济作物&#xff0c;其生产过程中的病害防治是确保茶叶质量和产量的关键环节。然而&#xff0c;传统的病害识别方法主要依赖于人工观察和经验判断&#xff0c;这不仅…

Nature Machine Intelligence 基于强化学习的扑翼无人机机翼应变飞行控制

尽管无人机技术发展迅速&#xff0c;但复制生物飞行的动态控制和风力感应能力&#xff0c;仍然遥不可及。生物学研究表明&#xff0c;昆虫翅膀上有机械感受器&#xff0c;即钟形感受器campaniform sensilla&#xff0c;探测飞行敏捷性至关重要的复杂气动载荷。 近日&#xff0…

STM32引脚PB3、PB4、PA15作为输入输出的特殊配置

一、问题描述 简单描述&#xff1a; 最近做的一个项目中&#xff0c;PB3端口配置为输入&#xff0c;不管外部输入是高电平还是低电平&#xff0c;一直读取到的是低电平。 调试过程&#xff1a;在撰写代码过程中&#xff0c;又发现新的问题&#xff0c;Enter按键无法控制屏幕数…

【Python】ftfy 使用指南:修复 Unicode 编码问题

ftfy&#xff08;fixes text for you&#xff09;是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码&#xff0c;而是旨在修复因为编码不一致、解码错误或混合编码导致的…

物流行业中的AI平台架构与智能化应用

随着物流行业的迅速发展&#xff0c;尤其是电商、仓储、运输的需求日益增多&#xff0c;AI技术逐渐成为推动物流企业高效运营、提升服务水平的关键力量。AI平台架构为物流行业的各个环节提供了智能化解决方案&#xff0c;助力物流企业在仓储管理、运输调度、客户服务等方面实现…

Redis: Sentinel工作原理和故障迁移流程

Sentinel 哨兵几个核心概念 1 ) 定时任务 Sentinel 它是如何工作的&#xff0c;是如何感知到其他的 Sentinel 节点以及 Master/Slave节点的就是通过它的一系列定时任务来做到的&#xff0c;它内部有三个定时任务 第一个就是每一秒每个 Sentinel 对其他 Sentinel 和 Redis 节点…

【2023工业3D异常检测文献】Shape-Guided: 基于形状引导和双记忆库的异常检测方法

Shape-Guided Dual-Memory Learning for 3D Anomaly Detection 1、Background 提出了一个以形状为指导的专家学习框架&#xff0c;用于解决无监督3D异常检测的问题。 该方法建立在两个专门的专家模型及其协同作用的基础上&#xff0c;以从颜色和形状模态中定位异常区域。 第…

基于单片机跑步机控制系统设计

** 文章目录 前言概要功能设计设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…