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

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

四、思维导图

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

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

相关文章

七、HTML 文本格式化

一、HTML 文本格式化 加粗文本斜体文本电脑自动输出 这是 下标 和 上标 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML文本格式化</title> </head><body><b>加粗文本</b><br>…

计算机网络——应用层(1)

计算机网络——应用层&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 协议原理内容原理小结体系结构分类——重点已标注 进程通信常见形式 因特网运输服务TCP&#xff08;传输控制协议&#xff09;UDP&#xff08;用户数据报协议&#xff09;…

简易机器学习笔记(十)Windows下 PaddlePaddle配置CUDA加速环境

前言 大伙既然都来做这个了&#xff0c;那配个CUDA环境肯定是必不可少的了吧&#xff08;笑&#xff09; 最前面的最前面&#xff0c; 流程 确定当前设备支持的CUDA版本安装CUDA Toolkit 和 GPU版的Paddlepaddle下载cuDNN Archive手动放置配套的cuDNN到指定文件夹测试 1.确…

kubectl命令中常用的缩写

在kubectl的学习中&#xff0c;经常见到一些缩写&#xff0c;干脆整理一番&#xff0c;统一学习更加方便记忆。 一览表 简称全称中文释义举例nsnamespace命名空间kubectl get namespace 等价于 kubectl get ns-A--all-namespaces全部命名空间kubectl get pods --all-namespac…

机械配件移动商城课程概述

项目介绍 开发准备 任务 开源库介绍 框架搭建 工具类

Mac上安装 Node.js 的版本管理工具 n,以及 n 使用,的使用

安装 最近刚更换 Mac 本进行项目的开发&#xff0c;刚上手 Mac 本还不是很熟练&#xff0c;需要安装 Node.js 的包管理工具 在 Windows 上我是实用的 nvm 来管理的 Node 版本&#xff0c;但是我尝试下载 Nvm &#xff0c;发现下载安装后的 Nvm 无法使用&#xff0c;提示 “Th…

性能优化-OpenMP基础教程(五)-全面讲解OpenMP基本编程方法

本文主要介绍OpenMP编程的编程要素和实战&#xff0c;包括并行域管理详细实战、任务分担详细实战。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;C…

宏基因组序列分析工具EukRep

文章&#xff1a;Genome-reconstruction for eukaryotes from complex natural microbial communities | bioRxiv 仓库&#xff1a;patrickwest/EukRep: Classification of Eukaryotic and Prokaryotic sequences from metagenomic datasets (github.com) 推荐使用conda进行安…

开启Android学习之旅-3-Android Activity

Android Activity 本文总结《第一行代码 Android》第3版的内容 环境&#xff1a; Android Studio Giraffe | 2022.3.1 Patch 3 Activity 是什么&#xff1f; Activity 简单将就是UI界面&#xff0c;包含两部分 Activity 类 和应用布局文件&#xff0c;如果是 Compose 则另说&…

DS|图(连通与生成树)

题目一&#xff1a;DS图 -- 图的连通分量 题目描述&#xff1a; 输入无向图顶点信息和边信息&#xff0c;创建图的邻接矩阵存储结构&#xff0c;计算图的连通分量个数。 输入要求&#xff1a; 测试次数t 每组测试数据格式如下&#xff1a; 第一行&#xff1a;顶点数 顶点…

【Linux进程】 进程的理解

目录 前言 1. 系统管理 2. 进程 2.1 概念 2.2 进程的调度 2.3 描述进程-PBC 3. 查看进程 4. 通过系统调用获取进程标示符 前言 在计算机科学领域&#xff0c;进程是一种重要的概念&#xff0c;在日常学习中也经常遇到进程这个概念&#xff0c;那么进程到底是什么&#x…

tkinter实现一个简易窗口

tkinter目录 1. 最简易的窗口2. 加了标签、按钮、输入框&#xff0c;并且按钮连接了函数 1. 最简易的窗口 import tkinter as tkwindow tk.Tk()window.title(我的窗口) # 设置窗口名 window.geometry(500x300) # 设置窗口长宽label tk.Label(window, text文字文字文字, bg…

Vue3中使用动态组件

文章目录 使用方式&#xff1a;使用场景&#xff1a; 在 Vue 3 中&#xff0c;动态组件是一种允许在运行时动态切换组件的机制。Vue 3 提供了 元素以及 is 特性来实现动态组件的切换。 使用方式&#xff1a; 1、使用 元素 在模板中使用 元素&#xff0c;通过 is 特性来动态切换…

CSS基础笔记-01CSS概述

文章目录 前言CSS是什么CSS的作用CSS语法添加CSS的方法 前言 CSS是什么&#xff1f;有什么作用&#xff1f;怎么编写CSS&#xff1f;怎样添加CSS&#xff1f;本文对CSS的四个方面作了学习并形成学习笔记。 CSS是什么 CSS &#xff08;Cascading Style Sheets&#xff0c;层叠…

CentOS 多节点一键免密登录

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

解决2023新版Edge浏览器页面加载不出来问题

2023年推出的新版Edge浏览器为用户带来了更好的性能和用户体验。然而&#xff0c;有一些用户反馈称他们在使用新版Edge浏览器时遭遇了页面加载不出来的问题。本篇博客将详细介绍如何解决这个问题&#xff0c;以确保您能够顺畅地使用新版Edge浏览器浏览网页。 1、清除缓存和Coo…

使用 Python 进行贝叶斯优化

一、介绍 贝叶斯优化是一种先进的技术&#xff0c;用于优化评估成本高昂的函数。该策略为全局优化提供了原则性策略&#xff0c;强调探索&#xff08;尝试新领域&#xff09;和开发&#xff08;尝试看起来有前途的领域&#xff09;之间的平衡。 二、什么是贝叶斯优化&#xff1…

Mysql 分割字符串,一行变多行,@rownum,mysql.help_topic

1 前言 朋友最近遇到一个比较棘手的 sql 问题&#xff0c;让我帮忙看看&#xff1a; 他有两张表 testa 和 testb &#xff0c;一个表存的日期&#xff0c;另一个表存字符串例如 2023-11-01,2023-11-02&#xff0c;如何将这两张表关联起来&#xff0c;只查 testa 表的数据&#…

streamlit 入门demo

一、介绍 Streamlit 是一个用于创建数据应用程序的 Python 库&#xff0c;它致力于简化从数据脚本到可部署应用程序的整个过程。通过 Streamlit&#xff0c;你可以使用熟悉的 Python 语言创建交互式的、美观的数据应用&#xff0c;而无需深入了解前端开发。 二、优势和特点 简…

分布式基础概念

分布式基础概念 1 微服务 微服务架构风格&#xff0c;就像是把一个单独的应用程序开发为一套小服务&#xff0c;每个小服务运行在自己的进程中&#xff0c;并使用轻量级机制通信&#xff0c;通常是HTTP API。这些服务围绕业务能力来构建&#xff0c;并通过完全自动化部署机制…