精华内容
下载资源
问答
  • 作为程序员,Oracle复杂sql不会写,PL/SQL值得你学习

    千次阅读 热门讨论 2020-12-17 18:14:21
    这篇文章主要讲述PL/SQL语言,可能没仔细过的都会以为他不就是一个oracle客户端,不是这样的哦,他是一种过程化编程语言,他的功能建立在SQL之上,可以用来编写包含SQL语句的程序。需要的朋友们下面随着小编来一起...

    这篇文章主要讲述PL/SQL语言,可能没仔细学过的都会以为他不就是一个oracle客户端,不是这样的哦,他是一种过程化编程语言,他的功能建立在SQL之上,可以用来编写包含SQL语句的程序。需要的朋友们下面随着小编来一起学习学习吧。

    个人感觉PL/SQL语言还是特别有用的,我已经遇到很多次普通SQL解决不了的问题了。不知道你们是否遇到过。

    PL/SQL简介

    PL/SQL是一种过程化语言,在PL/SQL中可以通过IF语句或LOOP语句实现循环,甚至可以定义变量,跟我们后端代码很相似。

    像我们普通的SQL语句(如DML语句、DQL语句)那样没有流程控制,也不存在变量。当然PL/SQL允许内部嵌套普通的SQL,他可以配合SQL语句来完成一些纯SQL完不成的语法。

    在开发当中一般我们处理复杂的历史数据,或者程序优化当中都会用到。

    PL/SQL块结构

    PL/SQL程序都是以块为基本单温,整个PL/SQL块分为三部分

    declare
      --声明部分,不定义变量的情况下可以省略declare
    begin
      --执行部分,必须
    exception
      --异常处理部分,可选可不选
    end;
    

    声明部分(用declare开头)

    声明部分用declare开头,到begin结束,在这之间可以用来写变量、常量、游标等…

    执行部分(以begin开头)

    执行部分以关键字BEGIN开始,如果代码出现异常,则执行完异常处理就结束,没有异常就以关键字END结束,逻辑控制和运算都是在这部分写,可以写多个PL/SQL语句和SQL语句。

    异常处理部分(以exception开头)

    异常处理部分以exception开始,这个关键字执行完,就代表着整个PL/SQL块结束了,在执行PL/SQL代码(主要执行部分)的过程,可能会出现一些意想不到的错误,比如除数为0,空值参与运算等,这些错误都会导致程序中断,我们可以在这部分进行一些异常处理,当报错的时候提示错误信息,这样好快速锁定错误原因。我们可以使用WHEN THEN语句来实现对分支判断,类似IF,然后每个分支下通过编写代码来处理异常。

    其中begin执行部分是必须的,其他两个部分可选可不选。

    注意:每条语句必须以分号;结束。可以写成多行,但是也得以分号结束。

    PL/SQL如何快速创建

    本人用的是plsqldev客户端,当然创建出来的没有exception异常处理,自己加上就好了。
    这个Test windou就是专门来写PL/SQL的,他还支持debug。

    虽然他的语句在普通sql窗口也可以执行,但是这里我还是建议调试或者学习的话来使用这个窗口,从DBMS窗口可以看打印的值。

    在这里插入图片描述

    PL/SQL简单代码示例

    这个示例当中涉及到了循环、遍历、变量赋值、输出语句、异常处理这几个常用的。可能对于一点都没接触过的,看的有点萌萌的,你可以直接复制这个代码到你的客户端学习。

    -- Created on 2020/12/17 by GUO 
    declare
      i int := 3; --声明一个变量i = 3
      c number;
    begin
      --定义一个循环,当i大于-2的时候退出循环
      while i > -2 loop
        i := i - 1; --等同于 i = i--
        c := i / i; --c = i除i ,也就是i终究会有等于0的时候
        dbms_output.put_line(c);
      end loop;
    exception
      WHEN zero_divide then
        dbms_output.put_line('除数不能为零!');
    end;
    

    运行结果:

    从这里可以看到dbms_output.put_line为我们打印的值。

    理论上他还应该再输出一个1,因为我写的>-2退出循环,但是当他等于0的时候,已经0做除数报错了,所以执行部分直接给终止了,跳到了异常处理。

    在这里插入图片描述

    语法上需要注意的

    1、注释我们一般用–(两个横杠),但是超过一行,就必须在每一行的开头都适用–(连接符)
    2、多行注释可以采用 /* 开头,以 */ 结尾
    3、定义变量,每行只能定义一个变量或常量
    4、定义变量,名称必须以(A-Z,a-z)开始,最大长度30,如果以其他字符开始,那么必须要双引号扩住
    5、定义变量,名称只能使用A-Z,a-z,0-9,_,$,#,如果以其他字符开始,那么必须要双引号扩住
    6、定义变量,名称不能使用关键字,例如select update等,如果使用这些关键字命名,必须要双引号扩住。
    7、变量赋值,字符串文本赋值,必须用单引号引住。
    8、在oracle 10g之后,变量赋值如果字符串当中包含单引号,也可以使用[],{},<>进行赋值。那么不仅需要在分隔符前后加单引号,而且前缀要加个q,示例:

    A:= q'[iwdwad]';
    

    文章总结

    本篇文章只能让你初步了解PL/SQL的强大,以及他都能干什么,在后续我尽量抽时间对PL/SQL当中的变量,游标等等功能进行总结。

    这是本人昨天刚整理出来的PL/SQL支持的三种循环,想要深度学习的可以再看看这篇文章。

    PL/SQL循环: https://blog.csdn.net/weixin_43888891/article/details/111305170.

    展开全文
  • 为什么要学习SQL

    千次阅读 2018-10-12 17:16:19
    很多人喜欢一上来就推荐好几本书,但是这些书晦涩难懂,对于初学者入门非常不友好。入门只需要一本书就够了,而不是多本。入门要让初学者看懂才是最重要的,而...1.为什么要学习SQL? 明白学习的意义,让你有兴趣...

     

    很多人喜欢一上来就推荐好几本书,但是这些书晦涩难懂,对于初学者入门非常不友好。入门只需要一本书就够了,而不是多本。入门要让初学者看懂才是最重要的,而不是整那些高大上的东西。

    为了帮助刚毕业找工作,或者想转行成为数据分析师工作的朋友,我会陆续按下面教程目录,教会你怎样用最快速、最容易理解的方式学会SQL,并使用SQL进行数据分析:

    1.为什么要学习SQL?
    明白学习的意义,让你有兴趣学下去。

    2.什么是数据库,和SQL?
    了解数据库的基本概念。数据库和SQL是什么关系。

    3.如何安装数据库?
    1)安装Mysql服务端
    2)使用Mysql客户端访问数据库里的数据

    4.SQL从入门到熟练
    1)简单查询:select基本语法
    2)聚合与排序
    3)复杂查询:视图、子查询
    4)函数、谓词、CASE表达式 
    4)多表查询

    5.如何使用在线平台检验SQL的学习效果?

    6.如何应对SQL笔试和面试题?

     

    下面是这个系列教程的第1部分:为什么要学习SQL?

    很多人学不会的原因是从一开始就没明白学者东西能干啥,学会了能有什么用。以至于一开始兴致勃勃,但是学到一半放弃了。所以,坚持学会的根本不在于这个知识是否有多难,而在于它带给你的意义有多大。

    如果做事情没有意义,那么你就是没有学习的动力。

    学习SQL的意义,就在于你学会以后,将掌握数据分析应聘中的SQL能力,并找到一份数据分析工作。例如社群会员扑克牌成功转行数据分析,现在是饿了么业务分析师,就是靠擅长SQL数据分析。

     

    在数据分析的招聘中,SQL是必考的能力之一。为什么公司要考察应聘者的SQL能力呢?

    Excel对十万条以内的数据处理起来没有问题,但是大数据时代从来就不缺数据,很多公司的数据都放在数据库中,这时候就需要学习操作数据库的语言SQL。

    如果你未来想成为数据分析师的你,就需要掌握以下内容:

    1)会利用SQL操作开关系数据库mysql进行查询

    2)数据库的分组、聚合、排序

    3)存储过程

    4)对于增删改、约束、索引、数据库范式均大致了解即可,不需要深入

    最常见的考SQL的方法给你一个虚拟的数据库表结构,然后让你按给出的条件查询出数据,并用手写的形式写出在纸上。所以面试前把常用的SQL语句记清楚就行了。

    这次文章我们明白了学习SQL的意义是什么,明白了意义,就有学下去的动力和勇气。下次我们继续聊这个系列的第2部分:什么是数据库和SQL?

     

    推荐:如何用最短的时间找到初级数据分析师工作?

     

    展开全文
  • 有好多小伙伴留言说想看SQL的学习文章,虽然Excel、python现在比sql受欢迎,但我还是觉得得开始着手写SQL了。想了很久SQL的文章应该从什么角度来切入,最后决定通过对比Excel,来学习SQL,所以这是给小白的SQL学习...

    有好多小伙伴留言说想看SQL的学习文章,虽然Excel、python现在比sql受欢迎,但我还是觉得得开始着手写SQL了。想了很久SQL的文章应该从什么角度来切入,最后决定通过对比Excel,来学习SQL,所以这是写给小白的SQL学习文章。

    什么是SQL

    SQL(Structured Query Language)是一种数据库的结构化查询语言,常用的关系型数据库由MySQL,SQL Server,Oracle,Access等。

    那么什么是数据库呢?简而言之就是存储数据的仓库,Excel为什么不算数据库呢,因为它能够存储的数据量真的太小了,Excel2016到底是1048576行,意思是它最多存储104万条数据,但你要真存104万条数据在Excel里估计电脑不卡也残废。现在大数据时代数据动辄百万/千万,所以需要数据库来帮忙。

    总结一下,SQL就是对存储在数据库中的数据进行查询等操作的一种语言,所以你知道了,SQL本身是一种语言,如果你有语言学习的基础,那么学起SQL来就简单多了,没有也没关系,我们对比Excel,学习SQL。

     

    为什么要学SQL

    数据分析岗位的招聘,不管是哪个段位的,熟练使用SQL都是必备技能,所以,学起来把!

     

     

     

     

    怎么学SQL

    推荐实体书《MySQL必知必会》和《深入浅出MySQL》,所有系统的学习都是建立在书本之上,作为网上教程,W3School、MySQL菜鸟教程都很不错,至于其他的视频教程,就不推荐了,感觉大同小异,主要在于自己的理解与实操上。

     

    具体实操,可以直接下载MySql/ SQL Server/Access客户端进行本地操作,但是有个问题,你可能没有数据源,需要自己创建表。

    客户端和客户端之间也大有不同,MySQL客户端是命令行的形式,而Access是微软旗下界面很类似Excel的数据库,对于没有语言基础的同学来说可能更友好一些,至少它有个界面。

    网上在线练习的话推荐SQLZoo来练习,这是一个网页版的题库,个人感觉对于新手小白来说SQLZoo比安装那些数据库客户端要友好的多。

     

    基本概念的理解

    库、表、列、列的含义、数据类型。

    一个数据库里包含至少一个表,一个表里包含至少一个列。库可以理解为一个Excel工作簿,表就是其中的一张sheet表,列就是表中的一个字段。

    之前在讲Excel获取数据的时候提到过在Excel里数据类型其实可以划分成两大类:数值型和字符型。在SQL中也差不多,除了字符型和数值型以外还有日期和时间类型的数据,具体将在下一小节中介绍。

    你需要理解每张表包含了哪些列字段,这些字段都是什么含义,字段存储数据的格式是什么样的,有了这些概念以后方可进行查询的操作。

    下载MySQL与安装

    本系列将在MySQL客户端上进行操作讲解,MySQL客户端的下载和安装并不难,基本上是一路默认下来。

    百度MySQL,进入MySQL官网。

     

    在官网界面中向下滑,找到community社区版,点进去

     

    第一个Conmunity Server,点Download

     

    进入下载页面往下滑,注意,这里我们要选择.msi的安装方式,点蓝色背景框的go to download page,不要选择下载下面的.zip的文件包,zip需要自行配置,很复杂,稍微配置不好就用不了,msi就直接图形化配置一路默认即可。

     

    点进去后选择第二个离线下载就好

     

    还让你注册,就点no thanks 就好

     

    然后等待网页下载完,下载完以后点开运行,一路next,最后点击execute安装,等一会安装完了,继续next。

     

     

    还是一路next,一直到需要配置密码的部分,输入密码,别忘了,继续next,到execute

     

     

     

    Next一路南下,直到要输入上面配置的密码,然后接着next.

    全部安装配置完成以后,我们在开始菜单里就可以找到并打开MySQL客户端

    输入密码回车键,就登陆了。

    我们再来验证一下好使不好使,输入show database; 就展示出了系统存的数据库。

     

    如果对命令行界面感到难过的同学,可以直接去搜MySQL的题库,线上做题,或者用Access,图形化的界面,界面很类似Excel,对小白很友好,且也是可以用SQL语句的,如下图所示。但是学都学了,技多不压身是吧。

     

     

     

    MySQL的语法

    几个语法是要注意的

    • 分号(;)结束一条SQL语句
    • 不区分大小写,习惯性地关键字一般大写
    • 单引号(‘’)用来限定字符
    展开全文
  • 一,学SQL的苦恼 我观察了 865 个 SQL 入门者,发现大家在学习 SQL 的时候,最大的问题不是 SQL 语法,而是对 SQL 原理的不熟悉。 很多初学者,往往被 SQL 能做什么,为什么会有 SQL 这门语言给迷惑到了。他们用学...

    在这里插入图片描述

    一,学SQL的苦恼

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

    很多初学者,往往被 SQL 能做什么,为什么会有 SQL 这门语言给迷惑到了。他们用学英语的方法,去学SQL,结果发现什么都学不到,而且感觉越来越难学,难用。想想你为什么讨厌英语就明白了,每次翻开词典,从 abandon 学起来,不到 10 页就学不下去了,不就是因为太枯燥,太乏味了嘛。

    假如我告诉你,听听音乐 yesterday once more, 看看电影 iron man 就能轻松学好英语,是不是觉得有趣多了? 学 SQL 和学英语一样,选择枯燥的学习模式,必然带来不好的学习结果。我们追求的是轻松学 SQL 的方法。

    做个广告,我公众号【有关SQL】有近1万订阅者,分享了很多数据库论文与学习资料,还与许多读者深入交流了 SQL 数据库,Python, 以及大数据的学习方法,欢迎关注。


    二,SQL 的原理

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

    所有复杂的 SQL 语句,命令都是围绕着这个本质在做文章,添油加醋。

    如果对集合这个概念陌生,没关系,高中毕业那么久,不记得情有可原。毕竟当时老师也不知道,风靡全球的 SQL 会基于集合理念发明出来。

    集合,最简单的例子就是数组,比如 { a, b, c, d}。举个形象化的例子,比如大学全班同学,这是个大集合,按照性别进而可以分成男同学集合和女同学集合。

    男同学有什么特征?高大,威猛,有胡子。

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

    就这样,我们有两个大集合了,男同学集合,女同学集合。回到 SQL 的原理上来,针对这两个集合,SQL 运算做的事情,无非就是这几样:

    1. 寻找身高大于180cm的男同学
    2. 寻找身高最高的男同学
    3. 寻找有胡子的男同学
    4. 寻找长了胡子,身高低于160cm的男同学
    5. 统计没有长胡子的男同学人数
    6. 寻找最高的女同学
    7. 寻找最白的女同学
    8. 寻找又高又白的女同学
    9. 寻找正在谈恋爱的男女同学
    10. 寻找曾经谈过恋爱,而现在又有其他男女朋友的男同学和女同学

    你看,无非就是做这些事情。是不是对SQL立马就有好感了呢!


    三,SQL 的数学基础

    如此有趣的一件事情,教科书偏要说的枯燥(希望下面离散数学,集合理论的科普不会烦到你,不想看,完全可以跳过)

    1. 交换律(Commutative Laws):A ∪ B = B∪A, A ∩ B = B ∩ A
    2. 结合律(Associative Laws):(A ∪ B) ∪ C = A ∪ (B∪C) = A ∪ B∪C (A ∩ B) ∩ C = A ∩ (B ∩ C) = A ∩ B ∩ C
    3. 分配律(Distributive Laws): (A ∩ B) ∪C = (A∪C) ∩ (B∪C) (A∪B) ∩ C = (A ∩ C) ∪(B ∩ C)
    4. 等幂律(Impotent laws): A∪A = A,A∩A = A
    5. 吸收律(Absorption laws): (A∩B)∪A = A,(A∪B)∩A = A
    6. 同一律(Domination laws):A∪Ø = A,A∩Ω= A A∪Ω=Ω,A∩Ø = Ø;

    参考:http://math001.com/laws_of_set_theory/
    这罗列了详细的集合运算数学表达式。

    所以,千万别被教科书上的数学符号吓到,而失去了学习SQL的兴趣。学霸别听我的,这些符号我知道对你完全是小菜一碟。


    四,SQL基础问题

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

    1. 把全班男女同学登记到花名册上
    2. 找班上的八卦同学打听男女朋友关系,记录到恋爱关系秘本上

    这里用到的花名册,恋爱关系秘本就是数据库里的二维表。先建这两张表,分别是 Students(花名册表),Relationships(恋爱关系秘本)。为了更加形象,用 Excel 展示下,这两张表分别长这个样子:

    StudentIdNameGenderHeightMustacheSkinColor
    001陈冠奇186No
    002张白芷172No
    RelationshipIdBoyIdGirlIdBeginDateCurrentActiveEndDate
    10010010022002-4-1Y2008-4-1

    第一张表是 Students 花名册表,共有 6 栏,分别解释下含义:

    • StudentId: 用来标注学生的学号,一个学生只有一个学号;
    • Name:学生姓名;
    • Gender:学生性别;
    • Height:学生身高,cm 为单位
    • Mustache:有无胡子;
    • SkinColor:肤色

    第二张表是 Relationships(恋爱关系秘本),共有 6 栏,分别解释下:

    • RelationshipId: 男女朋友关系成立的编号,用来确立两人曾经处过或正在处于关系之中;
    • BoyId:男生编号;
    • GirlId:女生编号;
    • BeginDate:关系成立日期;
    • CurrentActive:当前是否还在恋爱期;Y 表示正在恋爱;N 表示已经分手;
    • EndDate:分手日期

    注意栏位在数据库中被称为字段

    用 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的工具: http://sqlfiddle.com/

    这款工具,有两大特点:

    • 支持六大数据库,MySQL,Oracle,SQL Server,PostgreSQL,SQLite;
    • 支持在线编辑及执行SQL,无需自搭数据库环境

    简单了解下:

    image

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

    1. 区域 1 的编辑器用来创建数据库 schema ,比如建表,新建数据;
    2. 区域 2 则用来编辑和执行 SQL;
    3. 区域 3 用来展示 区域 2 中的 SQL 执行结果

    使用这款工具,无需你手工安装数据库便可以完成本指南所有的 SQL.

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

    六,SQL 简易实战

    接下来,让我们为巧妇准备好精米。

    INSERT

    使用这条 SQL 命令,将添加全班同学的个人信息,包括姓名,学号,性别,身高,肤色,有无胡子,以及男女朋友关系,(当然这可不能让班主任知道。)

    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)
    

    好奇的小乐,查了查莫文丽的后台,发现她居然曾有过三次恋爱关系:

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

    恭喜!到此为止,所有的SQL基本操作你都会了。


    七,SQL 晋级分水岭

    有竞争力的技术肯定是要花大功夫来磨炼的,否则人人看一遍就会的东西,卖得出什么高价呢!

    因此当大家都度过第一阶段之后,如何意识到还有第二阶段,第三阶段,甚至第四阶段就很重要了。那会影响你的长期发展。舒适区是留给平庸者的。

    从技术角度,我们习惯将 SQL 数据库开发分为 4 个阶段:入门,初级,高级,资深。

    注:技术角度可分这四个阶段,并不代表做到资深,你一定能年薪百万。可千万别这么想,很多朋友咨询我的第一个问题是,“黄老师,以我的水平,能要个30K不?” 这我不打包票,能做到什么收入完全看你水平和天意(没错,很多时候,赚大钱靠运!)

    在本文中,我只谈 SQL 技术水平的晋级,不谈其他。

    上面的入门指南,相信你看完之后,写 SQL 基本掌握了。这一阶段过后,就是要通过反复的操练这些 SQL ,直到你熟透这些 SQL 命令和语法。

    帮你度过这阶段最好的方式,是什么呢?刷题。没错,简单粗暴。这里推荐牛客网,你可以试着去刷:

    image

    左边是题目,右边编辑 SQL, 点击【保存并调试】即可运行 SQL。系统会提示,你的答案是否通过!

    刷完这 60 多道题目,相信你的感觉一定很好!

    再推荐基本经典的小书,可以兼顾理论与实战,具体看哪一本,依据你使用的数据库软件来:

    《SQL 必知必会》(综合)
    《T-SQL Querying》中文《T-SQL 查询》(SQL Server适用)
    《Oracle编程艺术》(Oracle适用,只要是 ASK Tom 主编 Thomas Kyte 的著作不会错)

    打个广告。我在微信公众号【有关SQL】中分享了这些基础的电子书,你可以关注后,回复1024,便可拿到!


    八,SQL 数据库深入学习

    当你跨过了第二个阶段,所有的 SQL 命令都会了,看到 SQL 题目也有自信了,自认为天下数据,为 SQL 皆可取的时候,你应该来挑战下高难度了

    现在你的角色是河南郑州大学的学生会主席,所有学生的信息都归你管。别小看了这学生会主席,2017 年郑州大学在校人数总共有7.26万人。此时,你再查找个又白又高的女生,嘿嘿…别想歪咯,数据查询就会很难了。看你急不急!

    怎么办呢,SQL 命令你也玩熟了,但每次查个人都要花费个20,30秒,查个交友记录,快则1,2分钟,慢则半天!

    此时,你该修炼下 SQL 性能调优了。而 SQL 数据库开发真正的挑战才正式开始!

    要研究数据,就要从体系着手,我总结了一下目前正在使用的 SQL Server,它的知识点可以用 20 张思维导图来表达。而 SQL 性能调优正是与这 20 个知识点息息相关。

    20图归纳SQL Server知识点

    如果你使用的是其他数据库,那么一份详细的数据库体系图,是必不可少的。它就是深夜里的北极星,为你照亮了前进的方向。

    再一次,打个广告。我在微信公众号【有关SQL】中分享了这些有关数据库体系,性能调优,高可用高并发的电子书,你可以关注后,回复1024,便可拿到!

    当然你跟我一样,对纸质书情有独钟的话,这里推荐几本:

    综合类的数据库调优书:

    《数据库索引设计与优化》
    《数据查询优化器的艺术》

    Oracle 相关调优书:

    《Oracle Concepts》
    《Oracle 体系架构》
    《Oracle DBA 手记》(云和恩墨出品都是精品)

    MySQL 相关调优书:

    《高性能 MySQL》

    SQL Server 相关调优书:

    《Inside SQL Server 》系列
    《T-SQL 性能调优密集-基于 SQL Server 2012 窗口函数》

    这些书看下来应该会耗掉你2-3年的时间。当然,如果你愿意痛饮咖啡,用007(一周工作7天,每天连续12个小时)的速度来看书,那也可能1年左右就够了。但不建议这么干,身体健康比什么都重要!


    九,SQL 人的职业生涯

    当任何超过5秒的SQL,在你手下都变成了秒出时,你可能会昂天长啸,“老子终于天下第一啦”。不过且慢,你别忘记了,你还是会被项目经理催着干活,比如改个字段,改个需求,改处bug等等。此时,你恐怕最需要的是,一个得力的左膀右臂,一个能打的需求分析,更重要的是搞定灵活多变的业务变更,甚至你要挽起袖子,自己盯着业务变更,发布更灵活适配的数据模型。此时数据建模,业务管理,数据治理,数据挖掘,安全审核等等都来了

    此时,正是你职业生涯的分水岭。

    若你觉得你就是干不了开会,扯皮,来回折腾的活儿,就喜欢指挥机器干活,那就选择偏技术的方向,比如运维DBA,数据库研发。从事这条路线,意味着你要懂的更多的边角料知识,比如操作系统,网络协议,自动化编程,架构设计,分布式计算,云计算等。这些知识资料早已有现成的资料可以参考,只要耐得下心来学,一定有成功出头的那一天。但也极其容易放弃,因为东西实在太多,太杂,而且有些边缘性的学科,一时半会你还用不到,比如网络协议。但如果不懂网络协议,碰到数据库安全的问题,你就容易败下阵来,死的很惨。你的任何一个缺点都会伴随每一次的故障而被无限放大,被很多同事视为毫无战斗力,让你自己都开始怀疑自己,鄙视自己。所以干这行,首先要有一颗强大的心脏,在无数的口诛笔伐之下,你要坚挺自己的信念,不要怀疑自己的判断,丢失基本判断能力。

    且运维不仅仅是个智力活,还是个体力活。

    白天所有运行在数据库上的应用都好好地跑着,一般不会有大问题,看上去 DBA 很轻松。但是一到晚上,你们的活儿才刚刚开始。有索引重建,磁盘告警了;有 ETL Job 失败,数据库卡住了;有集群节点宕机,需要更换机器了,等等。总之 7*24 的重活,累活都来了,而且是必须赶在天亮业务开始之前修复。有时候,那些夜猫子也很凶悍,大晚上非还要抢点货,点个夜宵啥的。一下单,系统崩溃了,你的美梦也就泡汤了。或许你感冒了,正在休息,不行你得起来;或许你正在电影院看着复联呢,不行,你得回公司。总之,为了工作,为了抢修数据库,你必须第一时间赶赴现场。多少年轻的DBA都曾在高压现场,留下了人生中第一口鲜血。

    你说DBA那么累,傻子才选,你走第二条路,扯皮!

    恭喜你,你选了一条可以通向公司高层的路。也许是 CTO,也许是CEO。通过做数据运行,数据产品,或者数据分析,你认识了全公司上上下下的大小头目,今天与运营总监吃个饭,明天与生产总监喝个咖啡。总之他们提的一切需求,都希望你全部搞定。你说你团队人手不够,公司不肯招人,跟他们有什么关系?你说你excel就能实现的功能,为什么非要整一套炫酷而无任何实用价值的可视化报表分析软件?他们就想要!你说你这个需求要1个月才能做好,他们拍着你的肩膀说,“你可以的,要相信自己。俩天,顶多两天就能搞定!”

    你带着这么多需求回到你的办公室,看着满脸青春的这些小伙小姑娘们,刷着微博,舔着朋友圈,个个脸上洋溢着热焦玛的香气。你好忍心让他们陪你加班到凌晨,还自费打滴滴么!

    好不容易,2个shot的星爸爸热焦玛下肚,你来了精神。熬到凌晨2点,连续2,3天回家看不到老婆/老公的笑脸,还给自己打气,一切都是为了家庭。等到交上报告一看,“这里数据改一下,口径要和运营部统一”,“哪里整个版面太丑了,影响公司形象,再修得漂亮一些。还有,这些报表都要加上权限,不能让其他部门人看到。好吧,明天下班前我们再谈”。

    好吧,这回你只得厚起脸皮请小朋友们一起改了,晚餐自费交了KFC全家桶,全组加班人员,一律打车报销。你默默的在群里丢了一个又一个红包。收到一个又一个的“老板帅气,老板再来一个,宝宝没抢到”

    终于赶在deadline之前做完了,“怎么样,我说你可以的吧,看好你哦。这样,我们昨天几个人会后碰了下,发现你原来的设计也挺好,只是稍微还要再改改;还有,数据需要增加导入导出功能…”

    如此反反复复,来来回回的折腾,某天你突然感慨,原来“别人用了一年,真的学到了我十年所用会的SQL技术”。此时,你会坚持自己的选择是对的吗,假如不幸的是,公司投资人撤资了,你所熟悉的环境没了,怎么办?

    因此,在这些零零碎碎的项目锻炼中,你能否总结有效的规律,提高自己业务沟通的能力,掌握数据治理的策略,严格把控项目管理的进度,都成了你的必修课。一旦松懈和迷茫,可真是万劫不复!


    十,SQL 数据库必读书单

    如果你选的是 DBA,除了各家数据库文档要通读之外,还需要补充云计算相关:

    《数据库系统实现》
    《云计算通俗讲义》
    《让云落地:云计算服务模式》
    《云计算架构技术与实践》
    《Kubernates权威指南》
    《微服务架构设计模式》

    我的公众号【有关SQL】也提供了这些书的电子版。在后台回复1024,便可下载


    如果你选的是业务设计(无论是运营,产品,数据分析,尤其是数据分析师),那么这些书,肯定是要读一读的

    Kimball 的系列书:

    《维度建模权威指南》
    《数据仓库与商业智能宝典-成功设计、部署和维护 DW/BI 系统》

    业务场景解决方案:

    《计算广告》
    《推荐系统实战》
    《决战大数据》
    《大数据之路-阿里巴巴大数据实践》
    《企业IT架构转型之道》
    《设计数据密集型应用》

    大数据系列:

    《Hadoop 权威指南》
    《Spark 权威指南》
    《Hive 编程》
    《Hive 实战》
    《Spark 高级数据分析》
    《Hadoop构建数据仓库实践》

    我的公众号【有关SQL】也提供了这些书的电子版。在后台回复1024,便可下载

    以上就是基本路线了,能在5-10年搭好这个基础,你定当可以独当一面。

    展开全文
  • 以DataReader方式进行查询、更新,以ListView控件例查看查询内容
  • 1,函数在计算机语言的使用中贯穿始终,在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作,比如求某列数据的平均值,或者求字符串的长度等。 2.从函数定义的角度出发,我们可以将函数分成内置...
  • 为什么了n遍《1天精通springboot》,至今还是不精通springboot,甚至还是停留在学生项目?真正要做项目就应该一步到胃,半吊子半桶水是不行的。一个实战项目需要充分考虑状态码、异常处理、日志处理、性能监控、...
  • SQLServer入门学习一篇就够了

    万次阅读 多人点赞 2018-12-01 18:15:51
    本文主要介绍微软的SQLServer的数据库操作,内容由浅至深,望读者坚持阅读。 文章目录简介连接数据库数据库表表的一些概念约束外键添加操作主键与外键脚本操作功能分类查询常用辅助命令使用脚本添加数据表使用脚本...
  • 最新最全的 SQL 入门教程,老少皆宜,强烈推荐!

    千次阅读 多人点赞 2019-09-03 23:15:43
    最新最全的 SQL 从入门到精通教程。 零基础学习:通过简单易懂的示意图和案例分析,透彻讲解每个 SQL 知识点; 内容全面覆盖:从基础查询到高级分析,从数据库设计到查询优化,全面介绍 SQL 必备技巧; 基于最新标准...
  • Android学习之SQL基础使用

    千次阅读 2016-10-09 11:39:16
    SQLITE 构化查询语言 (Structured Query Language)是什么SQLite是一个轻量型的数据库。怎么样 轻量级 : SQLite数据库是一个轻量级的数据库, 适用于少量数据的CURD; 文件本质 : SQLite数据库支持大部分SQL语法, ...
  • 点击关注上方“SQL数据库开发”,设为“置顶或星标”,第一时间送达干货程序员在编程过程中,经常会在代码中使用到“where 1=1”,这是为什么呢?SQL注入初次看到这种写法的同学肯定很...
  • 大数据不就是写SQL吗?

    千次阅读 2018-10-17 09:27:00
    "不就是写SQL吗,要那么久吗" 欺负我小弟,这我肯定不能忍呀,于是我了一篇文章发在了公司的wiki 原文如下,省略了一些敏感的内容。 在哪里写SQL? 这个问题高级点的问法是用哪种SQL引擎? SparkSQL、Hive、...
  • SQL语句为什么要大写

    千次阅读 2019-08-01 07:36:39
    SQL之所以要求用大写,其实和SQL的执行有关,SQL也算是一种程序语言,而且比我们平时用的程序语言更高级,大小的问题只有一点,那就是:你好的SQL语句,在执行的时候,是先转化大写字母然后执行,如果小写转化大写,...
  • 大数据技术中SQL

    千次阅读 2019-08-19 17:45:27
    大数据技术中SQL的作用 SQL命令综述 DDL DML DCL & TCL 小结 前言 确实,关于SQL的学习资料,各类文档在网上到处都是。但它们绝大多数的出发点都局限在旧有关系数据库里,内容近乎千篇一律。而在当今...
  • 且行且珍惜 提升职场技能,关注公众号:一点IT技术 !学习更多IT技能!!!...这个需求使用函数来完成的话,当然也不会很复杂,但是如果筛选条件再多一些,就会比较复杂了,这样会造成后期维护比较
  • sql语句进阶教程(学习sql这一篇就够了)

    万次阅读 多人点赞 2016-05-04 21:47:28
    最近从图书馆借了本介绍SQL的书,打算复习一下基本语法,记录一下笔记,整理一下思路...什么SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的一种标准的计算机语言。 1.1 SQL语言主要有3个主要的组成
  • SQL 进阶教程

    万次阅读 2018-12-05 23:30:21
    本书是《SQL 基础教程》作者 MICK 志在向中级进阶的数据库工程师编写的一本 SQL 技能提升指南。 全书可分为两部分,第一部分介绍了 SQL 语言不同寻常的使用技巧,带领读者从 SQL 常见技术,比如 CASE 表达式、自...
  • sql是不是可以在service层?虽然service是业务层

    万次阅读 多人点赞 2016-12-15 17:44:40
    我记得我曾经javaweb的时候,也是被这个问题困惑过大半年,service层到底要不要出现sql或者Hibernate的hql语句? 我曾经有和你一样的困惑,比如有一个UserDao的接口,假如我想查询User,根据Id查询可能UserDao就...
  • SQL是一种关系型数据库,是一个可扩展的,高性能的,分布式客户机/服务器计算所和设计的数据库管理系统。 1,主要特性 高性能设计 系统管理先进,支持图形化管理工具,支持本地和远程的系统管理和配置 ...
  • 关系数据结构及形式化定义 一、关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 ...笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有...
  • Flink学习4-流式SQL

    千次阅读 2019-09-20 11:03:45
    Flink学习4-流式SQL 摘要 最近需要做流式数仓,所以调研就要...原生FlinkSQL没有实现对数据来源、数据目的地的SQL化,必须要代码。 这个就很坑了,一般来说,SQL面向数据分析人员,如果要代码无疑提高了门槛...
  • 本篇文章是笔者整理了整整一个通宵才出,希望大家三连好评,谢谢。当然,拥有本篇文章,你将会完全整我mysql的所有语句使用,不再用去购买或者杂乱学习。 MYSQL 最重要的命令 SELECT 从数据库中提取数据 UPDATE ...
  • 最近在刷 sql 题,刷完了网上的 SQL 面试必会 50 题,现把我的答案和思路整理如下,供大家参考。 这是目录一、创建四张表二、SQL面试必会50题(不含答案)三、SQL面试必会50题(含答案)四、学习资料 一、创建四...
  • SQL 优化极简法则,还有谁不会

    万次阅读 多人点赞 2020-10-23 11:38:53
    SQL 查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器、优化器实现、SQL 语句的执行顺序、索引以及统计信息的采集等,甚至应用程序和系统的整体架构。本文介绍几个关键法则,可以帮助我们编写...
  • 练习 38:SQL 简介 原文:Exercise 38: Introduction To SQL 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 学习如何建模和设计实体数据的最佳方法,是从非常基本的搭积木开始。数据库的 SQL(...
  • 本文目录mybatis的mapper文件中的一个标签是否可以多条SQL语句?是否存在事物?数据库事物的四大特性问题答案验证答案一、创建数据库表二、搭建SpringBoot+Mybatis项目(略)三、编写MVC三层代码四、启动服务器 ...
  • SQL 数据库 学习 004 预备知识

    万次阅读 2016-09-24 22:07:21
    使用的SQL Server软件: SQL Server 2014 Express如果我们要学习这个数据库,我们需要学习什么知识。预备知识先解决几个疑问:1 . 学习数据库必须得学习数据库原理吗按道理说是这个样子的。数据库原理里面讲的都是...
  • 练习 40:SQL 读取 原文:Exercise 40: Reading with SQL 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在 CRUD 矩阵中,你只知道“创建”。你可以创建表,你可以在这些表中创建行。现在我将告诉...
  • 基础篇:数据库 SQL 入门教程

    万次阅读 多人点赞 2021-09-02 21:13:58
    超全SQL教程,收藏就完事了!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,099
精华内容 65,639
关键字:

为什么学了sql还是不会写