MySQL 基本查询、条件查询、投影查询

文章目录

    • 1. 基本查询
    • 2. 条件查询
    • 3. 投影查询
    • 练习 LeetCode 595. 大的国家
    • 练习 LeetCode 584. 寻找用户推荐人
    • 练习 LeetCode 1173. 即时食物配送 I
    • 练习 LeetCode 610. 判断三角形

学习自 廖雪峰的官方网站

1. 基本查询

SELECT * FROM <表名>

*表示所有内容
在这里插入图片描述

许多检测工具会执行一条SELECT 1; 来测试数据库连接。

2. 条件查询

SELECT * FROM <表名> WHERE <条件表达式>

条件运算按照NOT、AND、OR的优先级进行,即 NOT 最高,其次AND,最后OR
加括号 可以改变 优先级

SELECT * FROM students WHERE score >= 80;
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
SELECT * FROM students WHERE NOT class_id = 2;
SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';

3. 投影查询

结果集仅包含指定列

SELECT1,2,3 FROM <表名> WHERE <条件>
SELECT id, score, name FROM students;# 下面的 score 改了名称为 points(重命名)
SELECT id, score points, name FROM students;

练习 LeetCode 595. 大的国家

题目:

Create table If Not Exists World (name varchar(255), continent varchar(255), area int, population int, gdp int)
Truncate table World
insert into World (name, continent, area, population, gdp) values ('Afghanistan', 'Asia', '652230', '25500100', '20343000000')
insert into World (name, continent, area, population, gdp) values ('Albania', 'Europe', '28748', '2831741', '12960000000')
insert into World (name, continent, area, population, gdp) values ('Algeria', 'Africa', '2381741', '37100000', '188681000000')
insert into World (name, continent, area, population, gdp) values ('Andorra', 'Europe', '468', '78115', '3712000000')
insert into World (name, continent, area, population, gdp) values ('Angola', 'Africa', '1246700', '20609294', '100990000000')

这里有张 World 表

+-----------------+------------+------------+--------------+---------------+
| name            | continent  | area       | population   | gdp           |
+-----------------+------------+------------+--------------+---------------+
| Afghanistan     | Asia       | 652230     | 25500100     | 20343000      |
| Albania         | Europe     | 28748      | 2831741      | 12960000      |
| Algeria         | Africa     | 2381741    | 37100000     | 188681000     |
| Andorra         | Europe     | 468        | 78115        | 3712000       |
| Angola          | Africa     | 1246700    | 20609294     | 100990000     |
+-----------------+------------+------------+--------------+---------------+

如果一个国家的面积超过300万平方公里,人口超过2500万,那么这个国家就是大国家

编写一个SQL查询,输出表中所有大国家名称、人口和面积

例如,根据上表,我们应该输出:

+--------------+-------------+--------------+
| name         | population  | area         |
+--------------+-------------+--------------+
| Afghanistan  | 25500100    | 652230       |
| Algeria      | 37100000    | 2381741      |
+--------------+-------------+--------------+

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/big-countries
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题:

# Write your MySQL query statement below
SELECT name, population, area FROM World WHERE population > 25000000 OR area > 3000000;

格式无特殊要求,好像

# Write your MySQL query statement below
SELECT name, population, area 
FROM World 
WHERE population > 25000000 
OR area > 3000000;

217 ms

练习 LeetCode 584. 寻找用户推荐人

给定表 customer ,里面保存了所有客户信息和他们的推荐人。

+------+------+-----------+
| id   | name | referee_id|
+------+------+-----------+
|    1 | Will |      NULL |
|    2 | Jane |      NULL |
|    3 | Alex |         2 |
|    4 | Bill |      NULL |
|    5 | Zack |         1 |
|    6 | Mark |         2 |
+------+------+-----------+

写一个查询语句,返回一个编号列表,列表中编号的推荐人的编号都 不是 2。

对于上面的示例数据,结果为:

+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-customer-referee
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题:

# Write your MySQL query statement below
select name from customer
where referee_id not in (2) or referee_id is null
# Write your MySQL query statement below
select name from customer
where referee_id != 2 or referee_id is null
# Write your MySQL query statement below
select name from customer
where referee_id <> 2 or referee_id is null

练习 LeetCode 1173. 即时食物配送 I

配送表: Delivery

+-----------------------------+---------+
| Column Name                 | Type    |
+-----------------------------+---------+
| delivery_id                 | int     |
| customer_id                 | int     |
| order_date                  | date    |
| customer_pref_delivery_date | date    |
+-----------------------------+---------+

delivery_id 是表的主键。
该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。

如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。

写一条 SQL 查询语句获取即时订单所占的比例, 保留两位小数。

查询结果如下所示:

