请问,零基础知识的同学如何学习SQL,学会写SQL需要多长时间?

2024-04-30 03:04发布

一个没有SQL数据库基础知识的新手,从入门到精通的学习路线和书籍清单!

1.学习SQL的烦恼

我观察了865个SQL初学者,发现大家在学习SQL的时候,最大的问题不是SQL语法,而是对SQL原理不熟悉。

许多初学者经常对 SQL 可以做什么以及为什么 SQL 是一种语言感到困惑。 他们用学英语的方法来学习SQL零基础英语先学什么,却发现自己什么也学不到,而且越来越难学、难用。 想想你为什么讨厌英语,你就会明白。 每次打开字典从放弃开始学习,不到10页就学不下去了。 还不是因为太无聊太无趣了?

如果我告诉你昨天再听一次音乐和看电影《钢铁侠》就可以轻松学习英语你会怎样? 难道不是更有趣吗? 学习SQL就像学习英语一样。 选择枯燥的学习模式必然会带来不好的学习效果。 我们追求的是一种简单的方法来学习SQL。

2. SQL原理

SQL的原理超级简单,四个字,集合运算。

所有复杂的SQL语句和命令都是围绕这个本质来制定和阐述的。

如果您不熟悉集合的概念,也没关系。 你毕业已经过去这么久了,你不记得这件事是情有可原的。 毕竟老师当时并不知道风靡全球的SQL会基于集合概念被发明出来。

集合最简单的例子是数组,例如 {a, b, c, d}。 举一个直观的例子,以一所大学的整个班级为例,这是一个很大的集合。 按性别可分为男同学集合和女同学集合。

男同学有什么特点? 高大、有力、留着胡须。

女同学有什么特点? 白嫩,温柔,长发。

就这样,我们有了两次大聚会,男同学聚会和女同学聚会。 回到SQL的原理,对于这两个集合,SQL操作所做的无非就是以下这些:

寻找身高大于180cm的男同学。 寻找最高的男学生。 寻找有胡子的男学生。 寻找有胡须、身高160cm以下的男学生。 统计没有胡须的男学生的数量。 寻找最高的女学生。 寻找最美丽的女学生。 寻找身材高挑、皮肤白皙的女同学。 寻找恋爱中的男女同学。 寻找曾经恋爱过并且现在有其他男女朋友的男女同学。

你看,无非就是做这些事情。 您立即对 SQL 感觉良好吗?

3. SQL的基础

这么有趣的事情,课本很无聊(希望下面的离散和集合论科普不会让你烦恼,不想看的可以跳过)

交换律:

A ∪ B = B∪A, A ∩ B = B ∩ A 结合律:

(A∪B)∪C=A∪(B∪C)=A∪B∪C

(A ∩ B) ∩ C = A ∩ (B ∩ C) = A ∩ B ∩ C 分配律:

(A∩B)∪C=(A∪C)∩(B∪C)

(A∪B) ∩ C = (A ∩ C) ∪(B ∩ C) 无效定律:

A∪A = A, A∩A = A 吸收定律:

(A∩B)∪A = A, (A∩B)∩A = A 支配法则:

A∪Ø = A, A∩Ω= A

A∪Ω=Ω,A∩Ø = Ø;

因此,不要被课本上的符号吓倒而失去学习SQL的兴趣。 别听我的,尖子生,我知道这些符号对你来说完全是小菜一碟。

4. SQL基本问题

下面我们用SQL来回答男女同学的上述10个问题:

将班级所有男女学生登记在名册上。 寻找班里的八卦同学打探男女朋友的关系,并记录在恋爱关系秘籍中。

这里使用的花名册和恋爱秘籍都是数据库中的二维表。 首先创建这两个表,分别是Students(名册表)和Relationships(恋爱关系秘籍)。 为了更直观,用Excel来展示,两张表是这样的:

英语基础学起_零基础英语先学什么_英语基础学什么

第一个表是学生名册表。 总共有 6 列。 其含义解释如下:

第二张表是Relationships(爱情关系秘籍)。 总共有 6 列。 请在下面解释它们:

注意:列在数据库中称为字段

使用SQL语句表达建表命令:

Students:
Create Table dbo.Students(
    StudentId Varchar(10),
    Name Nvarchar(200),
    Gender Nvarchar(1),
    Height Numeric(4,1),
    Mustache Varchar(3),
    SkinColor Nvarchar(1)
);
Relationships:
Create Table  dbo.Relationships(
    RelationshipId Int,
    BoyId Varchar(10),
    GirlId Varchar(10),
    BeginDate Datetime,
    CurrentActive Varchar(1),
    EndDate Datetime
    );

