MySQL之基本查询(一)(insert || select)

news2024/9/24 14:07:11

目录

一、表的增删查改

二、表的增加insert

三、表的读取select

where 条件子句

结果排序

筛选分页结果


一、表的增删查改

我们平时在使用数据库的时候,最重要的就是需要对数据库进行各种操作。而我们对数据库的操作一般来说也就是四个操作,CRUD : Create(创建,增), Retrieve(读取,查),Update(更新,改),Delete(删除,删)。

二、表的增加insert

语法:insert的作用就是向表中插入记录。

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...

下面我们先创建一张学生信息表:

mysql> create table stu(
    -> id int unsigned primary key auto_increment,
    -> sn int not null unique comment '学号',
    -> name varchar(20) not null,
    -> qq varchar(20)
    -> );

 

单行数据的全列插入 

mysql> insert into stu values (1,1000,'张三',123456);

对于全列插入,我们不指定要插入的列,就表示要对所有列进行数据的插入。

多行数据的指定列插入 

value_list数量必须和指定列数量及顺序一致。 

mysql> insert into stu (id,sn,name,qq) values (3,1002,'王五',12347),(4,1003,'赵六',123),(5,1004,'田七',120);

插入否则更新

我们在进行数据插入时,由于主键或者唯一键对应的值已经存在而导致插入失败,此时有了主键或者唯一键的冲突,我们可以考虑对表中的值进行更新。

可以选择性的进行同步更新操作,语法:

INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...

比如插入了下面的数据发生了主键和唯一键的冲突: 

而我们可以对冲突的主键或者唯一键的相关记录进行更新。

mysql> insert into stu (id,sn,name,qq) values (6,1004,'ef',213432432) on duplicate key update name='ef';

 

注:0 row affected:表中有冲突数据,但冲突数据的值和 update 的值相等。
1 row affected:表中没有冲突数据,数据被插入。
2 row affected:表中有冲突数据,并且数据已经被更新。

替换

除了上面发生主键或者唯一键冲突后,进行更新的操作外,我们也可以直接使用我们想插入的数据对原数据进行替换。

语法:

主键 或者 唯一键 没有冲突,则直接插入。
主键 或者 唯一键 如果冲突,则删除后再插入 。

replace into 表名 (value_list) values (value);

原数据:

我们替换掉主键id为5的数据:

mysql> replace into stu (id,sn,name,qq) values (5,1004,'德布劳内',123214);

1 row affected:表中没有冲突数据,数据被插入。
2 row affected:表中有冲突数据,删除后重新插入。

查询最新数据:

三、表的读取select

使用数据库时,用户对于数据库中的数据进行读取查询的操作也非常重要。我们通常使用select来进行读取查询的操作。

语法:

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

我们先创建一张学生的成绩信息表:

CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);

然后我们向其中插入一些测试数据:

全列查询

全列查询就是对表中的所有数据进行查询并显示出来。 

select * from 表名;

 

通常情况下不建议使用 * 进行全列查询:1、一张表一定是拥有大量的数据的,查询的列越多,意味着需要传输的数据量越大。2、可能会影响到索引的使用。 

指定列查询

在查询时,我们可以将 * 换成我们想要查询的若干个列的名称,以进行指定列查询。

查询字段为表达式 

select查询的字段除了可以是单独的列名称外,也可以是表达式。

当然,我们还可以对查询的字段进行重命名:

语法:as可以省略。

SELECT column [AS] alias_name [...] FROM table_name;

 

对查询结果去重 

对于下面的查询,如果我们想要查找同学的数学成绩有哪些分数,那么我们就不需要相同的分数,所以就需要对数学成绩进行去重:

我们发现,数学成绩为98的同学有两个,所以需要去重。

语法:

select distinct math from exam_result;

where 条件子句

where子句的作用,就是根据where后面的条件在表中进行特定的查找。

在MySQL中,其也有属于自己的各种运算符。

比较运算符

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,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)

where子句使用实例(以上面的exam_result表为基本表) 

~ 英语不及格的同学及英语成绩 ( < 60 ) 

