朝花夕拾1------SQL語句

目錄

 

1.SQL語句學習網站(來源於https://www.jianshu.com/p/723e8bd6c5c8)

2.SQL練習題

2.1  第二節練習題 帶約束的查詢

         2.2  第三節  有約束的查詢

        2.3  第四節  篩選和排序查詢


1.SQL語句學習網站(來源於https://www.jianshu.com/p/723e8bd6c5c8

(1)http://www.w3school.com.cn/sql/

速查基礎SQL命令,快速理解SQL命令的含義和使用方法

(2)CodeCademy

https://www.codecademy.com/learn/learn-sql
https://www.codecademy.com/learn/sql-table-transformati

交互式地學習並在類似真實數據庫下使用SQL。需要註冊,解鎖高級功能需要付費。

(3)https://sqlbolt.com/

推薦這個學習網站,這個網站上有詳細解釋SQL語句功能,並提供可交互的在線編程環境,配合練習題鞏固所學知識點,無需註冊。

(4)http://www.w3resource.com/sql-exercises/

題量豐富但基礎,提供可交互的編程窗口,但界面不夠友好。適合已經大體掌握SQL後鞏固之用,無需註冊。

(5)http://www.sql-ex.ru/

題量豐富且困難,出題的人考慮到了實際使用時的一些坑爹場景。適合刷題解悶,理解SQL運行的深層邏輯。網站風格古老,需要註冊。

(6)http://sqlfiddle.com/

網友推薦

2.SQL練習題

本人使用的是https://sqlbolt.com/,既瞭解句法結構,又可以鞏固知識點。

2.1  第二節練習題 帶約束的查詢

#1.找出電影id=6的這一行
SELECT * FROM movies WHERE id=6;

#2.找出在2000年到2010年發行的電影
SELECT * FROM movies WHERE year BETWEEN 2000 AND 2010;

#3.找出不在2000年到2010年發行的電影
SELECT * FROM movies WHERE year NOT BETWEEN 2000 AND 2010;

#4.找出前五個電影和他們的發行年
SELECT title,year FROM movies WHERE Year <=2003
或者
SELECT title,year FROM movies WHERE Year IN(0,1,2,3,4,5)

2.2  第三節  有約束的查詢

  • 知識點 :常見的文本數據特定運算符,分爲兩類,一類是區分大小寫的精確字符串比較,=、!=、<>;另一類是不區分大小寫的字符串精確比較,LIKE、NOT LIKE.
  1. 匹配0個或多個字符串序列用%,可以替代*,可以解釋爲查找包含關鍵詞的詞彙;
  2. 匹配單個字符串的序列用-符號。
文本數據特定運算符
Operator Condition Example Explaining
= Case sensitive exact string comparison (notice the single equals) col = "abc" 等於
!= or <> Case sensitive exact string inequality comparison col_name != "abcd" 不等於
LIKE Case insensitive exact string comparison col_name LIKE "ABC" 等於
NOT LIKE Case insensitive exact string inequality comparison col_name NOT LIKE "ABCD" 不等於
% Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) col_name LIKE "%AT%"
(matches "AT", "ATTIC", "CAT" or even "BATS")
模糊匹配
_ Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) col_name LIKE "AN_"
(matches "AND", but not "AN")
模糊匹配單字符串
IN (…) String exists in a list col_name IN ("A", "B", "C") 在集合
NOT IN (…) String does not exist in a list col_name NOT IN ("D", "E", "F") 不在集合
  • 練習題
# 1.找出所有Toy Story電影
SELECT *  FROM movies WHERE title LIKE "%Toy Story%";

# 下面也可以
SELECT * FROM movies WHERE title LIKE "Toy Story%";

# 2.找出所有John Lasseter拍的電影
SELECT * FROM movies WHERE Director LIKE "John Lasseter";

# 下面也可以
SELECT * FROM movies WHERE director="John Lasseter";

# 3.找出所有不是John Lasseter拍的電影

SELECT * FROM movies WHERE director!="John Lasseter";

# 4.找出WALL-*系列電影
SELECT * FROM movies 
WHERE title LIKE "WALL-_";

2.3  第四節  篩選和排序查詢

(1)知識點

       SQL提供了一種使用DISTINCT 關鍵字丟棄具有重複列值的行的便捷方法。原因在於即使數據庫中的數據可能是唯一的,任何特定查詢的結果可能都不是 - 例如,以我們的電影表爲例,許多不同的電影可以在同一年發佈。基本語句是:

SELECT DISTINCT column, another_column, …
FROM mytable
WHERE condition(s);

由於DISTINCT關鍵字會盲目刪除重複行,因此我們將在以後的課程中學習如何使用分組和GROUP BY子句根據特定列丟棄重複項。

  • order by命令

爲解決表中數量增加到海量造成數據難以閱讀問題,SQL提供了一種使用order by子句按升序對給定列排序結果的方法。基本句式爲:

選擇具有有序結果的查詢
SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC;

當一個ORDER BY指定的子句,每行被排序的α-數值基於指定的列的值。在某些數據庫中,您還可以指定排序規則以更好地對包含國際文本的數據進行排序。

通常與該ORDER BY子句一起使用的另一個子句是LIMITOFFSET子句,它們是一種有用的優化,用於向數據庫指示您關注的結果的子集。這LIMIT將減少要返回的行數,而可選項OFFSET將指定從哪裏開始計算行數。句式結構爲

選擇有限行的查詢
SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;

(2)練習題

#1.按照字母順序,不重複地列出所有皮克斯電影導演
SELECT DISTINCT director FROM movies
ORDER BY director ASC;

#2.列出Pixar最近發行的四部電影(按照發行日期倒序)

SELECT title, year FROM movies
ORDER BY year DESC
LIMIT 4;

#3.列出按照字母排序的Pixar前五部電影
SELECT TITLE,YEAR FROM movies 
ORDER BY TITLE ASC
LIMIT 5;


#4.根據3,列出按照字母排序的Pixar下五部電影
SELECT title FROM movies
ORDER BY title ASC
LIMIT 5 OFFSET 5;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章