📚 前言

SQL是什么?

官方解释:SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。

SQL能用来干什么?

通俗的讲:让您可以访问和处理数据库,包括数据插入、查询、更新和删除。

一本正经教 SQL?不!我们来点有趣的!
SQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值。

❤️ 情景学习

下面让我们看看小美是如何零基础学习SQL的:
一本正经教 SQL?不!我们来点有趣的! - 图2
sysdate
使用这个SQL语句可以查看数据库当前时间,当然也可以把 SYSDATE 换成任意东西。

例如:

计算器:SELECT 365 * 24 FROM dual;
计算器
这个SQL我们在开发中会经常用到,作为入门第一个SQL轻松有趣。小美,你觉得难吗?
一本正经教 SQL?不!我们来点有趣的! - 图3
一本正经教 SQL?不!我们来点有趣的! - 图4
数据类型
一本正经教 SQL?不!我们来点有趣的! - 图5

1
2
3
4
5
6
7
8
CREATE TABLE bookshelf
(
BOOK_ID NUMBER,
BOOK_NAME VARCHAR2(100),
BOOK_TYPE VARCHAR2(100),
AUTHOR VARCHAR2(100),
INTIME DATE
);

表名为:bookshelf,有列:图书id,图书名称,图书类型,作者,入库时间。通过上面学习的 SELECT语法,来查询一下这张表:

1
SELECT * FROM bookshelf;

一本正经教 SQL?不!我们来点有趣的! - 图6
可以发现,新建的bookshelf表没有任何记录。现在,图书馆里已经增加一个空的书架,是不是需要将书放入书架上呢?这时就需要用到 操作了。
一本正经教 SQL?不!我们来点有趣的! - 图7

1
2
3
4
5
6
7
8
9
10
11
12
13
INSERT INTO bookshelf 
(book_id,
book_name,
book_type,
author,
intime)
VALUES
(1,
'飘',
'长篇小说',
'玛格丽特·米切尔',
SYSDATE);
COMMIT;

的基本语法:

insert into 表名 (需要插入的列名,用逗号隔开) values (对应列名的值);

一本正经教 SQL?不!我们来点有趣的! - 图8
通过sql查询发现,这本书《飘》已经放入了书架上,可供大家借用和查看。
一本正经教 SQL?不!我们来点有趣的! - 图9
的基本语法:

UPDATE 表名 SET 列名 = 新的值;

的基本语法:

DELETE FROM 表名;

现在来模拟一下场景:

1、修改作者名:

1
2
UPDATE bookshelf SET author='Margaret Mitchell';
COMMIT;

修改作者名
2、下架图书:

1
2
DELETE FROM bookshelf;
COMMIT;

在这里插入图片描述
通过以上两个场景,演示了 两种操作。
一本正经教 SQL?不!我们来点有趣的! - 图10
一本正经教 SQL?不!我们来点有趣的! - 图11
一本正经教 SQL?不!我们来点有趣的! - 图12
先上架3本书:

1
2
3
4
INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (1,'飘','长篇小说','玛格丽特·米切尔',SYSDATE);
INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (2,'倾城之恋','爱情小说','张爱玲',SYSDATE);
INSERT INTO bookshelf (book_id,book_name,book_type,author,intime) VALUES (3,'从你的全世界路过','短篇小说','张嘉佳',SYSDATE);
COMMIT;

一本正经教 SQL?不!我们来点有趣的! - 图13
查看《倾城之恋》:

1
SELECT * FROM bookshelf WHERE BOOK_NAME = '倾城之恋';

一本正经教 SQL?不!我们来点有趣的! - 图14
更新《飘》:

1
2
UPDATE bookshelf SET author='Margaret Mitchell' WHERE book_name = '飘';
COMMIT;

一本正经教 SQL?不!我们来点有趣的! - 图15
删除《从你的全世界路过》:

1
2
DELETE FROM bookshelf WHERE book_name = '从你的全世界路过';
COMMIT;

一本正经教 SQL?不!我们来点有趣的! - 图16
通过上面的几个栗子🌰,应该能很好的理解 WHERE 查询条件的使用了。
一本正经教 SQL?不!我们来点有趣的! - 图17

☀️ 趣味 SQL

文末,赠送给各位看官几个一句SQL画图的趣味小SQL:

