MySQL:MySQL的查询(上)

文章目录

  • MySQL的增加
    • 单行数据插入
    • 多行数据插入
    • 插入否则更新
    • 替换
  • MySQL的查询
    • select列
    • where语句

本篇开始总结的是MySQL当中的基本查询语句

对于数据库的查询,无非大致就是增删查改,因此对于这些内容进行一一解释:

MySQL的增加

单行数据插入

mysql> create table students ( id int unsigned primary key auto_increment, name
 varchar(20) not null, qq varchar(20) );
Query OK, 0 rows affected (0.12 sec)

mysql> desc students;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)  | NO   |     | NULL    |                |
| qq    | varchar(20)  | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.04 sec)

mysql> insert into students (name, qq) values ('小明', '123321');
Query OK, 1 row affected (0.01 sec)

mysql> insert into students  values (2, '小红', '1123321');
Query OK, 1 row affected (0.01 sec)

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小明   | 123321  |
|  2 | 小红   | 1123321 |
+----+--------+---------+
2 rows in set (0.00 sec)

在增加这个方面没有什么需要注意的,更多需要注意的是全列插入还是单列插入,如果指定了内容就是单列插入,如果在values前没有指定具体的内容,那就是全列插入

多行数据插入

insert语句也支持多行数据插入:

mysql> insert into students (name, qq) values ('小刚', 3333), ('小亮', 4444444);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小明   | 123321  |
|  2 | 小红   | 1123321 |
|  3 | 小刚   | 3333    |
|  4 | 小亮   | 4444444 |
+----+--------+---------+
4 rows in set (0.01 sec)

插入否则更新

在前面的学习中也知道了主键和唯一键,正常来说如果插入相同的数据到这当中是会提示有错误的信息的,为了方便描述更改一下列的信息:

mysql> alter table students add unique (qq);
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc students;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)  | NO   |     | NULL    |                |
| qq    | varchar(20)  | YES  | UNI | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

进行主键和唯一键重复更新

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小明   | 123321  |
|  2 | 小红   | 1123321 |
|  3 | 小刚   | 3333    |
|  4 | 小亮   | 4444444 |
+----+--------+---------+
4 rows in set (0.00 sec)

mysql> insert into students (id, name, qq) values (1, '小纯', 123321);
ERROR 1062 (23000): Duplicate entry '1' for key 'students.PRIMARY'
mysql> insert into students (id, name, qq) values (1, '小纯', 123321) on duplicate key update id=1, name='小纯',qq=123321;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小纯   | 123321  |
|  2 | 小红   | 1123321 |
|  3 | 小刚   | 3333    |
|  4 | 小亮   | 4444444 |
+----+--------+---------+
4 rows in set (0.00 sec)

从上面所示的示意可以看出这两个的关系,当主键或者唯一键发生重复后,执行后面的语句可以直接进行替换

但是这样的方法还是比较繁琐,因为在MySQL中直接提供了进行替换的sql语句:

替换

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小纯   | 123321  |
|  2 | 小红   | 1123321 |
|  3 | 小刚   | 3333    |
|  4 | 小亮   | 4444444 |
+----+--------+---------+
4 rows in set (0.00 sec)

mysql> replace into students (id, name, qq) values (1, '小铁', 123321);
Query OK, 2 rows affected (0.01 sec)

mysql> select * from students;
+----+--------+---------+
| id | name   | qq      |
+----+--------+---------+
|  1 | 小铁   | 123321  |
|  2 | 小红   | 1123321 |
|  3 | 小刚   | 3333    |
|  4 | 小亮   | 4444444 |
+----+--------+---------+
4 rows in set (0.00 sec)

值得注意的是,当提示有Query OK, 2 rows affected (0.01 sec),这个2表示的就是有出现冲突的数据,并且发生了替换,这个所谓的2的意思就是删除了之后再重新插入,所以就是表示的是2行数据被修改

MySQL的查询

下面进行的是对于MySQL的查询模块

select列

一般来说尽量不要使用全列查询,因为可能数据量很大,会带来很大的问题,所以通常来说要选择的最好还是指定列

指定列查询