mysql> select name,english from exam_result where english < 60;

~ 语文成绩在 [80, 90] 分的同学及语文成绩

两种查询方法:

mysql> select name,chinese from exam_result where chinese <= 90 and chinese >= 80;

也可以使用BETWEEN a0 AND a1进行查询:

mysql> select name,chinese from exam_result where chinese between 80 and 90;

~  数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

select name,math from exam_result where math=58 or math=59 or math=98 or math=99;

我们也可以使用IN (option, ...)进行查看:

~  姓孙的同学及孙某同学(like)

姓孙的同学:

select name,math from exam_result where name like '孙%';

孙某同学:

select name,math from exam_result where name like '孙_';

 

结果排序

语法:order by

SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

 ASC 为升序(从小到大),DESC 为降序(从大到小),默认排序顺序为 ASC。

注:NULL 视为比任何值都小,升序出现在最上面。order by通常都是对查询到的结果进行排序。

~ 查询同学及数学成绩,按数学成绩升序显示

select name,math from exam_result order by math (asc)

也可以显示地表示需要升序排序:

~ 查询同学姓名及总分,按总分由高到低排序

select name,math+english+chinese 总分 from exam_result order by 总分 desc;

 

~ 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

select name,math from exam_result where name like '孙%' or name like '曹%' order by math desc;

 

筛选分页结果

语法:

从 0 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

从 s 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

 从 s 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

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

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

相关文章

鸿萌数据恢复:NAND 内存协议,SDR 与 DDR 之间的区别

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 从事 NAND 数据恢复的人都知道&#xff0c;读取 NAND 需要使…

企业有了ELT就不需要ETL了?别被忽悠了

最近几年,ELT(Extract, Load, Transform)这个词在数据圈里挺火。有些人甚至说,有了ELT,ETL(Extract, Transform, Load)就该退出历史舞台了。作为一个干了十多年ETL的老兵,我觉得有必要说道说道。 先说说这两个概念。ETL是先把数据抽取出来,经过处理转换后再加载到目标系统。EL…

人工智能代表——无人驾驶:萝卜快跑

人工智能如何改变我们的出行&#xff1a;以“萝卜快跑”无人驾驶为例 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的方式渗透并改变着我们的日常生活&#xff0c;其中出行方式的变革尤为显著。在众多AI驱动的出行创新中&#xff0c;“萝卜…

OpenMV学习第一步安装IDE_2024.09.20

用360浏览器访问星瞳科技官网&#xff0c;一直提示访问不了。后面换了IE浏览器就可以访问。第一个坑。

2. 程序结构

在本章中&#xff0c;我们将开始做一些真正称得上编程的事情。我们将扩展对 JavaScript 语言的掌握&#xff0c;不再局限于目前所见的名词和句子片段&#xff0c;而是能够表达有意义的散文。 表达式和语句 在第 1 章中&#xff0c;我们创建了值&#xff0c;并应用运算符来获取…

【Python报错已解决】NameError: name ‘F‘ is not defined

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

《百家姓》中排名第八却是中国人口第一大姓-王姓

王姓在《百家姓》中虽然排名第八&#xff0c;但根据近年来的统计数据和实际人口分布&#xff0c;王姓已成为中国第一大姓。以下是对王姓作为“百家姓之首”的详细解析&#xff1a; 一、人口数量与分布 人口数量&#xff1a;截至当前时间&#xff08;2024年&#xff09;&#x…

打破网络安全域限制:跨区域文件传输的创新解决方案

随着经济的快速发展&#xff0c;很多企业在异地都会建立分支机构&#xff0c;比如跨国企业在国外建设分公司&#xff0c;金融机构全国各地都有多级分支机构和网点&#xff0c;集团型企业会设立多家子公司等等。 跨网络安全域文件交换&#xff0c;是大型企业会存在的跨区域文件传…

项目记录点

MES项目点 一、项目局域网访问地址创建 host: 0.0.0.0,二、select下拉表单内容 1、默认值设置为undefined&#xff0c;placeholder才生效 <a-col :sm"24" :md"12" :xl"6"><a-form-itemname"opeCodeList":rules"[{requ…

