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

【MySQL】数据库基础操作

在这里插入图片描述

  • 👑专栏内容:MySQL
  • ⛪个人主页:子夜的星的主页
  • 💕座右铭:前路未远,步履不停

目录

  • 一、数据库操作
    • 1、创建数据库
    • 2、查看所有数据库
    • 3、选定指定数据库
    • 4、删除数据库
  • 二、数据表操作
    • 1、创建数据表
    • 2、查看所有表
    • 3、查看指定表的结构
    • 4、删除表
  • 三、增删改查
    • 1、新增
      • 指定列插入
      • 插入多个记录
      • 两者区别
    • 2、查询
      • 全列查询
      • 指定列查询
      • 查询字段为表达式
      • 查询时去重
      • 排序查询
      • 条件查询
    • 3、修改
      • 多列修改
      • 排序修改
    • 4、删除


一、数据库操作

1、创建数据库

create database  数据库名;
  • create,database 相当于关键字
  • SQL 关键字不区分大小写
  • 数据库名不能重复
create database 数据库名 character set utf8;
  • 创建数据库的时候,指定字符集

2、查看所有数据库

show databases;

3、选定指定数据库

use 数据库名;

一旦选定某个指定数据库,后续操作,就都是针对该数据库展开。

4、删除数据库

drop database 数据库名;

注意:drop操作是非常危险的,一旦删掉数据库,数据库中的所有数据都没了。

二、数据表操作

1、创建数据表

create table 表名(列名 类型 , 列名 类型.....);

重点了解如下数据类型:
intbigintvarchardoubledecimaldatetime
创建表的时候,需要把表的类型确定好,后续插入的数据也要遵循当前类型。

create table product(name varchar(30),price int ,inventory int , description varchar(30)
);

2、查看所有表

show tables;

3、查看指定表的结构

desc 表名;

image.png
Field:字段。表示一行里面有几列
Type:每一列的类型
NULL:该列是否允许为空,YES 就是允许为空(不填)
Default:不填的时候的默认值
Extra:额外的补充信息

4、删除表

drop table 表名;

删除表,相当于删除整个表的所有数据。也是一个危险的操作。

三、增删改查

1、新增

insert into 表名 values (值,值,值...);
  • SQL 中 都行。
  • 大多数没有字符类型的编程语言,都是允许单引号和双引号来表示字符串,并且单双引号的效果是等价的。
  • 注意:要想插入中文,必须在创建数据库的时候,指定 charset utf8

指定列插入

insert into book(name) values ('三国演义'); 

使用 ()来标识当前要针对那些列进行插入,多个列名之间可以用,来分割。

插入多个记录

insert into book values (10,'a'),(12,'b')....;

两者区别

一次插入三条记录和分三次插入,每次插入一条记录有什么区别???

MySQL 是一个客户端服务器结构的程序。



每次执行SQL都涉及到了客户端和MySQL服务器之间的通信!所以,每一次的网络交互都有成本,所以多行数据插入是优于单行多次插入的!!

2、查询

全列查询

select *from 表名;
  • * 是通配符,可以代指任意的列。


select * 一个非常危险的操作!
因为select * 会查询所有的数据。如果查询的数据非常非常多,那么就会导致这个服务器一瞬间,硬盘的带宽和网卡的带宽都被吃满了。

指定列查询

手动指定查询某一列或者某几列。

select 列名,列名....from 表名;
select name,author from book;

查询字段为表达式

查询的同时,可以进行计算。

select name,price-30 from book;

MySQL是一个客户端 服务器 结构的程序!!我们看到的客户端显示的结果是一个“临时表”,select 操作不管怎么写,都不会影响到数据库服务器硬盘上存储的原始数据。
查询结构的列名和表达式是一致的,不利于用户阅读。所以,我们在查询的时候,可以给表达式指定别名。

select name,price-30 as '价钱-30' from book;

查询时去重

把重复的行去掉,只保留一份。

select distinct 列名 from 表名;

排序查询