注意:字段旁边必须添加数据类型英语培训,并且数据长度和精度必须标准化。 例如,varchar(3)表示长度为3个字。

对于数据类型学英语,可以参考官方文档了解基本数据类型的定义和示例。 五、在线运行SQL具。

可以在线执行SQL的推荐具:/

该具有两大特点:

简单理解:

零基础英语先学什么_英语基础学什么_英语基础学起

整个页面分为1、2、3区域。

区域1的编辑器用于创建数据库模式,例如创建表和创建新数据; 区域2用于编辑和执行SQL; 区域3用于显示区域2的SQL执行结果

完美的! 我们成功地完成了第一步。

6. SQL简单练习

接下来,我们来给聪明女人准备精米吧。

插入

使用这条SQL命令,将添加班级所有学生的个人信息,包括姓名、学号、性别、身高、肤 {MOD}、是否有胡子、男女朋友的关系。 (当然零基础英语先学什么,这个不能让班主任知道。)

INSERT INTO Students(
    StudentId,
    Name,
    Gender,
    Height,
    Mustache,
    SkinColor
)
    Values
    ('001',N'陈冠奇',N'男',186,'No',N'白'),
    ('002',N'谢堂风',N'男',182,'No',N'白'),
    ('003',N'黄博',N'男',176,'Yes',N'黑'),
    ('004',N'李少杰',N'男',172,'Yes',N'黑'),
    ('005',N'徐少斌',N'男',163,'No',N'黑'),
    ('006',N'张白芷',N'女',172,'No',N'白'),
    ('007',N'张少函',N'女',163,'No',N'白'),
    ('008',N'灵昆',N'女',181,'No',N'黑'),
    ('009',N'夏平',N'女',158,'No',N'白'),
    ('010',N'莫文丽',N'女',156,'No',N'白')
INSERT INTO Relationships(
    RelationshipId,
    BoyId,
    GirlId,
    BeginDate,
    CurrentActive,
    EndDate
)
    Values
    (1001,'001','006','2002-04-01','Y',null),
    (1002,'003','009','2001-04-01','Y',null),
    (1003,'005','010','2003-04-01','N','2004-04-01'),
    (1004,'002','010','2004-04-01','N','2004-05-01'),
    (1005,'004','010','2004-05-01','N','2005-08-01')

接下来我们使用 SQL 来做一些有趣的事情:

查找身高大于180cm的男学生:

SELECT Name
FROM Students 
WHERE Height > 180 and Gender = N'男'

找身高170cm以上皮肤白皙的女同学:

SELECT Name 
FROM Students 
WHERE Height> 170 and SkinColor = N'白' and Gender = N'女'

找出最高的女同学:

SELECT Name
FROM Students 
WHERE Height = (SELECT MAX(Height) FROM Students WHERE Gender = N'女' ) 
and Gender = N'女'

查找与您有关系的同学:

SELECT Boy.Name as BoyName,
        Girl.Name AS GirlName
FROM Relationships Rel
    INNER JOIN Students Boy on Rel.BoyId = Boy.StudentId
    INNER JOIN Students Girl on Rel.GirlId = Girl.StudentId

最帅的陈冠希竟然留着胡子,让我们记录一下:

UPDATE Students 
    SET Mustache = 'Yes'
WHERE Name = N'陈冠奇'

零基础英语先学什么_英语基础学什么_英语基础学起

帅齐之所以留胡子,其实是因为陈冠希和张柏芝前两天分手了。 我们想记录一下这种关系的破裂:

UPDATE Relationships
    SET CurrentActive = 'N',
        EndDate = '2008-04-01'
WHERE BoyId = (SELECT StudentId FROM Students WHERE Name = N'陈冠奇') AND 
    GirlId = (SELECT StudentId FROM Students WHERE Name = N'张白芷')

任何痛苦都离不开爱人的离开。 张柏芝其实是出国留学了,所以名单上就少了这个人:

DELETE Students 
WHERE Name = N'张白芷'

帅气的陈冠奇怎么会甘心就这样沉沦呢? 他又找了莫文莉做女朋友:

INSERT INTO Relationships(
    RelationshipId,
    BoyId,
    GirlId,
    BeginDate,
    CurrentActive,
    EndDate
)
    Values
    (1006,'001','010','2008-04-01','Y',null)

