MySQL数据库(基础篇二)

一、简单查询

1.1 数据的备份还原

  • 导出:先对数据库进行备份,然后提取备份文件中的sql语句
  • 导入:
    • 方法一:创建和原始数据同名的数据,然后执行从备份文件中导出的sql语句【此方法不要修改sql语句】
    • 方法二:在数据库中直接运行导出的sql语句【此方法往往需要先修改数据库文件】

1.2 简单查询

MySQL的查询操作

  • 单表查询:也就是从一个表中找数据,也叫做 简单查询
  • 多表查询:联合多个表查询数据,也叫做 链接查询
1.2.1 查询的格式

select 查询的内容 from 表名 where 条件

where后面的条件的写法

>                                大于

>=                              大于等于

<                                小于

<=                              小于等于

<>                              不等于

!=                               不等于

between...and...        判断范围

is null                         是空

is not null                   不是空

like                             模糊查询

in                                判断某个字段是否在给定的集合中

1.2.2 通配符%
  • 表示 任意多个任意字符
  • 可以表示0个、1个或者是多个任意字符

案例:查看students表

1、age大于20

        select * from students where age>20

2、age 20-30

        select * from students where age between 20 and 30

3、name是空

        select * from students name is null


4、name包含q

        select * from students where name like "%q%"


5、age 是3 或5 或7

        select * from students where age in (3,5,7)

1.2.3 排序查询格式

select 查询内容 from 表名 where 条件 order by 字段名

案例:

1、将所有学生按照年龄排序

        select * from students order by age


2、将所有学生按照年龄排序,并且是升序

        select * from students order by age asc


3、将所有学生安装年龄排序,并且是降序

        select * from students order by age desc

4、显示所有学生信息,按照年龄和班级id排序,升序显示

        select * from students order by age,classid asc

1.2.4 指定输出几条记录:
  • 默认输出所有符合条件的记录
  • limit 数字

格式:select 查询内容 from 表名 where 条件 order by 字段名 limit 数字

1.2.5 聚合函数
  • sum()        求和
  • avg()         求平均值
  • max()        求最大值
  • min()         求最小值
  • count()       统计记录条数

案例:

1、计算所有学生的年龄和

        select sum(avg) from students

1.2.6 去重:去除重复的字段

关键字:distinct

案例:

1、将年龄小于50的用户,安装年龄排序,并且去除重复的字段

select distinct age from students where age<50 order by age

1.2.7 分组

group by 字段

分组后加条件

having 

完整的查询格式

select * from 表名 where 条件 order by 字段 limit 数字 group by 字段 having 条件

二、查询进阶

2.1 链接查询

将两张或者多张表联合起来进行查询,这就是链接查询【join】,链接查询又分为:

  • 交叉链接
    • 表中的每一行,分别和其他表的每一行,组成一个新的行
    • 新表的行数是两个表的行数相乘,列数是两个表的列数相加
  • 自然连接
    • 将多个表中,符合条件进行链接
  • 外连接
    • 左外连接
    • 右外链接
2.2 交叉链接的结果
  • 得到笛卡尔积表
  • 这个表中有大量的无用数据

select * from 表1,表2;

笛卡尔积表,行数是两个表的行数相乘,列数是两个表的列数相加

2.3 自然链接的结果
  • 在交叉链接的基础上,通过加条件,可以得到自然链接

select * from 表1,表2 wheere 表1.字段=表2.字段

2.4 字段别名
  • 给字段取一个新的名字
  • 显示结果中,字段名会直接用新的名字显示出来

select 字段名 as 新名字 from 表名

2.5 表别名

select 字段 from 表名 as 新名

2.6 使用自然链接存在的问题:
  • 会导致数据丢失
  • 解决方法:用左外链接、右外链接
    • 左表:前面的
    • 右表:后面的
2.7 左外链接
  • 显示结果以左表为准
  • 也就是说,左表中的数据会全部出现,右表中的数据,有就显示,没有就显示为空

select * from 左表 left join 右表 on 条件

2.8 右外链接
  • 显示结果以右表为准
  • 右表中的数据会全部出现,左表中的数据,有就显示,没有就显示为空

select * from 左表 right join 右表 on 条件

三、外键约束

外键约束是数据库中用于维护数据完整性的一种重要机制。

作用:

  • 维护两个表之间的关联关系,确保数据的一致性和完整性。

概念:

  • 主键:是用于在一个表中唯一标识一个字段
  • 外键:外键是另外一个表的主键,通过使用外键,可以将两个表关联起来

表与表之间的关系的类型:

  • 一对一
  • 一对多
  • 多对多

案例:

