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 结论

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

四、思维导图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

建站指南,如何将拥有的域名自定义链接到wordpress

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 在Dynadot上&#xff0c;我们可已经账户中管理的…

OpenHarmony之消息机制实现

OpenHarmony之消息机制实现 背景 在之前的介绍&#xff08;OpenHarmony之HDF驱动框架&#xff09;中&#xff0c;了解到OpenHarmony的消息机制主要有以下两种&#xff1a; 用户态应用发送消息到驱动。用户态应用接收驱动主动上报事件。 下面我们分别来看看两种机制用户态的…

使用 dbgate 在 sealos 上完美管理 mysql pgsql 等数据库

先登录 sealos 创建数据库&#xff0c;可以创建个 pgsql: 再到模版市场启动 dbgate: 配置数据库的连接信息&#xff0c;即可搞定收工 sealos 以kubernetes为内核的云操作系统发行版&#xff0c;让云原生简单普及 laf 写代码像写博客一样简单&#xff0c;什么docker kubernete…

Linux系统使用超详细(七)~定时任务:crontab

目录 一、定时任务简介 1.1cron工具概述 1.2crontab命令简述 二、crontab安装与检查 2.1安装步骤 2.2查看crontab的状态 2.3查看crontab服务 三、crontab命令 3.1常用命令 3.2定时任务的写法 3.3实例 四、添加定时任务 4.1使用crontab -e命令 4.2创建一个独立的定…

银河麒麟Kylin-Server-V10-SP3使用ISO镜像搭建本地内网YUM/DNF源cdrom/http

机房服务器安装一般是内网环境&#xff0c;需要配置本地的YUM/DNF源。本文介绍通过ISO镜像搭建内网环境的UM/DNF源 准备工作&#xff1a; 提前准备好Kylin-Server-V10-SP3的ISO镜像文件。 本机IP地址&#xff1a;192.168.40.201 镜像存放目录/data/iso/Kylin-Server-V10-SP3-Ge…

编写一个弹跳小球的程序,小球在窗口中四处反弹(python)

import pygame import random# 初始化Pygame pygame.init()# 窗口尺寸 width 800 height 600# 创建窗口 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("Bouncing Ball")# 小球初始位置和速度 ball_radius 20 ball_color (255, …

前端页面的生命周期

性能问题呈现给用户的感受往往就是简单而直接的&#xff1a;加载资源缓慢、运行过程卡顿或响应交互延迟等。而在前端工程师的眼中&#xff0c;从域名解析、TCP建立连接到HTTP的请求与响应&#xff0c;以及从资源请求、文件解析到关键渲染路径等&#xff0c;每一个环节都有可能因…

iOS苹果和Android安卓测试APP应用程序的区别差异

在移动应用开发中&#xff0c;测试是一个至关重要的环节。无论是iOS苹果还是Android安卓&#xff0c;测试APP应用程序都需要注意一些差异和细节。本文将详细介绍iOS和Android的测试差异&#xff0c;包括操作系统版本、设备适配、测试工具和测试策略&#xff0c;并回答一些新手容…

web3d-three.js场景设计器-TransformControls模型控制器

场景设计器-TransformControls 控制器 该控制器可以指定模型进入可控制模式-如图有三种控制方式 translate --移动模式 rotate -- 旋转模式 scale -- 缩放模式 方便布局过程中快捷对模型进行摆放操作。 引入方式 import { TransformControls } from three/examples/jsm/…

深入Pandas(二):高级数据处理技巧

文章目录 系列文章目录引言时间序列分析可视化示例 高级数据分析技术分组与聚合操作时间序列分析 高级数据操作数据合并与重塑示例&#xff1a;数据合并merge示例&#xff1a;数据合并concat示例&#xff1a;数据重塑 - 透视表 高级索引技巧 结论 系列文章目录 Python数据分析…

C++《异常》

前言&#xff1a;C有一套独立的异常处理机制,今天就来做详细的介绍try,catch这两个词等 在C语言中处理错误的方式和缺陷有&#xff1a; 返回错误码。 缺陷&#xff1a; 1.错误码不好设置&#xff0c;比如&#xff1a;除0操作&#xff0c;就不好返回错误码。如果返回一个数字&…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -小程序微信用户登录实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

LabVIEW在高级结构监测中的创新应用

LabVIEW在高级结构监测中的创新应用 LabVIEW作为一个强大的系统设计平台&#xff0c;其在基于BOTDA&#xff08;光时域反射分析&#xff09;技术的结构监测中发挥着核心作用。利用LabVIEW的高效数据处理能力和友好的用户界面&#xff0c;开发了一个先进的监测系统。该系统专门…

如何从格式化的 Windows 和 Mac 电脑硬盘恢复文件

格式化硬盘可为您提供全新的体验。它可以是硬盘驱动器定期维护的一部分&#xff0c;是清除不再使用的文件的一种方法&#xff0c;在某些情况下&#xff0c;它是处理逻辑损坏的万福玛利亚。但是&#xff0c;许多用户发现自己格式化了错误的分区或驱动器&#xff0c;或者后来意识…

箭头函数 - JavaScript的新宠儿

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

C语言编译器(C语言编程软件)完全攻略(第二十七部分:VS安全函数问题(C语言安全函数)是怎么回事?如何解决?)

介绍常用C语言编译器的安装、配置和使用。 二十七、VS安全函数问题&#xff08;C语言安全函数&#xff09;是怎么回事&#xff1f;如何解决&#xff1f; 在 VS&#xff08;Visual Studio&#xff09;下编译C语言程序&#xff0c;如果使用了 scanf()、gets()、strcpy()、strca…

听GPT 讲Rust源代码--compiler(17)

File: rust/compiler/rustc_passes/src/debugger_visualizer.rs 文件rust/compiler/rustc_passes/src/debugger_visualizer.rs是Rust编译器中的一个代码文件&#xff0c;它包含了与调试器可视化相关的功能。 调试器可视化是一个在调试过程中有助于理解和分析代码执行的工具。它…

【大数据进阶第三阶段之Hive学习笔记】Hive的数据类型与数据操作

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 …

Ansible的安装及简单使用

## Ansible的安装及简单使用 ## 一.Ubuntu安装Ansible sudo apt update sudo apt install ansible #使用以下命令检查安装是否成功&#xff1a; ansible --version二.配置Ansible #进入配置文件目录 cd /etc/ansible/ ls#文件含义 ansible.cfg #ansible配置文件,默认基本不用…

大学物理-实验篇——测量误差与数据处理(测量分类、误差、有效数字、逐差法)

目录 测量分类 测量次数角度 测量条件角度 误差 误差分类 系统误差 随机误差 异常值 误差描述 精密度&#xff08;Precision&#xff09; 正确度&#xff08;Trueness&#xff09; 准确度/精确度&#xff08;Accuracy&#xff09; 随机误差的处理 直接测量 算术…