Delivery 表:
+-------------+-------------+------------+-----------------------------+
| delivery_id | customer_id | order_date | customer_pref_delivery_date |
+-------------+-------------+------------+-----------------------------+
| 1           | 1           | 2019-08-01 | 2019-08-02                  |
| 2           | 5           | 2019-08-02 | 2019-08-02                  |
| 3           | 1           | 2019-08-11 | 2019-08-11                  |
| 4           | 3           | 2019-08-24 | 2019-08-26                  |
| 5           | 4           | 2019-08-21 | 2019-08-22                  |
| 6           | 2           | 2019-08-11 | 2019-08-13                  |
+-------------+-------------+------------+-----------------------------+Result 表:
+----------------------+
| immediate_percentage |
+----------------------+
| 33.33                |
+----------------------+
23 号订单为即时订单,其他的为计划订单。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/immediate-food-delivery-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题:

# Write your MySQL query statement below
select 
round((sum(order_date = customer_pref_delivery_date)/count(*)*100), 2)
immediate_percentage from Delivery

avg 函数返回占比

# Write your MySQL query statement below
select 
round((avg(order_date = customer_pref_delivery_date)*100), 2)
immediate_percentage from Delivery

练习 LeetCode 610. 判断三角形

一个小学生 Tim 的作业是判断三条线段是否能形成一个三角形。

然而,这个作业非常繁重,因为有几百组线段需要判断。

假设表 triangle 保存了所有三条线段的三元组 x, y, z ,
你能帮 Tim 写一个查询语句,来判断每个三元组是否可以组成一个三角形吗?

| x  | y  | z  |
|----|----|----|
| 13 | 15 | 30 |
| 10 | 20 | 15 |

对于如上样例数据,你的查询语句应该返回如下结果:

| x  | y  | z  | triangle |
|----|----|----|----------|
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/triangle-judgement
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题:

# Write your MySQL query statement below
select x, y, z, case when x+y > z and x+z > y and y+z > x then 'Yes'else 'No'end as triangle
from triangle

or

# Write your MySQL query statement below
select *, if(x+y>z and x+z>y and y+z>x, 'Yes', 'No') as triangle
from triangle

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

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

相关文章

开始android旅程

这算是我第一个技术类的博客了&#xff0c;因为小女不才&#xff0c;很多东西都得需要学习&#xff0c;最近发表的一些日志可能是转载或者部分转载&#xff0c;但是我会努力认真的写我的学习心得的&#xff5e;&#xff5e; 这也算是我程序员成长的记录吧&#xff5e;转载于:ht…

解决mysql导出scv文件乱码、蹿行的问题

工作原因&#xff0c;常常不能实现完全的线上化&#xff08;即&#xff0c;所有数据都在线上完成&#xff0c;不需要导入导出&#xff09;&#xff0c;而导出Excel常常比修炼成仙还慢&#xff0c;因此&#xff0c;我们将数据库文件导出到本地使用的时候&#xff0c;常常使用的方…

MySQL 排序、分页查询、聚合查询

文章目录1. 排序2. 分页查询3. 聚合查询3.1 分组聚合 GROUP BY练习 LeetCode 176. 第二高的薪水练习 LeetCode 177. 第N高的薪水练习 LeetCode 182. 查找重复的电子邮箱练习 LeetCode 620. 有趣的电影练习 LeetCode 183. 从不订购的客户练习 LeetCode 596. 超过5名学生的课练习…

1799

/* 简单的数学几何题 */// include file #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <ctime>#include <iostream> #include <sstream> #include <fstream>…

解决mysql导数据时,格式不对、导入慢、丢数据的问题

如果希望一劳永逸的解决慢的问题&#xff0c;不妨把你的mysql升级到mysql8.0吧&#xff0c;mysql8.0默认的字符集已经从latin1改为utf8mb4&#xff0c;因此现在UTF8的速度要快得多&#xff0c;在特定查询时速度提高了1800&#xff05;&#xff01; mysql8.0 安装教程但是如果时…

MySQL 多表查询、连接查询(内连接、外连接)

文章目录1. 多表查询2. 连接查询练习 LeetCode 175. 组合两个表练习 LeetCode 181. 超过经理收入的员工练习 LeetCode 1378. 使用唯一标识码替换员工ID练习 LeetCode 1068. 产品销售分析 I练习 LeetCode 1069. 产品销售分析 II练习 LeetCode 1303. 求团队人数练习 LeetCode 135…

屏蔽非法路由,好好上网!

学校有人用路由&#xff0c;我人品差&#xff0c;经常受到路由器干扰&#xff0c;不能上网。本机IP应为172.16.*.*&#xff0c;被换成了192.168.*.*&#xff0c;不能连接上网认证服务器&#xff0c;及其郁闷。 开学闲暇之余&#xff0c;探索了多种方法&#xff0c;下面总结一下…

mysql行列转置-图文详解