# 创建表tb2
create table tb2(
classid int primary key,    # 第一个字段是classid,是主键
name char(30)               # 第二个字段是name
)# 创建表tb1
create table tb1(
id int primary key,         # 第一个字段是id,是主键
name char(30),              # 第二个字段是name
classid int,                # 第三个字段是classid,是整数
foreign key(classid) references tb2(classid);    # 将classid这个字段转换成外键,指向表tb2的classid这个字段

这个外键约束,可以确保在插入或更新tb1表中的数据时,classid字段的值必须在tb2表的classid字段中存在。这样可以保证数据的一致性和完整性,避免出现无效的外键值。

四、视图

视图:view

  • 视图可以认为是一张表
  • 这个表是存在内存中的虚表,断电就会消失

作用

  • 通过视图,可以让用户只能访问数据库中的一部分数据(给用户授权)

格式

        create view 视图名 as select 语句

案例:给用户user3进行授权,让用户只可以访问id小于5的数据

# 第一步:创建视图,视图中包含的是id小于5的数据
create view v1 as select * from students where stuid<5;# 第二步:查看当前系统中的表,会发现多一个叫做v1的表,这个表其实就是视图
show tables;# 第三步:给用户user3授权,让user3仅仅可以访问视图中的数据
# 授权的格式:grant 权限 on 库名.表名 to 用户名@主机 identified by "密码";
grant all on hellodb.v1 to "user3"@"localhost" identfied by "123";# 刷新授权表
flush privileges

五、事务

简介:

  • 将多个sql语句,组合成一个整体,这个整体就是一个事务,事务中的所有语句要么都执行,要么都不执行
  • 事务中的语句,如果只有部分执行成功,那么就需要将这个事务进行回滚操作
    • 回滚:将数据恢复到执行操作之前的状态
  • 通过使用事务,可以保证数据的一致性

事务的操作:

  • 提交事务
  • 回滚事务

提交事务:

  • 让事务中多个语句,真正的生效
  • 如果使用了事务,那么在事务提交之前,其他用户是看不到事务中的操作的

回滚事务:

  • 恢复到执行语句之前的状态

操作的命令格式:

begin           启动事务

commit        提交事务,提交之后,事务自动结束

rollback       回滚事务,回滚之后,事务自动结束

注意:

  • 一般情况下,在MySQL客户端中,每个sql语句,都是一个单独的事务,而且事务会自动提交
  • 但是,在后期的python中,需要手动去提交/回滚事务的

六、扩展命令

6.1 union

作用:将两个sql语句执行结果连接起来一起显示

格式:【sql语句1】 union 【sql语句2】

6.2 concat (拼接)

作用:将两个字段输出到一块

格式:select concat(字段名,字段名) from 表名

6.3 length (返回长度)

作用:返回查询结果长度

格式:select length(字段名) from 表名

6.4 group_concat(拼接字符串)

作用:输出到一行

格式:select group_concat(字段名,拼接的字符) from 表名

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

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

相关文章

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(四)

概览 从上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)我们学到了 Swift 中完全自己撸码实现 SwiftHook 类似功能的基本思路、提出了两个“难关”,并首先解决了其中第一道难题。 在这一篇中,我们将会继续克服各种“艰难险阻”,…

Spark spark-submit 提交应用程序

Spark spark-submit 提交应用程序 Spark支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式&#xff0c;易于构建集群。Apache Mesos—通用的集群管理&#xff0c;可以在其上运行Hadoop MapReduce和一些服务应用。Hadoop YARN—Hadoop2中的资源管理器。 注意&…

STM32微控制器的中断优先级设置对系统性能有何影响?

STM32微控制器的中断优先级设置对系统性能有着显著的影响。正确配置中断优先级可以确保关键任务得到及时响应&#xff0c;提高系统的实时性和可靠性。相反&#xff0c;如果中断优先级设置不当&#xff0c;可能会导致系统响应延迟&#xff0c;甚至出现死锁等问题。本文将详细探讨…

python第三方库的安装,卸载和更新,以及在cmd下pip install安装的包在pycharm不可用问题的解决

目录 第三方库pip安装&#xff0c;卸载更新 1.安装&#xff1a; 2.卸载 3.更新 一、第三方库pip安装&#xff0c;卸载更新 1.安装 pip install 模块名 加镜像下载&#xff1a;pip install -i 镜像网址模块名 常用的是加清华镜像&#xff0c;如 pip install -i https://pyp…

Web前端—浏览器渲染原理

