SQL學習筆記


基於 sqlbolt.com,趁着2019年1月份沒過去,再抓緊寫兩篇

1.SQL是結構化查詢語言,對應的是關係型數據庫
2.主要的內容:增、刪、改、查


1.基礎章節練習

SQL Lesson 1: SELECT queries 101

第一章比較簡單,直接從例題開始說起吧

1.練習部分

#1.找出表中每個電影的名字
SELECT title FROM movies;

#2.找出表中每個電影的導演
SELECT Director FROM Movies;

#3.找出每個電影的title和導演
SELECT title,director FROM Movies;

#4.找出每個電影的title和發行年
SELECT title,year FROM Movies;

#5.找出每個電影的所有信息
SELECT * FROM Movies;

SQL Lesson 2: Queries with constraints (Pt. 1)

1.WHERE語句對numerical number的使用

目的:爲了用已知約束來篩選結果
使用格式

SELECT column, another_column, …
FROM mytable
WHERE condition
    AND/OR another_condition
    AND/OR …;

AND / OR操作符是用來連接複雜條件的,如:

num_wheels >= 4 AND doors <= 2

可以用在數值數據(整數 / 浮點數)的操作符
在這裏插入圖片描述

2.練習部分

#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 id,title,year FROM movies WHERE Id BETWEEN 1 AND 5;

SQL Lesson 3: Queries with constraints (Pt. 2)

1.WHERE對文本型語句的操作

1.區分大小寫的精確字符串比較: =、!=、 < >
2.不區分大小寫的字符串精確比較:LIKE、NOT LIKE

  • 匹配0個或多個字符串的序列 %(1.相當於* 2.相當於查找包含關鍵詞的詞彙)
  • 匹配單個字符串的序列 -
    在這裏插入圖片描述
  • 注意
    • 大多數數據庫用這些操作符時非常高效,全文檢索用Apache Lucene或Sphinx庫更專業,支持國際化和高級查詢。

2.練習部分

# 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";

#3.找出所有不是John Lasseter拍的電影名和導演名
SELECT id,title,director
FROM movies
WHERE Director NOT LIKE "John Lasseter"

#4.找到所有WALL-*系列電影
SELECT *
FROM movies
WHERE title LIKE "WALL-%"

SQL Lesson 4: Filtering and sorting Query results

1.DISTINCT關鍵詞篩重

使用條件:數據庫中的數據是唯一的,但是數據庫中的特定查詢結果可能不唯一(很多不同的電影可能在同一年發行),這時我們用DISTINCT關鍵詞丟棄重複列值的行。

格式

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

注意
1.DISTINCT會盲目刪除行,日後會用GROUP BY基於特定的列丟棄重複行。

2.ORDER BY給結果排序

格式

SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC;

注意
ORDER BY是按照字母數字的順序排列的指定列值,某些數據庫可以指定一個字符順序去更好地進行排序。

3.LIMIT和OFFSET的使用

對於篩選出自己關心的結果非常有用
格式

SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;

LIMIT是限定在某個條件(一共選出來多少個),而OFFSET是偏移量(從當前位置向下移動幾個格)

2.練習部分

#1.按照字母順序,不重複地列出所有皮克斯電影導演
SELECT DISTINCT director 
FROM movies 
WHERE 1 
ORDER BY director ASC;
#2.列出Pixar最近發行的四部電影(按照發行日期倒序)
SELECT *
FROM movies
WHERE 1
ORDER BY year DESC
LIMIT 4 OFFSET 0;
#3.列出按照字母排序的Pixar前五部電影
SELECT title
FROM movies
WHERE 1
ORDER BY title
LIMIT 5 OFFSET 0;
#4.根據3,列出按照字母排序的Pixar下五部電影
SELECT title
FROM movies
WHERE 1
ORDER BY title
LIMIT 5 OFFSET 5;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章