当前位置: 首页 > news >正文

mysql之数据类型、建表以及约束

目录

一. CRUD

 1.1 什么是crud

  1.2 select(查询)

1.3 INSERT(新增)

1.4 UPDATE(修改)

  1.5 DELETE(删除)

二. 函数

 2.1 常见函数

  2.2 流程控制函数

   2.3聚合函数

三. union与union all

  3.1 union

   3.2 union all

  3.3 具体不同

   3.4 结论

四、思维导图


一. CRUD

 1.1 什么是crud

  crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

  1.2 select(查询)

 概念:  查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。

顺序:条件查询执行顺序:where(条件)  group by(分组)  having(筛选)  order by(排序)  limit(记录数)

语法:

SELECT
{* | <字段列名>}
[FROM <表1>,<表2>...
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}...]]
[ORDER BY <order by definition>]
[LIMIT [<offset>,] <row count>]
]

含义:

(1)`{*|<字段列名>}`:包含星号通配符的字段列表,表示所要查询字段的名称。
(2)`<表 1>,<表 2>... ` :表 1和表 2表示查询数据的来源,可以是单个或多个。
(3)`WHERE <表达式>` :是可选项,如果选择该项,那么限定查询数据必须满足该查询条件。
(4)`GROUP BY< 字段 >` :该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
(5)`[ORDER BY < 字段 >]` :该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。
(6)`[LIMIT[<offset>,]<row count>]` :该子句告诉 MySQL 每次显示查询出来的数据条数。

1.3 INSERT(新增)

概念:使用 INSERT 语句向数据库已有的表中插入一行或者多行元祖数据。

语法:

插入单行:INSERT... SET语句

INSERT INTO <表名>
SET <列名1> = <值1>,
   <列名2> = <值2>,
   ...

插入多行:INSERT...VALUES语句

INSERT INTO <表名> [ <列名1> [ , ...<列名n>] ]
VALUES (值1) [.... , (值n) ];

含义:

(1)`<表名>`:指定被操作的表名。
(2)`<列名>`:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可省略,直接采用 INSERT <表名> VALUES(...)即可。
(3)`VALUES` 或 `VALUE` 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。

总结:

由 INSERT 语句的两种形式可以看出:

(1)- 使用 INSERT...VALUES 语句可以向表中插入一行数据,也可以插入多行数据;
(2)- 使用 INSERT...SET 语句可以指定插入行中每列的值,也可以指定部分列的值;
(3)- INSERT...SELECT 语句向表中插入其他表中的数据。
(4)- 采用 INSERT ... SET 语句可以向表中插入部分列的值,这种方式更为灵活;
(5)- INSERT...VALUES 语句可以一次插入多条数据。

1.4 UPDATE(修改)

语法:

UPDATE <表名> SET 字段 1= 值 1 [, 字段 2 = 值 2] [WHERE 子句]
[ORDER BY 子句] [LIMIT 子句]

 含义:

(1)`<表名>`:用于指定要更新的表名称。
(2)`SET` 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
(3)`WHERE` 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
(4)`ORDER BY` 子句:可选项。用于限定表中的行被修改的次序。
(5)`LIMIT` 子句:可选项。用于限定被修改的行数。

  1.5 DELETE(删除)

语法:

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

含义:

(1)`<表名>`:指定要删除数据的表名。
(2)`ORDER BY` 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
(3)`WHERE` 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中所有行。 
(4)`LIMIT` 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。

二. 函数

 2.1 常见函数

字符函数:

(如果忘了函数的意思可以直接 SELECT + 你想要测试的函数就好,就能看到函数的效果)

转小写:LOWER ('SQL Course') ----- sql course
转大写:UPPER ('SQL Course') ------ SQL COURSE
拼接:CONCAT ('Hello','World') ------ HelloWorld
截取:SUBSTR ('HelloWorld',1,5) ---- Hello
长度:LENGTH ('HelloWorld') ---- 10
字符出现索引值:amcdINSTR ('HelloWorld','W') ----- 6
字符截取后半段:TRIM ('H' FROM 'HelloWorld') ----- elloWorld
字符替换:REPLACE ('abcd','b','m') ----- amcd

数字函数:

        四舍五入:ROUND (45.926, 2) ----- 45.93

        截取:TRUNC (45.926, 2) ------ 45.92

        求余:MOD (1600, 300) ----- 100

日期函数:

获取当前日期:now()
将日期格式的字符转换成指定格式的日期:STR_TO_DATE ('9-13-1999','%m-%d-%Y') ---- 1999-09-04
将日期转换成字符:DATE_FORMAT (‘2004/10/14’,‘%Y年%m月%d日’) ---- 2018年06月06日

  2.2 流程控制函数

使用场景:

行转列:
        把基本不需要改动的数据放在行
        把可能要进行变化的数据放在列

语法:

CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END

示例:

(01)查询同时存在" 01 "课程和" 02 "课程的情况

