Datawhale MySQL 训练营 Task2 查询语句

目录

  • MySQL 管理
    • MySQL 用户管理 参考
    • 数据库管理
  • SQ查询语句
    • 1. 导入示例数据库,教程 MySQL导入示例数据库
    • 2. 查询语句 SELECT
    • 3. 筛选语句 WHERE ,过滤
    • 4. 分组语句 GROUP BY
    • 5. 排序语句 ORDER BY
    • 6. 函数
    • 作业
  • 总结

MySQL 管理

MySQL版本 8.0.15

MySQL 用户管理 参考

# root 用户登录
mysql -u root -p;# 添加用户
use mysql;
create user test@localhost identified by 'test123';# 授予用户全部权限GRANT ALL on *.* to 'test'@'localhost' WITH GRANT OPTION;

数据库管理

  • 创建数据库
CREATE DATABASE db_example;
  • 切换数据库
use db_example;
  • 删除数据库
drop database <数据库名>;

SQ查询语句

注:SQL 不区分大小写,建议关键词大写增加可读性;SQL 是 0-base 的语句

1. 导入示例数据库,教程 MySQL导入示例数据库

参考 https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html

2. 查询语句 SELECT

  • 从表 tablex 中查询某一列或者某几列:
SELECTcolumn0,column1,...clomunn
FROM table_x;

注: SELECT * FROM tabel 可以查询所有列, * 为通配符

  • 去重语句 DISTINCT
SELECT DISTINCT vend_id
FROM Products;

DISTINCT 列名 只返回 vend_id 这一列不同的值

  • 前N个语句, LIMIT
    在 MySQL 中返回前 N 行
SELECT columns
FROM table
LIMIT N;
  • 从第M行开始的N行数据, LIMIT N offset M

    MySQL 和 MariaDB 支持简化版本的 LIMIT M,N 语句,逗号前面对应 OFFSET, 逗号后面对应 LIMIT

SELECT columns
FROM table
LIMIT N OFFSET M;
  • CASE...END判断语句

3. 筛选语句 WHERE ,过滤

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
  • 语句解释: 筛选出 prod_price = 3.49 的prod_name
  • 运算符
    image
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;

BETWEEN 需要AND 连接上下限;

空值检查: IS NULL 语句

  • 操作符
    逻辑操作符: AND 连接两个条件 / OR连接两个条件; AND OR 一起用的时候 AND优先级更高,应该用()对操作符分组,()优先级更高

IN 操作符: 指定条件范围,() 内的被筛选出来,与 OR 有同样的作用

NOT 操作符: 否定后面的条件

  • 通配符 用来匹配值的一部分的特殊字符; 可以和字面值组合成搜索模式

LIKE 谓词

% 通配符:表示任何字符出现任何次数
_ 通配符: 匹配单个字符
[] 通配符: 指定字符集匹配一个字符

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )

4. 分组语句 GROUP BY

  • GROUP BY 语句根据一个或多个列对结果集进行分组
  • 聚集函数:汇总表中的数据的函数:平均、最大、最小、计数、求和

image

示例: 统计 prod_price 的平均值保存为 avg_price

SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM Products;
  • HAVING子句,类似 WHERE,但是WHERE过滤行但是 HAVING 过滤分组,HAVING 支持所有的WHERE的操作符,还支持聚集操作

5. 排序语句 ORDER BY

  • 语句解释: 根据 BY 对取出的列进行排序
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;

ORDER BY 后面可以是非检索的列,可以是其他列; ORDER BY 应该保证是 SELECT 语句中的最后一条子句(也必须放在 ); 使用选择的列(这里的 prod_id, prod_price, prod_name)排序可以用它们的顺序进行排列如 ORDER BY 2,3

  • 正序、逆序
    默认正序,可以使用ASC关键字,一般用不上
    逆序使用 DESC 关键字;直接位于 DESC 前面的那一列将会按照逆序列排列
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;

6. 函数

