MySQL:基础篇

一、数据库概述

基本概念

RDBMS(关系型数据库)和非DBMS对比

RDBMS

实质:

优势:

非DBMS

介绍:

类型:

RDBMS设计规则

表、字段、记录

表之间的关联关系

1、一对一

2、一对多

3、多对多

4、自我引用

二、SELECT使用

1、基本SELECT查询

1.1 SQL分类

1.2 书写规则

1.3 大小写规范

1.4 注释

1.5 导入现有数据库(仅介绍非图形化界面方式)

sourse 文件全路径名

1.6 基本SELECT语句

SELECT......FROM

举例:

列的别名

去除重复行

空值(null)参与运算,结果一定为null

null不等同于0、''、'null'。

着重号

查询常数

举例:

显示表结构

where过滤数据

格式:

where 过滤条件

举例:

2、运算符

2.1 算术运算符

2.2 比较运算符

非符号类型运算符:

空运算符(IS NULL/ISNULL)

TIP:

2.3 逻辑运算符

2.4 位运算符

2.5 运算符优先级(了解)

3、排序与分页

3.1 ORDER BY实现排序

规则

举例:

①如果ORDER BY没有显式指明排序方式的话,默认升序排序。

②可以使用列的别名来排序,不能再where中使用列的别名。

③where在FROM之后,在ORDER BY之前。

二级排序

3.2 LIMIT实现分页

需求:每页显示PageSize条记录,此时显示第PageNo页。

格式:LIMIT  位置偏移量  条目数;

公式:LIMIT  (PageNo-1)*PageSize  PageSize;

声明顺序:WHERE...ORDER BY...LIMIT

4、多表查询

4.1 等值连接vs非等值连接

等值连接举例:

SELECT a.value1,b.value2

FROM table_a a,table_b b

WHERE a.value_id=b.value_id;

4.2 自连接vs非自连接

4.1中例子皆为非自连接

自连接举例:

4.3 内连接vs外连接

MySQL支持SQL99语法,在SQL99语法中使用JOIN...ON的方式实现多表查询。

但是MySQL不支持满外连接(FULL OUTER JOIN)

4.4 UNION的使用

4.5 使用SQL99实现7种JOIN操作

4.6 SQL99语法新特性

自然连接

USING连接

5、单行函数(常用、了解使用)

5.1 数值函数

基本函数

三角函数

角度与弧度互换函数

指数与对数

进制转换

5.2 字符串类型函数

5.3 日期时间类型函数

获取日期、时间

日期与时间戳转换

获取月份、天数、星期数等函数

日期操作函数

时间和秒钟转换的函数

计算日期和时间的函数

日期的格式化与解析

上述函数怎么用需要自己查询

5.4 流程控制函数

5.5 加密与解密函数

6、聚合函数

6.1 常用聚合函数

分别是求平均值、总和、最大值、最小值、计数(不包含null值)。

6.2 GROUP BY的使用

举例使用

使用多个列进行分组

tip:

WITH ROLLUP

6.3 HAVING的使用

使用上上图的例子

WHERE和HAVING的对比

6.4 SELECT的执行过程

查询结构

执行顺序

底层原理

7、子查询

7.1 单行子查询

操作符:

举例:

having有关:

case语句中子查询:

空值:

非法使用子查询:

7.2 多行子查询

操作符:

示例:

多行子查询在having和空值问题上与单行子查询类似

7.3 相关子查询

执行流程:

示例:

关键字EXSIT和NOT EXSIT:

相关更新:

相关删除:

三、DDL、DML、DCL

1、创建管理表

标识符命名规则

1.1 创建和管理数据库

创建数据库:

使用数据库:

修改数据库:

删除数据库:

1.2 创建表

数据类型:

其中常用介绍:

创建表:

举例练习:

练习2中WHERE 1=2;也可以实现,只要筛选条件false就只能复制表头。

1.3 修改表

添加列:

修改列:

删除列:

重命名列:

重命名表:

删除表:

回滚类似撤销

清空表:

1.4 DCL中COMMIT和ROLLBACK

对比TRUNCATE TABLE和DELETE FROM:

DDL和DML说明:

2、数据处理之增删改

2.1 插入数据

方式一:VALUE

情况1:插入一整条记录

方式二:将查询结果插入表中

举例:

2.2 更新数据

省略WHERE,表中所有数据都将更新。

2.3 删除数据

2.4 MySQL新特性:计算列

3、MySQL数据类型(详细)

前期在三、1、1.2创建表中提过

常见数据类型属性:

3.1 整数类型

介绍:

可选属性:

适用场景:

3.2 浮点类型

介绍:

精度讲解:

精度误差:

3.3 定点数类型

3.4 位类型:BIT

3.5 日期时间类型

YEAR:

DATE:

TIME:

DATETIME:

TIMESTAMP:

TIMESTAMP和DATETIME的区别:

3.6 文本字符串类型

