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.pswp.cn/news/449788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449788.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記錄一個相當好用的反編譯工具下載地址

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 下載地址見&#xff1a;https://download.csdn.net/download/stoneepigraph/9817144 下載后直接雙擊該程序就可以用&#xff0c;十分方便…

2021-07-09

#先引入后面可能用到的包&#xff08;package&#xff09; import pandas as pd from datetime import datetime import backtrader as bt import matplotlib.pyplot as plt %matplotlib auto #正常顯示畫圖時出現的中文和負號 from pylab import mpl mpl.rcParams[font.sans…

Patrick Wyatt:代碼沒問題 程序卻有bug?

摘要&#xff1a;相信每個程序員都遇到過“不可能的bug”&#xff0c;代碼沒有任何問題卻出錯了&#xff01;問題肯定是出在操作系統上&#xff0c;或者是工具&#xff0c;甚至是因為計算機硬件的問題&#xff1f;&#xff01;&#xff1f;當然&#xff0c;魔獸之父也不例外&am…

視差滾動(Parallax Scrolling)插件補充

13. Windows Windows (github) 是一個讓你用占據整個屏幕的section來構建單面網站的插件。該插件提供給你一些回調函數&#xff0c;當新的section出現在可視區并且并且處理快照時被調用&#xff0c;所以你可以輕松的繼承它來自定義導航菜單或更多的東西。下面是一個例子&#x…

主流瀏覽器內核

IE trident Firefox Gecko Google chrome Webkit/blink Safar i Webkit Opera presto轉載于:https://www.cnblogs.com/codezhao/p/10451030.html

Quartz使用總結、Cron表達式

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Quartz可以用來做什么&#xff1f; Quartz是一個任務調度框架。比如你遇到這樣的問題 想每月25號&#xff0c;信用卡自動還款想每年4月…

股票數據庫建立

import akshare as ak import baostock as bs import pandas as pd import datetime bs.login()stk_list_place D:/stk_list.csv #股票代碼表存儲地址 stk_place D:/Data/ #股票數據存儲地址 def update_stk_list(dateNone):#獲取指定日期的指數、股票數據stock_rs bs.qu…

利用redis實現分布式鎖:加鎖與解鎖

待補充轉載于:https://www.cnblogs.com/csuliujia/p/10451462.html

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

MVC控制器中&#xff0c;經常使用Newtonsoft.Json把對象序列化成json字符串傳遞到前端視圖。當對象中有DateTime類型的屬性時&#xff0c;前后臺如何處理才能把DateTime類型轉換成想要的格式呢&#xff1f; 有這樣的一個類具有DateTime類型屬性&#xff1a; using System; name…

多股回測(backtrader+quantstats+akshare)

導包 #引入技術指標數據 from __future__ import (absolute_import ,division,print_function,unicode_literals) import datetime #用于datetime對象操作 import os.path #用于管理路徑 import sys #用于在argvTo[0]中找到腳本名稱 import backtrader as bt #引入backt…

Cron表達式、定時任務

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Cron表達式。但這個表示式本身就夠復雜了。下面會有說明。 例子&#xff1a; cronSchedule("0 0/2 8-17 * * ?") // 每天8:0…

【轉載】ASP.NET自定義404和500錯誤頁面

在ASP.NET網站項目實際上線運行的過程中&#xff0c;有時候在運行環境下會出現400錯誤或者500錯誤&#xff0c;這些錯誤默認的頁面都不友好&#xff0c;比較簡單單調&#xff0c;其實我們可以自行設置這些錯誤所對應的頁面&#xff0c;讓這些錯誤跳轉到我們指定的路徑。此文將介…

年薪15萬的80后小本科:只要6分鐘,告訴你少走6年彎路

這個社會是很殘酷的&#xff0c;尤其是對于那些剛剛步入社會的80后而言。當很多人都在抱怨這個社會競爭壓力太大、沒有自己的追求&#xff0c;并因此而喪失斗志的時候&#xff0c;一個年薪15W的80后小本卻發出了這個的感慨&#xff0c;“一個人的成就&#xff0c;與歲月無關&am…

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

quartz各版本MySQL數據庫存儲建表SQL語句

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 用quartz管理任務計劃很方便&#xff0c;但是當使用數據庫作為存儲介質的時候&#xff0c;必須要先創建表&#xff0c;不然就會報錯。1.…

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

當下正是物聯網最好的時代&#xff0c;學習新的技術怎么能只學習ESP8266呢&#xff1f;要知道ESP8266還有一個孿生兄弟呢&#xff0c;最重要的是這個孿生兄弟要比ESP8266是更厲害的&#xff0c;所以我們也是非常有必要學習一下的&#xff0c;其實這篇文章去年就已經寫了&#x…

對話Linus Torvalds:大多黑客甚至連指針都未理解

摘要&#xff1a;Linus Torvalds坦言那些狡詐的通過文件名查找高速緩存&#xff0c;然后又抱怨自己能力一般的內核“惡魔”才是他欣賞的&#xff1b;相反&#xff0c;很多人連低水平的內核編程都還沒學好。 幾周前&#xff0c; Linus Torvalds在Slashdot上回答了一些問題。其中…

總結學習(提綱)

之前在私募做期權量化學習了那么久&#xff0c;趁著畢業找工作這段時間&#xff0c;對之前學習的東西&#xff0c;制作的函數等進行一個系統性的總結&#xff0c;順便每天更新的時候&#xff0c;記錄下自己的體重與波比跳次數。 1.MC的學習與策略編寫 2.python基礎學習資料的…

安卓系統上的遠程 JS 調試 Remote JavaScript Debugging on Android

每當在 Android 移動設備上調試網頁時&#xff0c;開發人員往往都會不自覺陷入調試的泥潭中去。《Android開發指南》提供了一個解決方案&#xff0c;卻有點繁瑣復雜。因此&#xff0c;許多 Web 開發人員會傾向于使用類似 Firefox Firebug 的或像 WebKit 的 Web Inspector 之類的…