MySQL的基础(二)

news2024/11/26 8:44:40

文章目录

  • 函数:
    • 字符串函数
    • 数值函数
    • 日期函数
    • 流程函数
  • 约束
          • id的自动增长:
          • 不允许name为NULL值,但不要是字符串的null就行
          • 唯一约束
          • 实现同样效果的
    • 外键约束
      • 语法
          • (1)创建的时候就添加
          • (2)已经存在表结构
          • (3)删除外键
      • 删除、更新
        • 语法
        • 图形化页面操作

函数:

MySQL是一款关系型数据库,支持使用函数来处理数据。以下是MySQL中可用的一些常用函数:

  • 字符串函数:例如CONCAT、SUBSTRING、UPPER、LOWER等
  • 数学函数:例如ABS、CEIL、FLOOR、ROUND等
  • 日期和时间函数:例如NOW、YEAR、MONTH、DAY等
  • 聚合函数:例如SUM、AVG、COUNT、MAX、MIN等
  • 控制流函数:例如IF、CASE、COALESCE等

这些函数可以在SELECT语句中使用,以帮助您查询和处理数据。例如,您可以使用CONCAT函数将两个字符串连接在一起,使用SUM函数计算数据列的总和,或使用IF函数根据条件返回不同的值。

有些函数需要传递参数,例如SUBSTRING函数需要指定要截取的字符串和要开始截取的位置。其他函数可能不需要参数,例如NOW函数返回当前日期和时间。您可以在MySQL文档中找到更多有关每个函数及其参数的详细信息。

字符串函数

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  concat('he','llo');
select lower('HELLo012');
//左填充可以实现以‘0’为前导,如excel一样

select  lpad('0123',5,'-');
select  rpad('0123',5,'-');
select trim(' _1 hello MySQL 1');
select  substring('helloworld',1,3);

数值函数

CEIL(×)向上取整

FLOOR(×)向下取整

MOD(Xy)返回x/y的模

RAND()返回0~1内的随机数

ROUND(x,y)求参数x的四舍五入的值,保留y位小数

日期函数

在这里插入图片描述

流程函数

在这里插入图片描述

约束

常见的约束有非空约束 唯一约束 主键约束 默认约束 外键约束
primary key:存在且唯一;unique:只需唯一,不一定存在

1.非空:是否可以存在null值

2.唯一:不重复

3.主键:非空的,唯一的

4.默认:

5.检查:check检查约束是否符合

6.外键:至少两张表,保证数据的一致性和严谨性
外键:其他表中的主键字段

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

中间不加任何符号,直接空格

id的自动增长:

主键:一个表中,只能有一个字段作为主键,并且不能为NULL,且值是唯一的(可以多列作为复合主键,当所有设置为复合主键的列都相同时视为唯一,常用于多对多的表中)。
在这里插入图片描述

不允许name为NULL值,但不要是字符串的null就行

在这里插入图片描述

唯一约束

唯一键(唯一约束):一个表中可以有多个唯一键,唯一键的值可以为NULL,但值必须保证唯一,即NULL值在表中只能出现一次,其它非NULL值也必须是唯一的。唯一键会隐式地创建唯一索引。

在这里插入图片描述

实现同样效果的

在这里插入图片描述

外键约束

外键是用来建立两张表之间的关联关系,确保数据的一致性和完整性。具有外键的表被称为子表,而拥有被引用作为主键的表被称为父表。

然而,尽管外键约束可以确保数据的完整性,但在某些情况下,它可能会对查询性能产生一定影响。这是因为在进行插入、更新或删除操作时,数据库需要检查外键约束以确保数据的一致性,这可能会增加操作的时间开销。

另外需要注意的是,外键仅仅是在逻辑上的关联关系,并不一定在数据库层面实际存在。数据库本身并不强制要求使用外键约束,因此在某些情况下,开发人员可能选择不使用外键约束。然而,在大多数情况下,使用外键约束是推荐的做法,以确保数据的完整性和一致性。

如果您希望在数据库层面建立外键关联,可以使用ALTER TABLE语句来添加外键约束。这样,在执行相关操作时,数据库会自动检查并处理外键约束,以保证数据的一致性和完整性。

语法

(1)创建的时候就添加
create table 表名(
	字段名 数据类型,
	[constraint] [外键名称] foreign key(外键字段名)references 主表(主表列名)
	);
(2)已经存在表结构
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);

蓝色小钥匙–外键

在这里插入图片描述

(3)删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

删除、更新

上述是关于外键约束时常见的触发器选项,它们用于定义当父表中的行被删除或更新时,子表应该如何处理相应的外键关联。