我们想跑一个数据&#xff0c;格式如下图&#xff1a;但是我们一般的mysql语句跑出来的数据却是下面这样&#xff0c;不但不方便查看&#xff0c;在数据量比较大的时候&#xff0c;我们需要每个地区都转置粘贴一遍&#xff0c;耗时耗力还容易出错&#xff0c;下面提供一个方法&…

ACM PKU 2559 Largest Rectangle in a Histogram http://acm.pku.edu.cn/JudgeOnline/problem?id=2559

关于覆盖&#xff0c;用DP是一种很不错的解决方法&#xff0c;时效也很不错.... 这题目把图一画就很明确了&#xff0c;没有说明的必要了。 #include <iostream> using namespace std; __int64 height[100001]; int main () { int n; int left[100001]; int right[100001…

mysql复制表结构和数据

手动方法&#xff1a; 方法1&#xff1a;把你要复制的表当成一个文件一样&#xff0c;右键复制&#xff0c;右键粘贴&#xff0c;这个方法复制的是表结构和数据。 方法2&#xff1a;选中原表拖动到新位置的空白处&#xff0c;松开鼠标&#xff0c;会提示你复制表结构和数据&a…

MySQL 增加、更新、删除

文章目录1. 增加 INSERT2. 更新 UPDATE3. 删除 DELETE练习 LeetCode 196. 删除重复的电子邮箱练习 LeetCode 627. 交换工资学习自 廖雪峰的官方网站 1. 增加 INSERT 添加一条记录 INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);INSERT INTO student…

ACM PKU 2663 Tri Tiling http://acm.pku.edu.cn/JudgeOnline/problem?id=2663

这题开始没有思路&#xff0c;后来看了流牛的解题报告才写出来&#xff1b; 递推公式我写一下&#xff1a; sign[i] 1 (当i 0 时&#xff0c;具体为什么我也没有具体的说明方法) 0 (i % 2 ! 0) 根据图最先想到的一定…

mysql去重取最大值,逻辑类似oracle的over(partition by)函数

像下表一样的数据&#xff0c;有重复的合同号&#xff0c;但是我只想保留同一合同号中回款金额最大的那一行&#xff0c;也就是图中红框里的数据。oracle方法&#xff1a;在oracle中&#xff0c;我们可以简单地用over(partition by)函数处理&#xff08;代码示例如下&#xff0…

LeetCode 1186. 删除一次得到子数组最大和(DP)

1. 题目 给你一个整数数组&#xff0c;返回它的某个 非空 子数组&#xff08;连续元素&#xff09;在执行一次可选的删除操作后&#xff0c;所能得到的最大元素总和。 换句话说&#xff0c;你可以从原数组中选出一个子数组&#xff0c;并可以决定要不要从中删除一个元素&…

可遇不可求的Question之不支持一个STA 线程上针对多个句柄的WaitAll

不支持一个 STA 线程上针对多个句柄的 WaitAll。 题设: 在.NET开发多线程控制台程序过程中,由于业务要求,需要实现"一次扫描多笔订单",然后,通过多线程实现并发提交的逻辑.因此,在控制台程序中采用了多线程记录.由于下一次操作必须等待所有的记录并发提交完成后,才能…

mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接

前言&#xff1a;zuo表和you表短短五行涵盖了数据中所有可能遇见的情况&#xff1a; 1.左表有重复值&#xff08;合同号1134&#xff09;&#xff1b; 2.右表有重复值&#xff08;合同号1133&#xff09;&#xff1b; 3.左表存在右表没有的合同号&#xff08;合同号1188&#x…

LeetCode 904. 水果成篮(滑动窗口)

1. 题目 在一排树中&#xff0c;第 i 棵树产生 tree[i] 型的水果。 你可以从你选择的任何树开始&#xff0c;然后重复执行以下步骤&#xff1a; 把这棵树上的水果放进你的篮子里。如果你做不到&#xff0c;就停下来。移动到当前树右侧的下一棵树。如果右边没有树&#xff0c;…

mysql远程访问

MySQL 安装完成后只支持 localhost 访问&#xff0c;我们必须设置一下才可以远程访问&#xff0c;另外还有一些 MySQL 8.0 连接时的一些问题&#xff0c;本文也会一并进行讲解如何解决。1.登录MySQL并输入密码 &#xff0c;选择 mysql 数据库&#xff08;存储了用户信息的 user…

详细解析Java中抽象类和接口的区别(很容易理解错)

2007-09-28 12:17作者&#xff1a;doublel出处&#xff1a;论坛整理责任编辑&#xff1a;方舟在Java语言中&#xff0c; abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的 面向对象能力。abstract class和inter…

LeetCode 910. 最小差值 II(贪心)

1. 题目 给定一个整数数组 A&#xff0c;对于每个整数 A[i]&#xff0c;我们可以选择 x -K 或是 x K&#xff0c;并将 x 加到 A[i] 中。 在此过程之后&#xff0c;我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1&#xff1a; 输入&a…