浏览器渲染原理 浏览器渲染原理渲染时间点渲染流水线1. 解析HTML—Parse HTML2. 样式计算—Recalculate Style3. 布局—Layout4. 分层—Layer5. 绘制—Paint6. 分块—Tiling7. 光栅化—Raster8. 画—Draw完整过程 面试题1. 浏览器是如何渲染页面的&#xff1f;2. 什么是 reflow…

Golang获取音视频时长信息

文章目录 一、工具简介二、使用golang获取时间长 一、工具简介 这些工具都是与多媒体处理和流媒体相关的开源工具&#xff0c;它们都属于 FFmpeg 多媒体框架。 FFmpeg 是一个用于处理多媒体内容&#xff08;音频、视频、图像等&#xff09;的命令行工具。它可以执行各种各样…

每日一题 --- 两两交换链表中的节点[力扣][Go]

两两交换链表中的节点 题目&#xff1a;24. 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&a…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生&#xff0c;为了更好的使校园考研有一个更好的环境好好的学习&#xff0c;建议一个好的校园网站&#xff0c;是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…

【boost_search搜索引擎】2.正排索引和倒排索引

首先&#xff0c;要制作搜索引擎&#xff0c;我们首先要了解&#xff0c;什么是正排索引&#xff0c;什么是倒排索引&#xff0c;这是一个搜索引擎的关键。 1.正排索引 正排索引&#xff0c;其实就是我们的每一个文档&#xff0c;对应一个文档id。 正如vector容器一样&#xf…

【Docker】常用命令 docker info

文章目录 什么是docker info命令基本用法实际示例查看Docker系统信息 输出格式常用选项--format&#xff1a;自定义输出格式-f, --format&#xff1a;指定输出模板文件 总结 在Docker中&#xff0c; docker info命令是用于查看Docker系统信息的主要命令之一。本文将深入探讨 …

计算机视觉研究方向

计算机视觉是一个广泛且快速发展的领域&#xff0c;涵盖了多种研究方向和技术。主要的研究方向包括图像处理、目标检测与识别、图像生成、三维视觉、行为识别、深度学习与计算机视觉、多媒体分析、视频理解、风格化、全向视觉传感器等。这些研究方向和技术不断进步&#xff0c;…

Python+django+vue开发的家教信息管理系统

一直想做一款管理系统&#xff0c;看了很多优秀的开源项目但是发现没有合适的。 于是利用空闲休息时间开始自己写了一套管理系统。 功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Pythondjango进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和…

go实现TCP服务器

package main import ( "fmt" "net" ) func main() { // 监听TCP端口 listener, err : net.Listen("tcp", "localhost:50000") if err ! nil { fmt.Println("Error listening:", err.Error…

Arduino智能家居

文章目录 一、接线框图1、下载fritzing 二、Arduino IDE 下载三、实现代码 一、接线框图 1、下载fritzing https://github.com/fritzing/fritzing-app/releases打开的软件界面如下&#xff1a; 二、Arduino IDE 下载 官网地址 P.S. 如果upload代码过程中出现cant open de…

2024年阿里云轻量应用服务器优惠价格_2核2G_2核4G报价

阿里云轻量应用服务器2核2G和2核4G配置优惠价格表&#xff0c;轻量2核2G3M带宽61元一年&#xff0c;轻量2核4G4M带宽165元1年&#xff0c;均不限制月流量&#xff0c;阿里云活动链接 aliyunfuwuqi.com/go/aliyun 活动打开如下图&#xff1a; 阿里云轻量应用服务器价格 61元/年…

力扣刷题之21.合并两个有序链表

仅做学习笔记之用。 题目&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xf…

MySQL数据库基本操作(增删改查)与用户授权

前言 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系数据库系统的语言。SQL的设计目标是提供一种简单、直观的语言&#xff0c;使得用户可以通过编写SQL语句来处理他们想要的数据和操作。 目录 一、结构介绍 1. 查看信…

自定义android音频焦点

接着上一篇音频策略的分析&#xff0c;接下来看下音频焦点 音频焦点机制是Android系统提供的一种约定&#xff1a; 1 播放声音前申请音频焦点&#xff0c;播放结束的时候释放音频焦点&#xff0c; 2 获得焦点才能开始播放&#xff0c;失去音频焦点应该暂停播放或者降低音量 一…

使用Django实现信号与消息通知系统【第154篇—Django】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Django实现信号与消息通知系统 在Web应用程序中&#xff0c;实现消息通知系统是至关重…

华为数通 HCIP-Datacom H12-831 题库补充

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 缺省情况下&#xff0c;PIM报文的IP协议号是以下哪一项&#xff1f; A&#xff1a;18 B&#xff1a;59 C&#xff1a;103 D&#xff1a;9 答案&a…