Pinia从安装到使用

什么是Pinia 添加Pinia到vue项目 使用Pinia实现计数器案例 counter.js import {defineStore} from "pinia"; import {ref} from "vue";export const useCounterStore defineStore(coutner,()>{//定义数据&#xff08;state&#xff09;const count r…

低光照图像增强算法-图像增强(代码+教程)

这是一个使用深度学习技术进行低光照图像增强的项目。是一种旨在提高低光照条件下拍摄的图片质量的方法。该方法利用了注意力机制来指导增强过程&#xff0c;从而改善图像的整体视觉效果。 项目概述 输入: AGLLNet 接受单个RGB彩色图像作为输入&#xff0c;其尺寸为768x1152…

Miniconda 安装教程

1. Miniconda 简介 Miniconda是一个小巧而强大的Python环境管理工具,由Continuum Analytics(现已被Anaconda公司收购)创建。它为用户提供了快速、简便的Python环境创建、隔离、切换和包管理功能。核心组件有Conda包管理器和Python环境,具有轻量级、灵活性、跨平台等特点,…

【命令操作】Windonws端口被占用,查找占用端口的进程id,以及使用id杀死进程

Windonws端口被占用&#xff0c;查找占用端口的进程id,以及使用id杀死进程 Windonws端口被占用 查询端口 netstat -ano查询指定端口-获得占用端口的进程ID netstat -ano | findstr "端囗号"如查询8888端口 netstat -ano | findstr "8888"命令截图 命令…

DeiT(ICML2021):Data-efficient image Transformer,基于新型蒸馏且数据高效的ViT!

Training data-efficient image transformers & distillation through attention&#xff1a;通过注意力训练数据高效的图像转换器和蒸馏 论文地址&#xff1a; https://arxiv.org/abs/2012.12877 代码地址&#xff1a; https://github.com/facebookresearch/deit 这篇论文…

MongoDB的备份和恢复命令

一、下载 MongoDB Database Tools 官方网址&#xff1a;Download MongoDB Command Line Database Tools | MongoDB 将解压后的文件夹移动到MongoDB的bin目录下&#xff0c;同时配置mongodb-database-tools的bin目录进入环境变量。 以上有问题请参考文章&#xff1a;使用cmd命…

GIS留学院校介绍-英国篇

看前须知 关于语言成绩要求&#xff1a; 通常英国院校的雅思成绩要求分为5个等级&#xff0c;标准分别如下&#xff1a; 1级&#xff1a;总分6.5分&#xff0c;每个部分最低6.0分 2级&#xff1a;总分7.0&#xff0c;每个部分至少6.5分 3级&#xff1a;总分7.0分&#xff…

【C++入门必备】C++介绍,命名空间,输入和输出

目录 一&#xff1a;C前言介绍 1.1&#xff1a;什么是C 1.2&#xff1a;C发展史 1.3&#xff1a;如何学好C 二&#xff1a;命名空间 2.1&#xff1a;为什么会有命名空间 2.2&#xff1a;定义命名空间 2.3&#xff1a;使用命名空间 三&#xff1a;C的输入与输出 3.1&a…

go-admin-ui的菜单分割线设计思路和代码实现

在菜单管理添加分割线&#xff0c;类似这种&#xff1a; 思路&#xff1a;利用空间结构和数据特点来唯一区分出分割线&#xff0c;来划分业务区域 <template><div><h1>Split Line Controller</h1><ul><li v-for"route in displayedRout…

基于python+django+vue的旅游景点数据分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

Python+appium自动化+夜神模拟器inspector部署验证

1、自动化测试环境部署_总览图检查表流程图 Python需要安装Appium-Python-Clicent去定位元素&#xff1b;Appium是一个中间的服务器&#xff0c;它需要依赖node.js&#xff0c;python的脚本通过appium和手机进行交互&#xff1b;手机app的环境都是java环境&#xff0c;先安装j…