对查询到的结果进行排序。MySQL是一个客户端 服务器 结构的程序,我们看到的客户端显示的结果是一个“临时表”。对于数据库服务器上的原始的数据没有任何的顺序上的影响。

-- 升序排序(asc可以不写)
select 列名 from 表名 order by 列名 asc;
-- 降序排序
select 列名 from 表名 order by 列名 desc;
-- 多列排序(多列排序有先后顺序)
-- 先排前面的。前面的一样再排后面的
select 列名 from 表名 order by 列名,列名....asc;

image.png
默认为升序排序,如果想要降序排序,就在列名后面加上 desc

select 列名 from 表名 order by 列名 desc;

image.png
如果SQL中,没有指定 order by,此时我们的代码中就不应该依赖结果临时表的顺序!MySQL并不承诺,这个不带order by的查询结果是带有一定顺序的。

条件查询

查询的同时,制定一个筛选条件,把符合条件的结果保留,不符合的就剔除掉。
比较运算符

运算符解释
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=,<>不等于
between a0 and a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
in(option,…)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是NULL
is not NULL不是NULL
like模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字

逻辑运算符

运算符解释
and多个条件必须都为 TRUE(1),结果才是 TRUE(1)
or任意一个条件为 TRUE(1), 结果为 TRUE(1)
not条件为 TRUE(1),结果为 FALSE(0)
  • 有些列可以不填,不填就相当于 NULL
  • where 条件可以使用表达式,但不能使用别名。
  • and 的优先级高于 or,在同时使用时,需要使用小括号 () 包裹优先执行的部分。
select name,price from book where price < 89;

image.png
理解查询语句执行的过程:

  1. 服务器需要先遍历表中的每一个记录
  2. 针对当前记录,带入条件,看是否成立
  3. 如果条件成立,则将这一结果加入结果集,返回给客户端。否则,跳过该结构。
-- 查询英语不及格的同学及英语成绩 ( < 60 )
select name, english from exam_result where english < 60;
-- 查询语文成绩好于英语成绩的同学
select name, chinese, english from exam_result where chinese > english;
-- 查询总分在 200 分以下的同学
select name, chinese + math + english as total from exam_result where chinese + math + english < 200;
-- 查询语文成绩大于80分,且英语成绩大于80分的同学
select * from exam_result where chinese > 80 and english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
select * from exam_result where chinese > 80 or english > 80;
-- 观察and 和 OR 的优先级:
select * from exam_result where chinese > 80 or math>70 and english > 70;
select * from exam_result where (chinese > 80 or math>70) and english > 70;
-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
select name, chinese from exam_result where chinese between 80 and 90;
-- 使用 and 也可以实现
select name, chinese from exam_result where chinese >= 80 and chinese <= 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
select name, math from exam_result where math IN (58, 59, 98, 99);
-- 使用 OR 也可以实现
select name, math from exam_result where math = 58 OR math = 59 OR math = 98 OR math = 99;
-- % 匹配任意多个(包括 0 个)字符
select name from exam_result where name like '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
select name from exam_result where name like '孙_';-- 匹配到孙权
-- 查询 qq_mail 已知的同学姓名
select name, qq_mail from student where qq_mail is not null;
-- 查询 qq_mail 未知的同学姓名
select name, qq_mail from student where qq_mail IS NULL;

3、修改

update 表名 set 列名 =where 条件;

进行修改,要明确一些重要的信息。

  • 改那个表?
  • 改这个表的那个列?
  • 改这个表的那写行?
update book set price = 80 where name = '1984';
-- 把book表中的price列中1984这一行改成80
-- 这里面的 = 和上面的查询不一样,是赋值而不是相等

select 支持的各种条件,对于 update 来说也是同样生效的。
update 可以理解为先查后改。

update book set price = 0;

update 后面不加其他操作会出现上面??
会把所有的数据都修改掉!!非常非常非常危险!!
【注意】

  • update 是一个非常危险的操作。

多列修改

update 表名 set 列名 =,列名 =where 条件;
update book set price = 80, class = '西方小说' where name = '1984';