下面对各个选项进行简要说明:

  • NO ACTION/RESTRICT:当在父表中删除或更新记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。这两个选项的行为是一致的。
  • CASCADE:当在父表中删除或更新记录时,首先检查该记录是否有对应外键,如果有,则同时删除/更新外键在子表中的相关记录。
  • SET NULL:当在父表中删除记录时,首先检查该记录是否有对应外键,如果有,则将子表中该外键设置为NULL。这就要求外键允许取NULL值。
  • SET DEFAULT:当父表发生变更时,子表将外键列设置成一个默认的值。然而InnoDB存储引擎并不支持此选项。
  • 不采取行动:与NO ACTION/RESTRICT的行为是一致的,即当在父表中删除或更新记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。
  • 限制:与NO ACTION/RESTRICT的行为是一致的,即当在父表中删除或更新记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。
  • 级联:与CASCADE的行为是一致的,即当在父表中删除或更新记录时,首先检查该记录是否有对应外键,如果有,则同时删除/更新外键在子表中的相关记录。
  • 设置为空:与SET NULL的行为是一致的,即当在父表中删除记录时,首先检查该记录是否有对应外键,如果有,则将子表中该外键设置为NULL。这就要求外键允许取NULL值。
  • 设置默认值:与SET DEFAULT的行为是一致的,但InnoDB存储引擎不支持该选项。

不同的选项适用于不同的场景和需求,根据实际情况选择适合自己的选项可以更好地保证数据的完整性和一致性。

语法

以下是在MySQL中定义外键约束时的一般语法:

ALTER TABLE 子表
ADD CONSTRAINT 外键名称
FOREIGN KEY (子表外键列) 
REFERENCES 父表 (父表主键列)
[ON DELETE 动作]
[ON UPDATE 动作];
  • "子表"是包含外键的表名。
  • "外键名称"是您为外键约束指定的一个唯一名称。
  • "子表外键列"是子表中与父表关联的列名。
  • "父表"是被引用作为主键的表名。
  • "父表主键列"是父表的主键列名,它与子表的外键列相关联。

"[ON DELETE 动作]“和”[ON UPDATE 动作]"是可选项,用于指定在父表中删除或更新记录时的动作。这些动作可以是以下之一:

  • CASCADE:级联操作,在父表上执行删除或更新操作时,同时删除/更新子表中的相关记录。
  • SET NULL:将子表中的外键值设置为NULL(要求该外键允许取NULL值)。
  • SET DEFAULT:将子表中的外键值设置为默认值(InnoDB不支持此选项)。
  • NO ACTION/RESTRICT:不采取行动,阻止对父表的删除或更新操作。

示例:
假设有两个表,一个名为"orders",另一个为"customers"。我们想在"orders"表中添加外键约束,使其引用"customers"表的主键"customer_id"。如果父表中的记录被删除或更新,我们希望禁止对子表进行相应的操作。

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT;

这将在"orders"表上创建一个名为"fk_customer"的外键约束,将"customer_id"列与"customers"表中的"customer_id"列关联起来,并设置了NO ACTION/RESTRICT选项来限制删除和更新操作。

图形化页面操作

在这里插入图片描述

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

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

相关文章

毕业设计-课程设计-基于python+django+vue开发的外卖点餐网站

文章目录 源码下载地址项目介绍项目功能界面预览项目备注毕设定制,咨询 源码下载地址 点击下载源码 项目介绍 该系统是基于pythondjango开发的外卖点餐系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者…

【C++】类和对象(中)之拷贝构造与运算符、操作符重载

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》 🌝每一个不曾起舞的日子,都是对生命的辜负 前言 我们继续学习默认成员函数,本篇文…

C++适配器

文章目录 引言栈和队列 priority_queue仿函数迭代器区间 引言 栈的特性是先进后出,队列的特性是先进先出,然而双向队列同时具有栈和队列的特性,所以我们可以通过双向队列来适配出栈和队列。 先看库里面 栈和队列 stack和queue模板参数里面都…

使用vscode开发uniapp项目常用的辅助插件,提升开发效率

为什么不使用hbuilder开发呢?因为hbuilder对ts和vue3语法支持并不友好,而且代码提示不智能,也不能使用最近很流行的coplit和CodeGeex智能提示,所以就换掉hbulider,使用我们熟悉的vscode开发吧。 第一个:un…

WPF布局控件之DockPanel布局

前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: DockPanel 位置子控件基于子 Dock 属性,你有 4 个选项停靠,左 (默认) &…

coalesce函数(SQL )

用途: 将控制替换成其他值;返回第一个非空值 表达式 COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返…

0xGame Web 2023

0xGame Web 2023 [Week 1] signin 这题直接看源码就行,easy [Week 1] baby_php OST /?aQNKCDZO&b240610708 HTTP/1.1 Host: 120.27.148.152:50014 Content-Length: 11 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 Origin: htt…