⭐️ 五角星:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
WITH a AS
(SELECT DISTINCT round(SUM(x) over(ORDER BY n)) x,
round(SUM(y) over(ORDER BY n)) y
FROM (SELECT n,
cos(trunc(n / 20) * (1 - 1 / 5) * 3.1415926) * 2 x,
sin(trunc(n / 20) * (1 - 1 / 5) * 3.1415926) y
FROM (SELECT rownum - 1 n
FROM all_objects
WHERE rownum <= 20 * 5)))
SELECT REPLACE(sys_connect_by_path(point,
'/'),
'/',
NULL) star
FROM (SELECT b.y,
b.x,
decode(a.x,
NULL,
' ',
'*') point
FROM a,
(SELECT *
FROM (SELECT rownum - 1 + (SELECT MIN(x)
FROM a) x
FROM all_objects
WHERE rownum <= (SELECT MAX(x) - MIN(x) + 1
FROM a)),
(SELECT rownum - 1 + (SELECT MIN(y)
FROM a) y
FROM all_objects
WHERE rownum <= (SELECT MAX(y) - MIN(y) + 1
FROM a))) b
WHERE a.x(+) = b.x
AND a.y(+) = b.y)
WHERE x = (SELECT MAX(x)
FROM a)
START WITH x = (SELECT MIN(x)
FROM a)
CONNECT BY y = PRIOR y
AND x = PRIOR x + 1;

在这里插入图片描述
📢 注意: 调整期中数字 5,你还可以输出 7 角星,9 角星!

🇨🇳 奥运五环:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
WITH a AS
(SELECT DISTINCT round(a.x + b.x) x,
round(a.y + b.y) y
FROM (SELECT (SUM(x) over(ORDER BY n)) x,
round(SUM(y) over(ORDER BY n)) y
FROM (SELECT n,
cos(n / 30 * 3.1415926) * 2 x,
sin(n / 30 * 3.1415926) y
FROM (SELECT rownum - 1 n
FROM all_objects
WHERE rownum <= 30 + 30))) a,
(SELECT n,
(SUM(x) over(ORDER BY n)) x,
round(SUM(y) over(ORDER BY n)) y
FROM (SELECT n,
cos(m / 3 * 3.1415926) * 2 * 15 x,
sin(m / 3 * 3.1415926) * 15 y
FROM (SELECT CASE
WHEN rownum <= 2 THEN
3
WHEN rownum = 3 THEN
-2
ELSE
-6
END m,
rownum - 1 n
FROM all_objects
WHERE rownum <= 5))) b)
SELECT REPLACE(sys_connect_by_path(point,
'/'),
'/',
NULL) star
FROM (SELECT b.y,
b.x,
decode(a.x,
NULL,
' ',
'*') point
FROM a,
(SELECT *
FROM (SELECT rownum - 1 + (SELECT MIN(x)
FROM a) x
FROM all_objects
WHERE rownum <= (SELECT MAX(x) - MIN(x) + 1
FROM a)),
(SELECT rownum - 1 + (SELECT MIN(y)
FROM a) y
FROM all_objects
WHERE rownum <= (SELECT MAX(y) - MIN(y) + 1
FROM a))) b
WHERE a.x(+) = b.x
AND a.y(+) = b.y)
WHERE x = (SELECT MAX(x)
FROM a)
START WITH x = (SELECT MIN(x)
FROM a)
CONNECT BY y = PRIOR y
AND x = PRIOR x + 1;

一本正经教 SQL?不!我们来点有趣的! - 图18
📅 打印当月日历:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
SELECT MAX(decode(dow,
1,
d,
NULL)) sun,

MAX(decode(dow,
2,
d,
NULL)) mon,

MAX(decode(dow,
3,
d,
NULL)) tue,

MAX(decode(dow,
4,
d,
NULL)) wed,

MAX(decode(dow,
5,
d,
NULL)) thu,

MAX(decode(dow,
6,
d,
NULL)) fri,

MAX(decode(dow,
7,
d,
NULL)) sat

FROM (SELECT rownum d,

rownum - 2 + to_number(to_char(trunc(SYSDATE,
'MM'),
'D')) p,

to_char(trunc(SYSDATE,
'MM') - 1 + rownum,
'D') dow

FROM all_objects

WHERE rownum <=

to_number(to_char(last_day(to_date(SYSDATE)),
'DD')))

GROUP BY trunc(p / 7)

ORDER BY sun NULLS FIRST;

一本正经教 SQL?不!我们来点有趣的! - 图19
本文以轻松愉快的情景对话方式介绍 SQL 的 增删改查 操作!希望能给读者不一样的体验~

好书推荐

SQL是使用最广泛的数据库语言,绝大多数重要的 DBMS 支持 SQL。本书由浅入深地讲解了SQL的基本概念和语法,涉及数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,实例丰富,便于查阅。新版对书中的案例进行了全面的更新,并增加了章后挑战题,便于读者巩固所学知识。

本书没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中常用必备的SQL知识,实用性极强;

《SQL必知必会 第5版(图灵出品)》

一本正经教 SQL?不!我们来点有趣的! - 图20

作者为本书建立了一个配套网站,网址见书引言部分,书中所有数据库示例、挑战题答案可以在本书的网页上获得;

本书购买链接🔗:

京东:https://item.jd.com/12937316.html