排序修改

update 表名 set 列名 = 列名 + xxx  order by 排序条件 ;
update book set price = price - 20 order by price limit 3;
-- 把price最低是三位再减20

4、删除

delete from 表名 where 条件;
-- 直接删除符合条件的行
delete from book where name = '了不起的盖茨比';

删除是按行来删除的,无法直接删除某些列。
要想删除列,可以通过 update 来更新为 null
select 支持的各种条件,对于 delete 来说也是同样生效的。
如果在 delete的时候没有指定条件,就会把所有的都删除。效果和删表差不多了。

相关文章:

【MySQL】数据库基础操作

&#x1f451;专栏内容&#xff1a;MySQL⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、数据库操作1、创建数据库2、查看所有数据库3、选定指定数据库4、删除数据库 二、数据表操作1、创建数据表2、查看所有表3、…...

2023年微软开源八个人工智能项目

自2001年软件巨头微软前首席执行官史蒂夫鲍尔默对开源&#xff08;尤其是Linux&#xff09;发表尖刻言论以来&#xff0c;微软正在开源方面取得了长足的进步。继ChatGPT于去年年底发布了后&#xff0c;微软的整个2023年&#xff0c;大多数技术都是面向开发人员和研究人员公开发…...

指定训练使用的GPU个数,没有指定定gpu id,训练在其中两个gpu上执行,但是线程id分布在所有4个gpu上,为什么?如何解决?

目录 问题背景 1 线程id分布在所有gpu&#xff08;包括未启用的gpu&#xff09;上原因&#xff1a; 2 在解决这个问题时&#xff0c;可以采取以下步骤&#xff1a; 3 修正深度学习框架默认使用所有可见 GPU 的问题 1 TensorFlow&#xff1a; 2 PyTorch&#xff1a; 3 K…...

PPT 遇到问题总结(修改页码统计)

PPT常见问题 1. 修改页码自动计数 1. 修改页码自动计数 点击 视图——>幻灯片母版——>下翻找到计数页直接修改——>关闭母版视图...

Matplotlib子图的创建_Python数据分析与可视化

Matplotlib子图的创建 plt.axes创建子图fig.add_axes()创建子图 plt.axes创建子图 前面已经介绍过plt.axes函数&#xff0c;这个函数默认配置是创建一个标准的坐标轴&#xff0c;填满整张图。 它还有一个可选的参数&#xff0c;由图形坐标系统的四个值构成。这四个值表示为坐…...

VM虚拟机中Ubuntu14.04安装VM tools后仍不能全屏显示

1、查看Ubuntu所支持的分辨率大小。 在终端处输入&#xff1a; xrandr&#xff0c;回车 2、输入你想设置的分辨率参数。 我设置的为1360x768&#xff0c;大家可以根据自己的具体设备设置。 在终端输入&#xff1a;xrandr -s 1360x768 注意&#xff1a;这里1360后边是字母 x 且…...

聊聊httpclient的connect