mysql> select id, name from students;
+----+--------+
| id | name   |
+----+--------+
|  1 | 小铁   |
|  2 | 小红   |
|  3 | 小刚   |
|  4 | 小亮   |
+----+--------+
4 rows in set (0.00 sec)

mysql> select name, id from students;
+--------+----+
| name   | id |
+--------+----+
| 小铁   |  1 |
| 小红   |  2 |
| 小刚   |  3 |
| 小亮   |  4 |
+--------+----+
4 rows in set (0.00 sec)

其中这个顺序是可以不保持创建顺序的,因为是对于一列一列的数据进行提取

表达式

在进行查询的时候也可以带有表达式,例如:

mysql> select id * 2 from students;
+--------+
| id * 2 |
+--------+
|      4 |
|      2 |
|      6 |
|      8 |
+--------+
4 rows in set (0.00 sec)

取别名

也可以对新的一列进行重命名的操作

mysql> select id * 2 as newid from students;
+-------+
| newid |
+-------+
|     4 |
|     2 |
|     6 |
|     8 |
+-------+
4 rows in set (0.00 sec)

mysql> select id * 2 newid from students;
+-------+
| newid |
+-------+
|     4 |
|     2 |
|     6 |
|     8 |
+-------+
4 rows in set (0.00 sec)

其中as可以省去

对于结果去重

利用distinct关键字可以对于结果进行去重的操作

mysql> select math from exam_result;
+------+
| math |
+------+
|   90 |
|   90 |
|   90 |
+------+
3 rows in set (0.01 sec)

mysql> select distinct math from exam_result;
+------+
| math |
+------+
|   90 |
+------+
1 row in set (0.03 sec)

where语句

比较运算符:

在这里插入图片描述
结果排序

对于查询出的MySQL结果进行排序,常用的有asc表示升序,desc表示降序,默认采取的是降序排序

mysql> select math from exam_result order by math desc;
+------+
| math |
+------+
|   95 |
|   91 |
|   90 |
|   90 |
|   90 |
|   50 |
+------+
6 rows in set (0.00 sec)

mysql> select math from exam_result order by math asc;
+------+
| math |
+------+
|   50 |
|   90 |
|   90 |
|   90 |
|   91 |
|   95 |
+------+
6 rows in set (0.00 sec)

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

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

相关文章

Redis中的集群(九)

集群 消息 集群中的各个节点通过发送和接收消息(message)来进行通信,我们称发送消息的节点为发送者(sender),接收消息 的节点成为接收者,如图所示。节点发送的消息主要有以下五种: 1.MEET消息:当发送者接到客户端发送的CLUSTER MEET命令时&#xff0c…

二叉树练习day.8

235.二叉搜索树的最近公共祖先 链接:. - 力扣(LeetCode) 题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共…

一起找bug之购物

如果不是购物车满了,大概都不会发现这个 bug 淘宝 APP 修复了购物车满的情况下,往里面添加新商品时,会把一个老商品移入收藏夹, 但是如果这个老商品是已失效状态,就无法自动移入收藏夹,而且会一直在购物车…

AI禁区徘徊监测识别摄像机

AI禁区徘徊监测识别摄像机是一种基于人工智能技术的智能监控设备,用于监测禁止进入或逗留的区域。这种摄像机通过高清摄像头实时捕捉场景图像,利用AI算法对人员徘徊行为进行识别和监测,有助于提高安全防范水平,减少潜在的安全风险…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时,他们不会从头开始思考。就像你在阅读这篇文章时,你会根…

基于springboot仿雀语的文档管理系统

项目介绍 本项目借鉴了雀语的一些UI设计,实现了文档在线管理的功能,知识库可以对不同分类的文档建立不同的库,知识库里面左边可以维护菜单菜单目录,右边实现在线预览。该项目可以防止用户下载和复制文档,只支持在线预…

Excel从零基础到高手【办公】

第1课 - 快速制作目录【上篇】第1课 - 快速制作目录【下篇】第2课 - 快速定位到工作表的天涯海角第3课 - 如何最大化显示工作表的界面第4课 - 给你的表格做个瘦身第5课 - 快速定位目标区域所在位置第6课 - 快速批量填充序号第7课 - 按自定义的序列排序第8课 - 快速删除空白行第…