时间函数: 跟具体的DBMS 有关
SQL 数值函数
![image](http://media.alearner.cn/PictureRepo/Note/blog20190227SQLFuncNum.PNG)
SQL字符串函数
![image](http://media.alearner.cn/PictureRepo/Note/blog20190227SQLFuncString.PNG)
另外 MySQL 还提供了丰富的函数,[查表](http://www.runoob.com/mysql/mysql-functions.html)

作业

  1. 编写一个 SQL 查询,查找 email 表中所有重复的电子邮箱。
    根据以上输入,你的查询应返回以下结果:
-- 创建表
CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255)
)-- 插入数据
INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');-- 查询
SELECT Email
FROMemail
GROUP BYEmail
HAVING COUNT(*) > 1

结果:
image

  1. 项目二:查找大国(难度:简单)
    创建如下 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万并且gdp超过2000万),那么这个国家就是大国家。
编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
例如,根据上表,我们应该输出:

+--------------+-------------+--------------+
| name         | population  | area         |
+--------------+-------------+--------------+
| Afghanistan  | 25500100    | 652230       |
| Algeria      | 37100000    | 2381741      |
+--------------+-------------+--------------+
CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);-- 插入数据
INSERT INTO World VALUES( 'Afghanistan', 'Asia',652230,25500100,20343000);
INSERT INTO World VALUES( 'Albania', 'Europe' ,28748,2831741,12960000);
INSERT INTO World VALUES( 'Algeria', 'Africa' ,2381741,37100000,188681000);
INSERT INTO World VALUES( 'Andorra' , 'Europe' ,468,78115,3712000);
INSERT INTO World VALUES( 'Angola' , 'Africa' ,1246700,20609294,100990000);-- 查询SELECTname,population,area
FROMworld
WHERE area>3000000 OR (population > 2500000 AND gdp > 20000000)

结果:

image

总结

今天好好学习了一下 SQL 的查询、筛选、分组、排序和函数, 总的来说比较简单。
文中主要图表和代码参考 《SQL 必知必会》,人民邮电出版社出版,[美]Ben Forta 著,钟鸣,刘晓霞译。

转载于:https://www.cnblogs.com/sunchaothu/p/10447982.html

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

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

相关文章

视差滚动(Parallax Scrolling)插件补充

13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件。该插件提供给你一些回调函数&#xff0c;当新的section出现在可视区并且并且处理快照时被调用&#xff0c;所以你可以轻松的继承它来自定义导航菜单或更多的东西。下面是一个例子&#x…

MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期

MVC控制器中&#xff0c;经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图。当对象中有DateTime类型的属性时&#xff0c;前后台如何处理才能把DateTime类型转换成想要的格式呢&#xff1f; 有这样的一个类具有DateTime类型属性&#xff1a; using System; name…

Google Go Programming In Eclipse

http://www.tutorialsavvy.com/2013/04/google-go-programming-in-eclipse.html/ Google Go Programming In Eclipse The new “Go” programming language is from Google co.It has many features better then other languages.Go language features are:-– High Speed Comp…

pycharm打开ipynb显示为文本格式解决办法

然后进入 添加类型 jupyter notebook 然后下方添加 *.ipynb