CHAR和VARCHAR类型:

TEXT类型:

ENUM类型:

SET类型:

3.7 二进制字符串类型

3.8 JSON类型

3.9 空间类型

4、约束

4.1 约束介绍

为什么需要约束?

什么是约束?

约束分类:

4.2 非空约束

作用:

关键字:NOT NULL

特点:

添加非空约束:

①建表时:

②建表后:

删除非空约束:

4.3 唯一性约束

作用:

关键字:UNIQUE

特点:

添加唯一约束:

①建表前:

②建表后指定唯一约束:

关于复合唯一约束:

删除唯一约束:

4.4 PRIMARY约束(主键约束)

作用:用来唯一标识表中的一行记录。

关键字:primary key

特点:

添加主键约束:

①建表时指定主键约束:

②建表后添加主键约束:

复合主键:

删除主键约束:

4.5 自增列:AUTO_INCREMENT(关键字)

作用:某个字段的值自增。

特点和要求:

指定自增约束:

①建表时:

②建表后:

删除自增约束:

4.6 FOREIGN KEY约束(外键约束)

关键字:FOREIGN KEY

主表从表:

特点:

添加外键约束:

①建表时:

②建表后:

约束等级:

删除外键约束:

4.7 检查约束(CHECK)

作用:检查某个字段的值是否符合xx要求,一般指的是值的范围。

关键字:CHECK

举例:

4.8 默认值约束(DEFAULT)

作用:

关键字:DEFAULT

给字段添加默认值:

①建表时:

②建表后:

删除默认值:

四、其他数据库对象

常见的其他数据库对象:

1、视图

1.1 概述

1.2 创建视图

创建单表视图:

创建多表联合视图:

基于视图创建视图:

1.3 查看视图

1.4 更新视图数据

一般情况:

不可更新视图:

1.5 修改视图

1.6 删除视图

2、存储过程与函数

2.1 存储过程概述

存储过程与视图、函数的对比:

分类:

2.2 创建存储过程

2.3 调用存储过程

2.4 存储函数的使用

调用存储函数:

对比存储函数和存储过程:

2.5 存储过程和函数的查看、修改、删除

查看:

修改:

删除:

2.6 存储过程优缺点

优点:

缺点:

3、变量、流程控制与游标

3.1 变量

系统变量

分类:

查看系统变量:

修改系统变量的值:

用户变量

分类:

定义会话用户变量:

查看会话用户变量的值:

查看某个未声明变量时将得到null值。

局部变量:

对比会话用户变量和局部变量:

3.2 定义条件与处理程序

定义条件

处理程序

定义处理程序几种方式:

3.3 流程控制

分支结构

①IF

②CASE

循环结构

①LOOP

②WHILE

③REPEAT

跳转语句

①LEAVE

②ITERATE

3.4 游标

使用步骤:

①声明游标:

②打开游标:

③使用游标(从游标中获取数据):

④关闭游标:

总结:

tip:

4、触发器

4.1 概述

4.2 触发器的创建

4.3 查看、删除触发器

4.4 触发器优缺点

优点

①确保数据完整性

②帮助记录操作日志

③在操作数据前对数据进行合法性检查

缺点

①可读性差

②相关数据变更可能导致触发器出错

五、MySQL8Q新特性(部分)

1、窗口函数

适用场景:在需要用到分组统计的结果对每一条记录进行计算的场景下,使用窗口函数更好。

1.1 分类

1.2 语法结构

2、公用表表达式

2.1 普通公用表表达式

2.2 递归公用表表达式

小结:

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

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

相关文章

Linux网络编程: TCP协议首部与可选项简述

一、TCP/IP五层模型 物理层(Physical Layer):物理层是最底层,负责传输比特流(bitstream)以及物理介质的传输方式。它定义了如何在物理媒介上传输原始的比特流,例如通过电缆、光纤或无线传输等。…

蓝桥杯 第3217题 简单的异或难题 C++ Java Python

题目 思路和解题方法 计算给定数组中子数组异或和的问题。它采用了前缀异或的方法来预处理数组,然后对于每个查询,通过异或操作计算子数组的异或和。 读取输入的数组,并计算每个位置的前缀异或和。对于每个查询,读取查询的左右边界…

有哪些好用的客户管理软件?这5款系统好在哪里?

问题链接:有哪些客户管理比较好的软件? - 知乎 从题主的描述来看,问题主要聚集在客户信息管理、销售流程管理、客户优先级管理这几大方面,再回答这个问题之前,我们要先明确几个问题。比如,客户对企业的重要…

蓝桥杯--错误票据

