朝花夕拾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. 匹配单个字符串的序列用-符号。
文本数据特定运算符
OperatorConditionExampleExplaining
=Case sensitive exact string comparison (notice the single equals)col = "abc"等于
!= or <>Case sensitive exact string inequality comparisoncol_name != "abcd"不等于
LIKECase insensitive exact string comparisoncol_name LIKE "ABC"等于
NOT LIKECase insensitive exact string inequality comparisoncol_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 listcol_name IN ("A", "B", "C")在集合
NOT IN (…)String does not exist in a listcol_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;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值