[基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建

当下正是物联网最好的时代&#xff0c;学习新的技术怎么能只学习ESP8266呢&#xff1f;要知道ESP8266还有一个孪生兄弟呢&#xff0c;最重要的是这个孪生兄弟要比ESP8266是更厉害的&#xff0c;所以我们也是非常有必要学习一下的&#xff0c;其实这篇文章去年就已经写了&#x…

安卓系统上的远程 JS 调试 Remote JavaScript Debugging on Android

每当在 Android 移动设备上调试网页时&#xff0c;开发人员往往都会不自觉陷入调试的泥潭中去。《Android开发指南》提供了一个解决方案&#xff0c;却有点繁琐复杂。因此&#xff0c;许多 Web 开发人员会倾向于使用类似 Firefox Firebug 的或像 WebKit 的 Web Inspector 之类的…

SEO艺术

SEO艺术 编辑推荐 在本书中&#xff0c;四位搜索引擎优化&#xff08;SEO&#xff09;领域最受瞩目的专家阐述了制订以及执行一个完善的SEO策略时应遵循的一些实用指南与最新技术。 基本信息 原书名&#xff1a; The Art of SEO原出版社&#xff1a; OReilly作者&#xff1a; (…

http状态码301和302详解及区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一直对http状态码301和302的理解比较模糊&#xff0c;在遇到实际的问题和翻阅各种资料了解后&#xff0c;算是有了一定的理解。这里记录下…

哪些编程语言需要修复?

摘要&#xff1a;编程语言有十全十美的吗&#xff1f;每种语言都有缺陷吗&#xff1f;这不&#xff0c;Java、C、C、Python都中枪了。语言之间也可相互“掐架”&#xff0c;一起来看下。 原文作者Kevin Kelleher采用一种比较新颖的方式来比较编程语言&#xff1a;即描述每个编程…

Python标准库

《Python标准库》基本信息原书名&#xff1a; The Python Standard Library by Example 原出版社&#xff1a; Pearson Education 作者&#xff1a; (美)Doug Hellmann 译者&#xff1a; 刘炽 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111378105上架时间&#xf…

Perl迎来25岁生日

摘要&#xff1a;Perl迎来了它的第25岁生日&#xff0c;普天下Perlist都冒泡同庆一下&#xff0c;很多开发者喜欢它的理由是因其具备强力、稳定、成熟、可移植性等特点&#xff0c;Perl的爱好者们赶快送上你的祝福吧&#xff01; 昨天&#xff0c;Perl迎来了它的第25岁生日&…

20165114 《网络对抗技术》 Exp0 Kali安装与配置 Week1

目录&#xff1a; 一、kail的下载与安装 二、kali的网络设置 三、安装vmware-tools。 四、更新软件源。 五、共享文件夹 六、安装中文输入法 一、kail的下载与安装 VMware workstation的安装 因为之前的课程已经涉及&#xff0c;所以本机已经安装好了VMware workstation&#x…

大数据:互联网大规模数据挖掘与分布式处理

《大数据:互联网大规模数据挖掘与分布式处理》基本信息原书名&#xff1a;Mining of Massive Datasets作者&#xff1a; (美)拉贾拉曼(Rajaraman,A.) (美)厄尔曼(Ullman,J.D.) [作译者介绍]译者&#xff1a; 王斌丛书名&#xff1a; 图灵程序设计丛书出版社&#xff1a;人民邮电…

SpringCloud框架搭建+实际例子+讲解+系列五

&#xff08;4&#xff09;服务消费者&#xff0c;面向前端或者用户的服务 本模块涉及到很多知识点&#xff1a;比如Swagger的应用&#xff0c;SpringCloud断路器的使用&#xff0c;服务API的检查、token的校验&#xff0c;feign消费者的使用。大致代码框架如下&#xff1a; 先…

软件开发者最重要的四大技能

摘要&#xff1a;现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此要弄明白哪里是花时间训练的最佳投资点也就难上加难…… 现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此作为软件开发者&#xff0c;要弄明白哪里是花时…

Java 12 将于3月19日发布,8 个最终 JEP 一览

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; JDK 12 已于2018年12月进入 Rampdown Phase One 阶段&#xff0c;这意味着该版本所有新的功能特性被冻结&#xff0c;不会再加入更多的 JEP 。该阶段将持续一个月&#xff0c;主要修复 P1-P3 级…

股票期货数据的resample处理

​ import pandas as pd stock_day pd.read_csv("stock_day.csv") stock_day stock_day.sort_index() # 对每日交易数据进行重采样 &#xff08;频率转换&#xff09; stock_day.index# 1、必须将时间索引类型转换成Pandas默认的类型 stock_day.index pd.to_datet…

程序员如何做出“不难看”的设计

摘要&#xff1a;程序员在写代码的时候往往只注重功能的实现和性能的提升&#xff0c;忽视了外观和易用性&#xff0c;其实很多时候只要注意一些基本的规则&#xff0c;就可以大幅度提高产品的观感。 经常看到程序员展示自己做的东西&#xff0c;有一些是创业项目&#xff0c;有…

微服务实战(二):使用API Gateway

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 当你决定将应用作为一组微服务时&#xff0c;需要决定应用客户端如何与微服务交互。在单体式程序中&#xff0c;通常只有一组冗余的或者…

五步让你成为专家级程序员

摘要&#xff1a;Mark Lassoff是一位高级技术培训师&#xff0c;从事培训工作已有10余年。他培训的客户包括美国国防部、Lockheed Martin等。在多年的培训生涯中&#xff0c;他总结了一些如何快速学习一门语言的技巧&#xff0c;这些技巧非常简单&#xff0c;但是却让人受益匪浅…