求解答,不知道出现什么问题(虽然知道自己写的挺麻烦的,但是孩子能写出来就不容易了) public class top2 {//错误票据public static void main(String[] args){Scanner scannernew Scanner(System.in);int wscanner.nextInt();String []snew S…

uniapp 开发微信小程序 出现启用组件按需注入问题如何解决

问题描述 在使用uniapp 开发微信小程序,进行上架发布时 代码质量栏 出现启用组件按需注入问题。 虽然现实代码上传成功,但是作为一个吹毛求疵的老猿人,肯定是无法容忍的。那么如何解决呢? 问题解决方案 在uniapp端&#xff0c…

GDB界面调试CGDB快速上手

什么是 CGDB? CGDB 是一个基于 GNU Debugger(GDB)的 Curses(字符用户界面)前端。它提供了一个类似于文本编辑器的界面,可以帮助用户更轻松地执行调试操作,而无需离开终端。 安装 CGDB 首先&a…

【鸿蒙HarmonyOS开发笔记】通知模块之发布进度条类型通知

概述 进度条通知也是常见的通知类型,主要应用于文件下载、事务处理进度显示。HarmonyOS提供了进度条模板,发布通知应用设置好进度条模板的属性值,如模板名、模板数据,通过通知子系统发送到通知栏显示。 目前系统模板仅支持进度条…

HarmonyOS定时器与定时任务

HarmonyOS 的 ArkTS 说白了 就是 TS和JS混合 加了一些新特性的语言 定时任务 就还是用 js代码就OK了 我们代码这样写 Entry Component struct Twox {build() {Row() {Column(){Button("触发定时任务").onClick(()>{setTimeout(()> {console.log(执行)},2000…

【毕设级项目】基于ESP8266的家庭灯光与火情智能监测系统——文末源码及PPT

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

LoRa模块在野外科研与环境保护中的角色:科技守护自然之宝

随着科技的不断发展,LoRa(低功耗广域网)模块在野外科研与环境保护中正发挥着越来越重要的作用。其卓越的通信能力、低功耗特性以及良好的穿透能力,为科学家和环保人士提供了一种先进的技术手段,有助于更深入、更全面地…

MAC IntelliJ IDEA搭建Doris Fe

目录 版本信息 安装环境依赖 拉取源码 下载 Doris 编译依赖 修改系统最大文件句柄数 编译 Doris 配置 Debug 环境 生成 FE 代码 FE模块代码导入 配置 Debug FE 启动 FE 报错问题 版本信息 本次安装的doris版本信息为doris-2.1.0-rc11 IntelliJ IDEA 配置jdk17、m…

优雅的 Markdown

Markdown浅尝 一、勾选框 注意[]前后都要有空格 - [x] 干的漂亮 - [x] 吃饭 - [x] 写代码 - [ ] 睡觉 干的漂亮 吃饭 写代码 睡觉 二、列表 #无序列列表 * 换成 - 也行 * 你 * 你好 * 你好呀 - 你很好啊 你你好你好呀你很好啊 #有序列表 . 后面有个空格 1. 我 2. 是我 3.…

Spring MVC开发小练习

1. 加法计算器 需求:输入两个整数,计算和 约定前后端交互接口: 在开发项目前,根据需求先约定好前后端交互接口,双方按照接口文档进行开发,接口文档一旦写好,尽量不要轻易改变,如果…

python大学生健身爱好者交流网站flask-django-nodejs-php

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于python技术、django/flask框架、B/S机构、Mysql数据…

全面:vue.config.js 的完整配置

vue.config.js是Vue项目的配置文件,用于配置项目的构建、打包和开发环境等。 在Vue CLI 3.0之后,项目的配置文件从原来的build和config目录下的多个配置文件,合并成了一个vue.config.js文件。这个文件可以放在项目的根目录下,用于…

借还款管理神器,高效记录借还款信息,让财务明细不再遗漏

在快节奏的现代生活中,借还款管理成为我们日常财务处理的重要一环。无论是个人生活还是企业运营,都需要一个高效、准确、便捷的方式来记录和追踪借还款信息。传统的记账方式往往容易出错、繁琐且耗时,难以满足现代人的需求。现在,…

HarmonyOS应用开发实战 - Api9 拍照、拍视频、选择图片、选择视频、选择文件工具类

鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。 1.话不多说,先展示样式 2.设计思路 根据官方提供的指南开发工具类,基础的拍照、拍视频、图库选照片、选…

【Python爬虫】将某网页中表格里的十六进制颜色值转换成十进制,再生成新表格

【需求】 在 https://www.cnblogs.com/heyang78/p/5712076.html 上有360种颜色及代码,但很遗憾没有十进制的RGB值,使用时需要自己转换一下,此过程依赖网络或计算器,颇为不便。因此,拟设计一爬虫将原有表格内容取出&am…

dynamic动态数据源编码切换数据源

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 dynamic特性 支持…

D盘满了怎么清理?3种操作方法快速释放空间!

“我平常使用电脑时,为了不让c盘压力太大,会将大部分文件都保存在d盘上,但是我的d盘用着用着就满了,有什么比较简单的d盘清理方法吗?请大家分享一下吧!” 在使用电脑的过程中,D盘作为重要的存储…