序 本文主要研究一下httpclient的connect HttpClientConnectionOperator org/apache/http/conn/HttpClientConnectionOperator.java public interface HttpClientConnectionOperator {void connect(ManagedHttpClientConnection conn,HttpHost host,InetSocketAddress loca…...

处理视频的新工具:UniFab 2.0.0.4 Crack

UniFab这是一个用于处理视频的新工具&#xff0c;可以帮助您像专业人士一样获得结果&#xff0c;事实上&#xff0c;它可以确保在项目的任何设备上完美播放&#xff0c;所以&#xff0c;来认识一下 UniFab - 一款功能强大且方便的视频编辑器和转换器&#xff0c;但另一方面&…...

设计模式—开闭原则

1.背景 伯特兰迈耶一般被认为是最早提出开闭原则这一术语的人&#xff0c;在他1988年发行的《面向对象软件构造》中给出。这一想法认为一旦完成&#xff0c;一个类的实现只应该因错误而修改&#xff0c;新的或者改变的特性应该通过新建不同的类实现。新建的类可以通过继承的方…...

【开源】基于Vue和SpringBoot的学校热点新闻推送系统

项目编号&#xff1a; S 047 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S047&#xff0c;文末获取源码。} 项目编号&#xff1a;S047&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新…...

Java,File类与IO流,处理流:缓冲流、转换流、数据流、对象流

目录 处理流之一&#xff1a;缓冲流 四种缓冲流&#xff1a; 缓冲流的作用&#xff1a; 使用的方法&#xff1a; 处理文本文件的字符流&#xff1a; 处理非文本文件的字节流&#xff1a; 操作步骤&#xff1a; 处理流之二&#xff1a;转换流 转换流的使用&#xff1a; …...

【电路笔记】-分压器

分压器 文章目录 分压器1、概述2、负载分压器3、分压器网络4、无功分压器4.1 电容分压器4.2 感应分压器 5、总结 有时&#xff0c;需要精确的电压值作为参考&#xff0c;或者仅在需要较少功率的电路的特定阶段之前需要。 分压器是解决此问题的一个简单方法&#xff0c;因为它们…...

音视频5、libavformat-3

8、设置I/O中断机制 在 demux 时,我们首先需要调用 avformat_open_input() 打开一个输入,然后循环调用 av_read_frame() 函数来读取输入。 我们要注意的是: avformat_open_input() 和 av_read_frame() 都是阻塞函数,如果不能读取到足够的数据,那么它们将会一直阻塞…...

前端 HTML 和 JavaScript 的基础知识有哪些?

前端开发是Web开发的一个重要领域&#xff0c;涉及到HTML&#xff08;Hypertext Markup Language&#xff09;和JavaScript两个主要的技术。HTML用于定义网页的结构和内容&#xff0c;而JavaScript用于实现网页的交互和动态效果。以下是前端HTML和JavaScript的基础知识&#xf…...

Android平台GB28181设备接入模块开发填坑指南

技术背景 为什么要开发Android平台GB28181设备接入模块&#xff1f;这个问题不再赘述&#xff0c;在做Android平台GB28181客户端的时候&#xff0c;媒体数据这块&#xff0c;我们已经有了很好的积累&#xff0c;因为在此之前&#xff0c;我们就开发了非常成熟的RTMP推送、轻量…...

我叫:希尔排序【JAVA】

1.我兄弟存在的问题 2.毛遂自荐 希尔排序提希尔(Donald Shell)于1959年提出的一种排序算法。 希尔排序&#xff0c;也称递减增量排序算法&#xff0c;是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的&…...

Spring Cloud Gateway 网关跨域问题解决

0、版本说明 Spring Cloud Version&#xff1a;Spring Cloud 2021.0.4 Spring Cloud Gateway Version&#xff1a;3.1.4 Spring Boot Version&#xff1a;2.6.11 1、网关跨域问题说明 关于跨域的相关原理和理论&#xff0c;网上有大量文章对此进行说明&#xff0c;因此博主在这…...

C++局域网从服务器获取已连接用户的列表(linux to linux)

目录 服务器端 代码 客户端 代码解析 服务器端 原理 遇到的阻碍以及解决办法 客户端 原理 遇到的阻碍以及解决办法 运行结果截图 总结 服务器端 代码 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet…...

c++11新特性篇-可调用对象包装器, 绑定器

可调用对象包装器, 绑定器 可调用对象 可调用对象是指在 C 中能够像函数一样被调用的实体。它包括了多种类型的对象&#xff0c;使得它们能够像函数一样被调用&#xff0c;可以是函数、函数指针、函数对象、Lambda 表达式等。在C中&#xff0c;具有以下特征之一的实体都被认为…...

论文阅读:“Appearance Capture and Modeling of Human Teeth”

文章目录 AbstractIntroductionMethod OverviewTeeth Appearance ModelEnamelDentinGingiva and oral cavity Data AcquisitionImage captureGeometry capture ResultsReferences Abstract 如果要为电影&#xff0c;游戏或其他类型的项目创建在虚拟环境中显示的人类角色&#…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...