C++二分查找算法的应用:长度递增组的最大数目

本文涉及的基础知识点 二分查找 题目 给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件&…

升级 MacOS 系统后,playCover 内游戏打不开了如何解决

我们有些小伙伴在升级了 macOS 系统后大概率会遇到之前能够正常使用的 playCover 突然游戏打不开了,最近 mac 刚刚正式推出了 MacOS 14.1 ,导致很多用户打开游戏会闪退,我们其实只需要更新一下 playCover 就可以解决 playCover 正式版更新会比较慢所以我…

PyQt界面开发(全)

文章目录 前言一、PyQt 简介二、PyQt 与 Qt 的蒙娜丽莎三、PyQt 布局管理器3.1、简介3.2、项目实战3.2.0、添加伸缩项 layout.addStretch:控制布局中组件之间的间距。3.2.1、垂直布局管理器 QVBoxLayout:控件按照从上到下的顺序排列3.2.2、水平布局管理器…

firefox浏览器添加自定义搜索引擎方法

firefox浏览器添加自定义搜索引擎方法 1.在地址栏添加搜索引擎2.Mycroft Project 搜索引擎附加组件3.通过扩展插件添加自定义搜索引擎 Firefox这货居然不支持直接网址%s的搜索引擎定义方式,以下是添加方法。 firefox国际版119.0 1.在地址栏添加搜索引擎 &#xff…

Android:怎么学习才能更好的进大厂呢?

怎么学习才能更好的进大厂呢? 很多朋友都在问这个问题。 其实没有什么特别的技巧,就是依靠自己的毅力和决心。一天做不到,就一个月;一个月做不到,就一年。只要有决心,无论学历或资历如何,都不是…

Zookeeper和Kafka安装

Zookeeper和Kafka安装 1、Windows下的安装 1.1 安装JAVA JDK 请参考《Windows环境下JDK的安装》 JDK版本: 1.2 安装ZooKeeper 1、 下载安装包 http://zookeeper.apache.org/releases.html#download 这里下载的版本为3.4.9 2、 解压并进入ZooKeeper目录&…

C++ 模板特化

非类型模板参数 定义&#xff1a;对于函数模板和类模板&#xff0c;模板参数并不局限于类型&#xff0c;普通值也可以作为模板参数 非类型模板参数定义的是常量 template<typename T, size_t N> class array; //T&#xff1a;类型模板参数 //N&#xff1a;非类型模板参…

【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式

文章目录 前言一、UIAbility概况1.1 概况介绍1.2 声明配置 二、UIAbility组件生命周期2.1 基本概念2.2 生命周期状态说明Create状态WindowStageCreate和WindowStageDestroy状态Foreground和Background状态Destroy状态 三、UIAbility的启动模式3.1 singleton启动模式说明进行配置…

根据Aurora发送时序,造Aurora 数据包,从而进行AXIS接口数据位宽转换仿真

首先Aurora采用AXIS接口 由于后续需要进行AXIS接口 不同时钟域的数据位宽转换&#xff08;64bit和256bit之间的转换&#xff09;&#xff0c;因此分两次走。 第一种方法&#xff1a;采用AXIS数据位宽转换IP AXIS跨时钟域IP 第二种方法&#xff1a;逻辑完成 下面记录逻辑…

android display 杂谈(三)WMS

用来记录学习wms&#xff0c;后续会一点一点更新。。。。。。 代码&#xff1a;android14 WMS是在SystemServer进程中启动的 在SystemServer中的main方法中&#xff0c;调用run方法。 private void run() { // Initialize native services.初始化服务&#xff0c;加载andro…

路由器基础(八):策略路由配置

在实际网络应用中&#xff0c;策略路由也是一种重要的技术手段。尽管 在考试并不注重策略路由&#xff0c;但是实际上应用较多&#xff0c;建议考生除了掌握基本的静态路由协议IP route-static, 动态路由协议RIP 、OSPF的基础配置外&#xff0c;还要掌握如何配置策略路由。…

JavaScript事件委托原理详解!

通过JavaScript事件的冒泡来动态为元素绑定事件的方法称为事件委托&#xff08;Event Delegation&#xff0c;也称为“事件代理”&#xff09;&#xff0c;是 JavaScript 中最热门的技术之一&#xff0c;在笔试和面试中是常考察的重点知识点&#xff0c;今天来简单介绍一下相关…

成人听力筛查的现状

作者&#xff1a;兰明&#xff0c;医学硕士&#xff0c;听力学博士&#xff0c;听觉健康门诊主任。 你有听力障碍吗&#xff1f;你的家人有听力障碍吗&#xff1f;如果有人提出这样的问题&#xff0c;你的回答多数都是“真不知道”。为什么&#xff1f; 因为我们缺乏成人…