MySQL:MySQL的查询(上)

文章目录

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

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

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

MySQL的增加

单行数据插入

mysql> create table students ( id int unsigned primary key auto_increment, namevarchar(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: 0mysql> 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: 0mysql> 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)

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

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

相关文章

【Qt 学习笔记】Qt控件概述

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt控件概述 文章编号:Qt 学习笔记 / 14 文章目录 Qt控件概…

如何申请阿里云服务器学生优惠,入口在这呢!

阿里云学生服务器免费申请,之前是云翼计划学生服务器9元/月,现在是高校计划,学生服务器可以免费申请,先完成学生认证即可免费领取一台云服务器ECS,配置为2核2G、1M带宽、40G系统盘,在云服务器ECS实例过期之…

【软考】哈希表

目录 一、概念1.1 定义 二、哈希函数的构造方法2.1 说明2.2 特性 三、处理冲突的方法3.1 说明3.2 开放定址法3.2.1 说明3.2.2 线性探测 3.3 链地址法3.4 再哈希法3.5 建立公共溢出区 四、哈希表的查找4.1 查找过程4.2 查找特点4.3 装填因子 一、概念 1.1 定义 1.一般存储结构由…

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…

同态滤波的Python源码

同态滤波前 &#xff08;左&#xff09; 同态滤波后&#xff08;右&#xff09; 源码见下面链接&#xff1a; https://download.csdn.net/download/qqqweiweiqq/89129996?spm1001.2014.3001.5501

Leetcode算法训练日记 | day25

一、组合总和Ⅲ 1.题目 Leetcode&#xff1a;第 216 题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺…

HDFS [MSST‘10] 论文阅读笔记

原论文&#xff1a;The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标&#xff1a;HDFS旨在可靠地存储大型数据集&#xff0c;并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源&#xff0c;使得资源可以随着…

A Learning-Based Approach for IP Geolocation(2010年)

下载地址:Towards IP geolocation using delay and topology measurements | Proceedings of the 6th ACM SIGCOMM conference on Internet measurement 被引次数:185 Eriksson B, Barford P, Sommers J, et al. A learning-based approach for IP geolocation[C]//Passive …

WebService反向代理的配置和

WebService反向代理的配置和 家都知道&#xff0c;联网上有很多被墙了的网站&#xff0c;虽然这是让人很伤心的一件事情&#xff0c;但还好咱们有办法绕过这个限制&#xff0c;那就是使用IP代理。今天我就来给大家讲讲如何配置和使用WebService反向代理。 什么是WebService反向…

二叉树遍历算法和应用

二叉树是指度为 2 的树。它是一种最简单却又最重要的树&#xff0c;在计算机领域中有这广泛的应用。 二叉树的递归定义如下&#xff1a;二叉树是一棵空树&#xff0c;或者一棵由一个根节点和两棵互不相交的分别称为根节点的左子树和右子树所组成的非空树&#xff0c;左子树和右…

DC-3渗透测试复现

DC-3渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-sql注入-反弹shell- pkexec提权&#xff08;CVE-2021-4034&#xff09; 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_3(192.168.85.133) 复现…

SpringBoot中使用Jackson序列化返回

SpringBoot中使用Jackson序列化返回 在Spring Boot应用中&#xff0c;使用Jackson库来处理JSON的序列化和反序列化是一种常见的做法。Jackson是一个高效的JSON处理器&#xff0c;广泛用于Java环境中&#xff0c;尤其是在与Spring框架集成时。本文将详细介绍如何在Spring Boot中…