出于好奇,小乐查了莫文丽的背景,发现她竟然谈过3次恋爱:

SELECT RelationshipId 
FROM Relationships 
WHERE GirlId = (SELECT StudentId FROM Students WHERE Name = N'莫文丽')

恭喜! 至此,您已经了解了所有基本的 SQL 操作。

7. SQL前进的分水岭

有竞争力的技术必须经过大量努力的磨练。 不然大家一看就知道了,怎么能卖高价呢?

所以,大家过了第一阶段之后,要认识到还有第二阶段、第三阶段、甚至第四阶段。 这会影响你的长远发展。 舒适区是为平庸者保留的。

从技术角度来看,我们习惯将SQL数据库开发分为入门、初级、高级、高级四个阶段。

注:从技术角度来看,可以分为这四个阶段。 并不是说你成为高级人士就一定年百万。 但你可不这么认为。 很多朋友问我的第一个问题就是“黄老师,以我的水平,我能拿到30K吗?” 我不保证这一点。 你能获得的收入完全取决于你的水平和天意(是的,很多时候,大钱取决于运气!)

这篇文章我只讲SQL技术水平的提升,不讲别的。

相信看完上面的入门指南,你将基本掌握SQL的编写。 这个阶段之后,你需要反复练习这些SQL,直到熟悉这些SQL命令和语法。

帮助您度过这个阶段的最佳方法是什么? 刷题。 是的,简单粗暴。 这里推荐牛客网,你可以尝试使用:

英语基础学起_零基础英语先学什么_英语基础学什么

左边是问题,右边是编辑SQL。 单击[保存并调试]运行SQL。 系统会提示您的是否通过!

做完这60+个问题,相信你会感觉棒极了!

我想推荐一些能够兼顾理论和实践的基础经典书籍。 看哪本书取决于您使用的数据库软件:

《关于 SQL 你必须知道的一切》(综合)

《T-SQL查询》中文版《T-SQL查询》(适用于SQL Server)

《Oracle的艺术》(适用于Oracle,只要是ASK Tom主编Thomas Kyte的作品)

8.深入研究SQL数据库

当你通过了第二阶段,你知道了所有的SQL命令,你在看到SQL问题后充满信心,并且你认为世界上所有的数据都可以被SQL接受时,你应该接受更困难的挑战。

现在你的角 {MOD}是河南郑州大学的学生会主席,所有学生信息都在你的掌握之中。 别小看这位学生会主席。 2017年,郑州大学总生7.26万人。 这时候如果你搜索一个白皙高挑的女孩,哎…别想错了,数据查询会很困难。 看看你是否着急!

我应该怎么办? 你熟悉SQL命令,但每次查一个人都要花20、30秒。 查看约会记录快则需要一两分钟,慢则需要半天!

此时,您应该练习 SQL 性能调优。 SQL数据库开发的真正挑战正式开始!

研究数据,必须从系统入手。 我总结了目前正在使用的SQL Server,它的知识点可以用20张思维导图来表达。

当然,如果你和我一样对纸质书情有独钟,这里推荐几本:

综合数据库调优书籍:

《数据库索引设计与优化》

《数据查询优化器的艺术》

Oracle相关调优书籍:

《甲骨文概念》

《甲骨文架构》

《Oracle DBA笔记》(云鹤恩墨出品,都是优秀产品)

MySQL相关调优书籍:

《高性能MySQL》

SQL Server相关调优书籍:

“SQL Server 内部”系列

《T-SQL性能调优精修——基于SQL Server 2012 Window Function》

阅读这些书应该需要你2-3年的时间。 当然,如果你愿意以007的速度喝咖啡看书(每周作7天,每天12小时),那么1年左右可能就够了。 但不建议这样做。 身体健康比什么都重要!

9. SQL人的职业生涯

当任何一条耗时超过5秒的SQL在你手中变成一秒的时候,你可能会尖叫,“我终于是世界第一了”。 但是等一下,别忘了,你还是会被项目经理催着去做事情,比如改一个字段,改一个需求,修复一个bug等等,这个时候,恐怕你需要什么最重要的是能干的左膀右臂,能干的需求分析,更重要的是能应对灵活多变的业务变化。 你甚至可能要卷起袖子,亲自关注业务变化,更加灵活地发布。 适配的数据模型。这时候数据建模、业务管理、数据治理、数据挖掘、安全审计等都来了

这是您职业生涯的分水岭。

