【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的时候没有指定条件,就会把所有的都删除。效果和删表差不多了。

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

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

相关文章

Java多线程——锁(锁的基本概念、种类、特性以及与其他概念的关系)-面试题+答案——第10期

锁是多线程编程中重要的同步机制&#xff0c;涉及到线程的互斥、协作等方面。 什么是锁&#xff1f;在多线程编程中为什么需要锁&#xff1f; 答案&#xff1a; 锁是一种同步机制&#xff0c;用于控制多个线程对共享资源的访问。在多线程编程中&#xff0c;需要锁来确保多个线程…

1.Linux基础命令

1.打开命令窗口 crtlaltt 2.显示当前目录中的文件 ls 3.创建目录/文件夹 mkdir 文件名 4.进入文件夹 cd 目录 cd . .回到上一级目录 cd . ./. ./回到上上级目录 5.创建文本 gedit 文本名 6.删除文件 删除文件夹 rm -r 文件名&#xff08;强制删除&#xff09; 删除文本 rm…

python -opencv 图像锐化

python -opencv 图像锐化 图像锐化其实&#xff0c;是一种增强图片对比度的技术&#xff0c;我们可以通过计算图像的导数&#xff0c;把导数绝对值数值大于零的数值加回原图像&#xff0c;通过这种方法&#xff0c;可以增强图像的对比度。 实现代码如下&#xff1a; import c…

3、点亮一个LED

新建工程 project—>New uVision Project LED介绍 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&#xff1a;LED 用途&#xff1a;照明、广告灯、指引灯 电路图分析 进制的转换 生成下载文件&#xff1a; 代码 //导包 #inclu…

【从浅识到熟知Linux】基本指定之find、grep、head和tail

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;一篇又一篇&#xff0c;学写越上头。 文章前言&#xff1a;本文介绍find、grep、head和tail指令用法并给出示例和截图。 文章目录 find基本…

大中小协作 共筑科学梦——华中科技大学附属花城中学举办首届科技节

为普及科学知识&#xff0c;张扬科学精神&#xff0c;创设浓郁的科学氛围&#xff0c;11月24日&#xff0c;华中科技大学附属花城中学举办了以“走近科学&#xff0c;触碰未来”为主题的首届科技节暨科创文化展示周活动。学生们在学习中感受科技的魅力&#xff0c;在“玩”中感…

实现简单的操作服务器和客户端(上)

一、说明 描述:本教程介绍如何使用 simple_action_server 库创建斐波那契动作服务器。此示例操作服务器生成斐波那契序列,目标是序列的顺序,反馈是计算的序列,结果是最终序列。 内容 创建操作消息编写一个简单的服务器 代码

【LM、LLM】浅尝二叉树在前馈神经网络上的应用

前言 随着大模型的发展&#xff0c;模型参数量暴涨&#xff0c;以Transformer的为组成成分的隐藏神经元数量增长的越来越多。因此&#xff0c;降低前馈层的推理成本逐渐进入视野。前段时间看到本文介绍的相关工作还是MNIST数据集上的实验&#xff0c;现在这个工作推进到BERT上…

[极客大挑战 2019]Secret File1

[极客大挑战 2019]Secret File1 在bp里面发现secr3t.php 将secr3t.php 直接加在网站后面&#xff0c;发现了有关flag的信息&#xff0c;一个flag.php文件 在遇到flag.php时候&#xff0c;联想到php伪协议&#xff0c;构造伪协议方式 secr3t.php?filephp://filter/readconver…

Java入门基础:浅显易懂 while

文章目录 前言一、布尔表达式二、while三、语法四、示例 前言 在开发过程中不管是 while 语句还是其他语句都会经常用到布尔表达式&#xff0c;所以在学习 while 之前需要先明白什么是布尔表达式&#xff1f; 一、布尔表达式 布尔表达式只有2种结果&#xff1a;true / false 看…

0002Java程序设计-springboot在线考试系统小程序

文章目录 **摘 要****目录**系统实现开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 本毕业设计的内容是设计并且实现一个基于springboot的在线考试系统小程序。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&…

FFmpeg零基础学习(一)——初步介绍与环境搭建

目录 前言正文一、开发环境二、搭建环境三、测试代码四、调用库的介绍End、遇到的问题2、Qt 在线安装容易报错&#xff0c;断开问题1、在线安装QMaintainTool很慢2、Qt5.15 无法调试FFmpeg 参考 前言 FFmpeg是一个开源的跨平台多媒体处理框架&#xff0c;它包含了一组用于处理…

Java入门基础:浅显易懂 for

文章目录 前言一、布尔表达式二、for三、语法四、示例 前言 在开发过程中不管是 for 语句还是其他语句都会经常用到布尔表达式&#xff0c;所以在学习 for 之前需要先明白什么是布尔表达式&#xff1f; 一、布尔表达式 布尔表达式只有2种结果&#xff1a;true / false 看看以下…

echats autoresize使用版本

// 最终安装版本 // “echarts”: “^5.3.2”, // “vue-echarts”: “^6.0.3”, // “vue/composition-api”: “^1.6.1”,

【图解系列】一张图带你了解 DevOps 生态工具

一张图带你了解 DevOps 生态工具 ✅ 协作&#xff08;Collaborate&#xff09;&#xff1a;JIRA、Confluence 大家肯定不陌生了&#xff0c;我之前也写过利用 Jekyll 搭建个人博客的帖子。✅ 构建&#xff08;Build&#xff09;&#xff1a;常用的 SCM&#xff08;Software Con…

掌握未来技术趋势,成为领先者——深度解析2023年技术热点

掌握未来技术趋势&#xff0c;成为领先者——深度解析2023年技术热点 摘要&#xff1a;本文探讨当前最热门的技术趋势。我们将介绍人工智能、大数据、区块链、5G等前沿技术&#xff0c;并阐述它们如何改变我们的生活。最后&#xff0c;我们将总结如何利用这些技术趋势&#xf…

2024年天津天狮学院专升本计算机科学与技术《数据结构》考试大纲

2024年天津天狮学院计算机科学与技术专业高职升本入学考试《数据结构》考试大纲 一、考试性质 《数据结构》专业课程考试是天津天狮学院计算机科学与技术专业高职升本入学考 试的必考科目之一&#xff0c;其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试…

Word打印模板,打印效果更出众丨三叠云

Word打印模板 路径 表单设置 >> 打印设置 功能简介 新增「Word打印模板」(beta版)。 Word 打印模板是指&#xff0c;在 Word 文档的基础上插入表单中的字段代码&#xff0c;打印时即可根据 Word 文档的格式&#xff0c;对表单数据进行个性化打印。 Word 打印模板能…

详解Js数据类型种类以及判断数据类型的四种方法

详解Js数据类型相关 数据类型相关有哪些数据类型?null和undefined的区别是什么&#xff1f;NaN是什么?如何判断一个变量是否为NaN什么是包装对象&#xff1f;数据类型实例 JavaScript中如何判断一个变量的数据类型&#xff1f;typeOfinstanceoftoStringconstructor 数据类型相…

Java入门基础:浅显易懂 switch

文章目录 前言一、switch二、语法三、示例四、case穿透示例 前言 switch 在开发过程中其实并不常用&#xff0c;95%以上都是用 if 而不是 switch。因为 switch 能做的 if 能做&#xff0c;switch 不能做的 if 也能做&#xff0c;而反过来就不行了。所以对于 switch 能够看懂代码…