接招吧! selenium环境+元素定位大法

selenium 与 webdriver Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器 WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。 …

UltraScale 架构 SelectIO 资源之IODELAY与IOSERDES仿真与使用

平台:vivado2018.3 具体内容见ug571-ultrascale-selectio IDELAYE3 在调试超高速信号的时候,需要使用iodelayiserdes来调试校准输入信号。例如外部某ADC采样率为5GHZ,外部ADC使用2.5GHZ的时钟去采集输入信号。为了实现采集,adc芯…

普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅

三天小长假就要来啦!五一假期也即将到来。老板们想捉住人流量这个财富密码吗?那快快行动起来!开启VR体验项目,假期赚翻天!小编亲测!!这款设备刺激好玩,想必会吸引各位家长小孩、学生…

Normalization

Norm介绍 归一化层,目前主要有这几个方法,Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年&…

【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式

文章目录 前言 一、例程功能 二、仿真ECU 三、SystemVariables数组: 四、测试模块 五、测试运行效果 六、分析和应用 总结 前言 近期在做的一个自动化测试项目,尝试了一种以前没用过的测试配置方式,感觉效果还不错。然后又回顾了一下以…

php其他反序列化知识学习

简单总结一下最近学习的,php其他的一些反序列化知识 phar soap session 其他 __wakeup绕过gc绕过异常非公有属性,类名大小写不敏感正则匹配,十六进制绕过关键字检测原生类的利用 phar 基础知识 在 之前学习的反序列化利用中&#xff0…

Golang | Leetcode Golang题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; func removeNthFromEnd(head *ListNode, n int) *ListNode {dummy : &ListNode{0, head}first, second : head, dummyfor i : 0; i < n; i {first first.Next}for ; first ! nil; first first.Next {second second.Next}second.N…

谷歌推出适用于安卓设备的“Find My Device”网络,功能类似苹果Find My

谷歌今日推出了适用于安卓设备的“Find My Device”网络&#xff0c;其功能类似于苹果的“Find My”网络&#xff0c;旨在帮助用户定位丢失、被盗的安卓产品。 安卓的“Find My Device”网络可以利用数以亿计运行 Android 9 或更高版本的安卓设备&#xff0c;通过蓝牙信号追踪丢…

Golang ProtoBuf 初学者完整教程:语法

一、编码规范推荐 1、文件名使用小写下划线的命名风格&#xff0c;例如 lower_snake_case.proto 2、使用 2 个空格缩进 3、包名应该和目录结构对应 4、消息名使用首字母大写驼峰风格(CamelCase)&#xff0c;例如message StudentRequest { ... } 5、字段名使用小写下划线的风格…

内网通如何去除广告,内网通免广告生成器

公司使用内网通内部传输确实方便&#xff01;但是会有广告弹窗推送&#xff01;这个很烦恼&#xff01;那么如何去除广告呢&#xff01; 下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1CVVdWexliF3tBaFgN1W9aw?pwdhk7m 提取码&#xff1a;hk7m ID&#xff1a;…

数据结构之来链表——单链表

什么是单链表&#xff1a; 文字说明&#xff1a; 单链表顾名思义&#xff0c;就是指单项链表&#xff0c;即只有一个方向的链性线性表。 图解&#xff1a; 如下图所示&#xff0c;即为链表&#xff08;DATA为我们自己所定义的数据类型&#xff09;&#xff1a; 单链表的创建&am…

酷柚易讯无人共享空间单开版安装说明

1、安装环境准备 PHP环境7.4 mysql数据库需要5.7 同时需要安装宝塔面板&#xff08;&#xff57;&#xff57;&#xff57;&#xff0e;&#xff42;&#xff54;&#xff0e;&#xff43;&#xff4e;&#xff09; &#xff12;、获取系统安装包 联系工作人员获取安装包后…

面试:线程和线程池

目录 目标 一、线程有哪些状态 1、新建态&#xff08;NEW&#xff09;&#xff1a; 2、可运行态&#xff08;RUNNABLE&#xff09;&#xff1a; 3、终结态&#xff08;TERMINATED&#xff09;&#xff1a; 4、阻塞态&#xff08;BLOCKED&#xff09;&#xff1a; 5、等待态…