SQL在線練習網址:SQL在線練習
Lesson 3:條件查詢(WHERE子句-字符串類)
基本語句:SELECT column 1, column 2, … FROM mytable WHERE condition AND/OR another_condition
練習要點:
- 字符串類的條件查詢需要用引號 " "包含,否則,SQL會認爲是一個屬性列的名字
具體語法規則表
關鍵字 | 意思 | 例子 |
---|---|---|
= | 完全等於 | col_name = “abc” |
!= 或者 <> | 不等於 | col_name != “abcd” |
LIKE | 沒有用通配符等價於 = | col_name LIKE “ABC” |
% | 通配符,代表匹配0個以上的字符 | col_name LIKE “%AT%”,代表AT 前後可以有任意字符(如 “AT”, “ATTIC”, “CAT” 甚至"BATS") |
_ | 和% 相似,代表1個字符 | col_name LIKE “AN_”(如 “AND”, 但非 “AN”) |
IN (…) | 在一個列表 | col_name IN (“A”, “B”, “C”) |
NOT IN (…) | 不在一個列表 | col_name NOT IN (“D”, “E”, “F”) |
實踐練習
依舊是上一節課練習的那張表格
Table(表): Movies
Id | Title | Director | Year | Length_minutes |
---|---|---|---|---|
1 | Toy Story | John Lasseter | 1995 | 81 |
2 | A Bug’s Life | John Lasseter | 1998 | 95 |
3 | Toy Story 2 | John Lasseter | 1999 | 93 |
4 | Monsters, Inc. | Pete Docter | 2001 | 92 |
5 | Finding Nemo | Finding Nemo | 2003 | 107 |
6 | The Incredibles | Brad Bird | 2004 | 116 |
7 | Cars | John Lasseter | 2006 | 117 |
8 | Ratatouille | Brad Bird | 2007 | 115 |
9 | WALL-E | Andrew Stanton | 2008 | 104 |
10 | Up | Pete Docter | 2009 | 101 |
11 | Toy Story 3 | Lee Unkrich | 2010 | 103 |
12 | Cars 2 | John Lasseter | 2011 | 120 |
13 | Brave | Brenda Chapman | 2012 | 102 |
14 | Monsters University | Dan Scanlon | 2013 | 110 |
- 找到所有Toy Story系列電影
SELECT * FROM movies
WHERE title LIKE "%Toy Story%"
- 找到所有John Lasseter導演的電影
SELECT * FROM movies
WHERE director LIKE "John Lasseter"
- 找到所有不是John Lasseter導演的電影
SELECT * FROM movies
WHERE director NOT LIKE "John Lasseter"
- 找到所有電影名爲 “WALL-” 開頭的電影
SELECT * FROM movies
WHERE title LIKE "%WALL-%"
- 有一部98年電影中文名《蟲蟲危機》請給我找出來
SELECT * FROM movies
WHERE title = "A Bug's Life"
AND year = 1998
(注意:“蟲蟲危機”的英文名稱是"A Bug’s Life")
- 找出所有Pete導演的電影,只要列出電影名,導演名和年份就可以
SELECT title,director,year FROM movies
WHERE director LIKE "%Pete%"
- John Lasseter導演了兩個系列,一個Car系列一個Toy Story系列,請幫我列出這John Lasseter導演兩個系列千禧年之後(含千禧年)的電影
SELECT * FROM movies
WHERE director LIKE "John Lasseter"
AND year >= 2000
(注意:千禧年是指2000年)