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