如果你觉得自己就是做不了开会、扯皮、来回折腾的作,而只是喜欢指挥机器干活,那就选择技术性更强的方向学英语,比如运维DBA、数据库研究和发展。 从事这条路线意味着你需要了解更多的废知识,比如操作系统、网络协议、自动化、架构设计、分布式计算、云计算等,这些知识材料已经有现成的材料可供参考。 只要你有耐心努力学习,总有一天你一定会成功。

但也极容易放弃,因为东西太多,太复杂,而且有一些边缘学科你一时用不上,比如网络协议。 但如果不懂网络协议,遇到数据库安全问题,很容易被打败,死得很惨。 你的任何缺点都会随着每一次的失败而被无限放大,你会被很多同事视为无能,让你开始怀疑自己,鄙视自己。 所以,要做这个生意请问,零基础知识的同学如何学习SQL,学会写SQL需要多长时间?,首先要有一颗坚强的心。 在无数的批评下,一定要坚定自己的信念零基础英语先学什么,不要怀疑自己的判断,或者丧失基本的判断能力。

而运维不仅是一项脑力作,更是一项体力作。

白天,数据库上运行的所有应用程序都运行顺利,一般不会出现大问题。 看来DBA很轻松。 但到了晚上,你的作才刚刚开始。 有索引重建和磁盘报警; 有 ETL 作业失败并且数据库卡住; 有集群节点宕机,需要更换机器等等。 总之,又重又累的作是24/7做的,天亮营业前一定要修好。

有时候,那些夜猫子也很凶猛,半夜坚持抢点货、点夜宵。 你一下单,系统就崩溃了,你的梦想就破灭了。 也许你感冒了,正在休息,但你必须起床; 也许你正在电影院看《复仇者联盟》,但是不行,你必须回。 总之,为了作和修复数据库,必须尽快赶到现场。 有多少年轻的DBA在高压的场景下,留下了人生的第一滴血。

你说DBA这么累只有傻子才会选择。 你走第二条路,你就是在胡说八道!

恭喜你,你选择了一条可以通向高层的道路。 也许是 CTO,也许是 CEO。 通过做数据运营、做数据产品、或者做数据分析,你就认识了里所有大大小小的领导。 今天你和运营总监一起吃顿饭,明天和生产总监一起喝咖啡。 简而言之,他们希望您能够满足他们的所有需求。 你说你的团队人手不够,不人。 这和他们有什么关系?

你说用Excel就能实现功能,为什么需要一套很酷的可视化报表分析软件? 他们只是想要它! 你说需要一个月才能完成你的要求,但他们却拍着你的肩膀说:“你可以的,相信自己,两天就能完成,最多两天!”

零基础英语先学什么_英语基础学什么_英语基础学起

你带着那么多的需求回到办公室,看着这些青春洋溢的少男少女,刷着微博,舔着他们的微信朋友圈,一个个脸上都洋溢着热乔的香气。 你忍心让他们陪你加班到凌晨,为什么还要自费打滴滴?

最后,星爸爸的两个镜头,辣到让人心旷神怡。 熬夜到凌晨两点,连续两三天回家看不到老婆/老公的笑脸,给自己打气,都是为了家人。 我交报告的时候就说:把这里的数据改一下,口径要和运营部门的一致。 让其他部门看看吧。 好吧,明天下班前再聊。”

好吧,这次你得不要脸了,让孩子们一起改。 晚餐你自费肯德基全家桶,群里加班的人都打报销。 你默默地在群里丢了一个又一个红包。 收到一封又一封“老板很帅,老板还有一张零基础英语先学什么,但是宝贝没收到”

终于在截止日期前完成了,“怎么样,我说你可以的,我会关注你的。所以,我们昨天见了几个人,发现你原来的设计相当不错,但你还是需要做出一些改变。” 改变; 另外,数据还需要添加导入导出功能……”

如此一来一往,有一天你突然感觉“我用了十年的SQL技术,别人花了一年才真正学会”。 这个时候,你还会坚持自己的选择是对的吗? 如果不幸投资人撤资,你熟悉的环境消失了怎么办?

因此,在这些零碎的项目练习中,你能否总结出有效的规则,提高自己的业务沟通能力,掌握数据治理策略,严格控制项目管理进度,已经成为你的必修课。 一旦放松迷茫,你就完蛋了!

文本:关于 SQL

来源:SQL数据库零基础的新手,从入门到熟练的学习路线及书籍清单