SELECT
t3.*,
(CASE WHEN t1.cid = '01' THEN t1.score END) 语文,
(CASE WHEN t2.cid = '02' THEN t2.score END) 数学
FROM
( SELECT * FROM t_mysql_score sc WHERE sc.cid = '01') t1,
( SELECT * FROM t_mysql_score sc WHERE sc.cid = '02') t2,
t_mysql_student t3
WHERE
t1.sid = t2.sid
AND t1.sid = t3.sid

(02)查询会议信息(包含会议信息表数据,主持人姓名、审批人姓名、会议状态)

SELECT a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren,b.`name`,a.location
     ,DATE_FORMAT(a.startTime,'%Y-%m-%d %H:%i:%s') as startTime
     ,DATE_FORMAT(a.endTime,'%Y-%m-%d %H:%i:%s') as endTime
     ,a.state
     ,(case a.state
     when 0 then '取消会议'
     when 1 then '新建'
     when 2 then '待审核'
     when 3 then '驳回'
     when 4 then '待开'
     when 5 then '进行中'
     when 6 then '开启投票'
     else '结束会议' end
     ) as meetingState
     ,a.seatPic,a.remark,a.auditor,c.`name` as auditorName
     FROM t_oa_meeting_info a
     inner join t_oa_user b on a.zhuchiren = b.id
     left JOIN t_oa_user c on a.auditor = c.id where 1 = 1 ;

   2.3聚合函数

sum 求和

avg 平均值

max 最大值

min 最小值

count 计算个数

三. union与union all

  3.1 union

概念:
        1. 用于合并两个或者多个SELECT语句的结果集,并去除重复的行。

        2. UNION操作符执行去除重复行的操作,它通过对所有的结果集进行排序和比较来实现

语法:
        将多个SELECT语句放在一起,并使用UNION关键字将它们连接起来。每个SELECT语句的列数、列名和数据类型必须相同。

使用场景:
        当需要合并多个查询结果,并且不希望出现重复行时,可以使用UNION操作符。它适用于数据需要去重的情况。

   3.2 union all

概念:
        1. 用于合并两个或者多个SELECT语句的结果集,包括重复的行。

        2. UNION ALL操作符不执行去除重复行的操作,它直接将所有的结果集合并在一起。

语法:
        将多个SELECT语句放在一起,并使用UNION ALL关键字将它们连接起来。每个SELECT语句的列数、列名和数据类型可以不同。

使用场景:
        当需要合并多个查询结果,包括重复行时,可以使用UNION ALL操作符。它适用于不需要去重的情况,或者在已经确定结果不会有重复行的情况下。

  3.3 具体不同

初始数据:
        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

         SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

UNION:
        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

        UNION

        SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

        678只出现了1次

UNION ALL:
        SELECT * from t_oa_meeting_info where id>=1 and id <= 8;

        UNION ALL

        SELECT * from t_oa_meeting_info where id>=6 and id <= 10;

        678重复出现       

   3.4 结论

    相当于数学中的交集和并集,所谓去重并不需要所有列相同。

四、思维导图

相关文章:

mysql之数据类型、建表以及约束

