朝花夕拾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;

 

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