目录 一. CRUD 1.1 什么是crud 1.2 select(查询) 1.3 INSERT(新增) 1.4 UPDATE(修改&#xff09; 1.5 DELETE(删除) 二. 函数 2.1 常见函数 2.2 流程控制函数 2.3聚合函数 三. union与union all 3.1 union 3.2 union all 3.3 具体不同 3.4 结论 四、思维导图 一. CRUD 1.1…...

复试 || 就业day04(2024.01.05)项目一

文章目录 前言线性回归房价预测加载数据数据查看数据拆分数据建模模型的验证、应用模型的评估 总结 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容来自某机构网课&#xff0c;是我为复试准备的第一个项目 &#…...

华为机试真题实战应用【赛题代码篇】-最小传输时延(附python、C++和JAVA代码实现)

目录 问题描述 输入描述: 输出描述: 知识储备 解题思路 思路一...

C++ 运算符重载

&#xff08;Operator&#xff09; 加分 减法 []的重载 #include <iostream> using namespace std;class time1 {public:time1(){shi0;fen0;miao0;}time1(int shi, int fen, int miao){this->shi shi;this->fen fen;this->miao miao;}time1 operator (ti…...

vue3学习 【2】vite起步和开发工具基本配置

vite的简介 官方文档 刚起步学习&#xff0c;所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18&#xff0c;可以参考上一篇文章的安装nvm&#xff0c;用来进行多版本的node管理。 vite安装与使用 npm create vitela…...

计算机创新协会冬令营——暴力枚举题目06

我给大家第一阶段的最后一道题就到这里了&#xff0c;下次得过段时间了。所以这道题简单一点。但是足够经典 下述题目描述和示例均来自力扣&#xff1a;两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target …...

单片机快速入门

参考连接&#xff1a; 安装MinGW-64&#xff08;在win10上搭建C/C开发环境&#xff09;https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接&#xff1a;https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码&#xff1a;y1mz --来自百度网盘超级会员V7的分享C…...

Eureka相关问题及答案(2024)

1、什么是Eureka&#xff1f; Eureka是一个由Netflix开发的服务发现&#xff08;Service Discovery&#xff09;工具&#xff0c;它是Spring Cloud生态系统中的一个关键组件。服务发现是微服务架构中的一个重要概念&#xff0c;它允许服务实例在启动时注册自己&#xff0c;以便…...

Django 7 实现Web便签

一、效果图 二、会用到的知识 目录结构与URL路由注册request与response对象模板基础与模板继承ORM查询后台管理 三、实现步骤 1. terminal 输入 django-admin startapp the_10回车 2. 注册&#xff0c; 在 tutorial子文件夹settings.py INSTALLED_APPS 中括号添加 "the…...

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误&#xff0c;提供详细的日志文件和提醒功能&#xff0c;还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…...

FFmpeg之——获取上传视频的尺寸(长、宽)

获取上传视频的尺寸&#xff1a; 获取视频尺寸通常需要借助第三方库FFmpeg。 首先&#xff0c;确保你的系统中已安装了FFmpeg&#xff0c;并且FFmpeg的可执行文件路径已经添加到你的系统环境变量中。 1.官网下载ffmpeg 进入 链接: ffmpeg官网 网址&#xff0c;点击下载wind…...

Ajax学习

文章目录 AjaxAjax 是什么Ajax 经典应用场景Ajax 原理示意图ajax的异步请求的方法ajax的逻辑:应用实例-验证用户名是否存在思路框架图:需求分析: 到数据库去验证用户名是否可用思路框架图大功告成:使用JQuery-Ajax实现上面相同的需求:Ajax Ajax 是什么 AJAX 即"Async…...

排序算法——关于快速排序的详解

目录 1.基本思想 2.基本原理 2.1划分思想 2.2排序过程 &#xff08;1&#xff09;选择基准值 &#xff08;2&#xff09;分割过程&#xff08;Partition&#xff09; &#xff08;3&#xff09;递归排序 &#xff08;4&#xff09;合并过程 2.3具体实例 2.4实现代码 2.5关键要…...

序言:《未来已来》

尊敬的读者&#xff0c; 你是否曾经在面对冗长的报告、繁琐的工作、沉重的生活压力时感到困扰&#xff0c;渴望找到一种方式来提升效率&#xff0c;释放压力&#xff1f;你是否曾经在自我创业的道路上&#xff0c;苦于找不到有效的市场营销方式&#xff0c;寻求突破&#xff1f…...

【Spring实战】22 Spring Actuator 入门

文章目录 1. 定义2. 功能3. 依赖4. 配置5. 常用的应用场景1&#xff09;环境监控2&#xff09;运维管理3&#xff09;性能优化 结论 Spring Actuator 是 Spring 框架的一个模块&#xff0c;为开发人员提供了一套强大的监控和管理功能。本文将深入探讨 Spring Actuator 的定义、…...

JSON安全性

确保JSON处理的安全性是现代Web开发中重要的一环。以下是一些关键的安全实践&#xff0c;用于防止JSON注入攻击以及确保数据在传输过程中的安全性&#xff1a; 1. **验证和清洗输入&#xff1a;** - 在将任何数据写入数据库之前&#xff0c;请确保验证用户输入。对于期望的JSON…...

spring-boot-maven插件repackage(goal)的那些事

前言&#xff1a;在打包Springboot项目成jar包时需要在pom.xml使用spring-boot-maven-plugin来增加Maven功能&#xff0c;在我的上一篇博客<<Maven生命周期和插件的那些事&#xff08;2021版&#xff09;>>中已经介绍过Maven和插件的关系&#xff0c;在此不再赘述&…...

ubuntu的boot分区被删除恢复

在鼓捣黑苹果的时候&#xff0c;误删了ubuntu的boot分区&#xff0c;进系统的时候出现emergency mode&#xff0c;那么现在来讲讲怎么恢复 首先做一个ubuntu的启动盘&#xff0c;然后进入启动盘的系统选择试用 呼出命令行&#xff0c;然后添加一个源 sudo add-apt-repository…...

【userfaultfd 条件竞争】starCTF2019 - hackme

前言 呜呜呜&#xff0c;这题不难&#xff0c;但是差不多一个多月没碰我的女朋友 kernel pwn 了&#xff0c;对我的 root 宝宝也是非常想念&#xff0c;可惜这题没有找到我的 root 宝宝&#xff0c;就偷了她的 flag。 哎有点生疏了&#xff0c;这题没看出来堆溢出&#xff0c…...

深度学习中的自动化标签转换:对数据集所有标签做映射转换

在机器学习中&#xff0c;特别是在涉及图像识别或分类的项目中&#xff0c;标签数据的组织和准确性至关重要。本文探讨了一个旨在高效转换标签数据的 Python 脚本。该脚本在需要更新或更改类标签的场景中特别有用&#xff0c;这是正在进行的机器学习项目中的常见任务。我们将逐…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...