• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chaleaochexist
V2EX  ›  程序员

后端工程师不会手写 sql,可以接受不?

  •  
  •   chaleaochexist · May 28, 2018 · 18639 views
    This topic created in 3080 days ago, the information mentioned may be changed or developed.
    select 肯定会写.
    但是建表什么的,insert into 也不会...

    如果没毛病我就不学了,有问题我就补补.想听听大家的看法.
    Supplement 1  ·  May 29, 2018
    不是不学,是学过不用就忘了。

    其实 python js java 敲多了,有时候 if else 怎么写都得找找前面的代码。
    也许是我记性差不适合干这行。

    为什么能接受 api 现查不能接受 sql 现查呢?

    BTree hash 索引我知道
    范式设计我也知道,我还知道反范式设计呢。。。
    Supplement 2  ·  May 31, 2018
    我现在觉得,还是有必要学一下的

    因为 mybatis 用到的 SQL 文,真的真的很普遍.

    其实我并不排斥学习 SQL -- 无论是半小时还是半天甚至半个月.
    因为学完不用就忘了,所以一直很抵触二次学习.

    由于将来会用到 mybatis,经常使用应该就不会忘了.所以决定学习.
    125 replies  •  2018-05-31 12:24:31 +08:00
    1  2  
    ❮ ❯
    xxxy
    xxxy
    May 28, 2018❤️1
    1
    讲道理,有发帖的时间花半个小时大概就能过一遍了
    Linxing
    Linxing
    May 28, 2018 via iPhone
    2
    讲真的 就算你不知道怎么写 你也要看得懂吧 也要了解原理 索引啊这些都是基本的
    current
    current
    May 28, 2018
    3
    最基本的 crud 总的会吧。。。。
    chaleaochexist
    chaleaochexist
    OP
    May 28, 2018
    4
    @Linxing
    能看懂,你可以这么理解,每次我写的时候都要百度一下...
    @xxxy
    能过一遍,过完就忘.
    不常用吧...
    就像算法,每次不都是快找工作了,开始补补.
    平时有几个人能略写快排呢.
    chaleaochexist
    chaleaochexist
    OP
    May 28, 2018
    5
    @current 只会 r...
    KgM4gLtF0shViDH3
    KgM4gLtF0shViDH3
    May 28, 2018 via iPhone
    6
    肯定不能接受啊,这个写的时候有没有提示
    noli
    noli
    May 28, 2018
    7
    讲真,MsSQL, MySQL, PostgreSQL 这么多种 SQL 方言我也不是全懂。
    但是我有工具可以 gen SQL。

    至于微调什么的还是交给专职 DBA 比较好。
    RorschachZZZ
    RorschachZZZ
    May 28, 2018
    8
    这就和 1+1=2 一样,有不会的吗。。。。
    phpcxy
    phpcxy
    May 28, 2018
    9
    大学老师教的 SQL 语句够我用了~
    tumi9527
    tumi9527
    May 28, 2018
    10
    后端这些都是基本的吧
    CoderGeek
    CoderGeek
    May 28, 2018
    11
    no。。。
    qq976739120
    qq976739120
    May 28, 2018
    12
    现在找工作这么容易了?为啥我面试都问到优化细节...
    zhaishunqi
    zhaishunqi
    May 28, 2018
    13
    还是自己会比较好吧.
    因为作为后台的话,你可能会接触到提数脚本的编写.烂点没关系,至少你得自己写出来啊,不用每个都去查吧.
    可能有些比较偏的函数记不住就算了,用的时候知道有去查下就好.
    0044200420
    0044200420
    May 28, 2018
    14
    极端情况没网络就完了
    leven87
    leven87
    May 28, 2018 via Android
    15
    基本功。
    xxxy
    xxxy
    May 28, 2018
    16
    @chaleaochexist 面试前到 leetcode 刷刷就行了
    newtype0092
    newtype0092
    May 28, 2018
    17
    @RorschachZZZ 1+1 不应该是 select 'Hello World'; 么?
    cxbig
    cxbig
    May 28, 2018
    18
    后端也是分很细的,一般不要求普通 dev 手写 SQL。
    为了便于管理,大多数情况,我们会要求程序员使用 ORM 来处理所有的 CRUD。
    akstrom
    akstrom
    May 28, 2018
    19
    这些心态不适合做后端,不管是业务后端还是服务器后端,劝你改行
    iyaozhen
    iyaozhen
    May 28, 2018 via Android
    20
    一般建表用工具吧,手写很容易出错吧
    2bbing
    2bbing
    May 28, 2018
    21
    我一直以为会 sql 以及相关简单优化和理解是后端开发的必备点。。。
    tjsdtc
    tjsdtc
    May 28, 2018
    22
    讲真,好多前端工程工程师都会写
    NSAtools
    NSAtools
    May 28, 2018
    23
    讲真,这是基础
    EmdeBoas
    EmdeBoas
    May 28, 2018
    24
    ...我们的产品都会...
    maemual
    maemual
    May 28, 2018
    25
    大概了解,具体语法细节用的时候再搜就好了。
    UIXX
    UIXX
    May 28, 2018
    26
    你可以忘记具体语法,但是你一定要用过,得会用,一些数据库基本引擎原理要懂。
    PS. 如果你要应聘,一定要过一遍。保证能手写。
    2379920898
    2379920898
    May 28, 2018
    27
    经常用链式操作。。 原声 SQL 早忘光光了
    yuanfans
    yuanfans
    May 28, 2018
    28
    讲道理,有发帖看回帖这个时间,都过完一遍了
    1313213
    1313213
    May 28, 2018
    29
    最基本的应该会写吧
    onepunch
    onepunch
    May 28, 2018❤️1
    30
    有句老话叫 “勿在浮沙筑高台” ,一知半解总有你哭的一天
    leotso
    leotso
    May 28, 2018 via iPhone
    31
    这应该属于基本功吧……顺便做个调查 有多少人知道递归查询
    mumbler
    mumbler
    May 28, 2018❤️1
    32
    给你个 google 能不能写,能就没事
    karllynn
    karllynn
    May 28, 2018
    33
    这不是基本功么。。这么菜鸡当什么后端
    lijsh
    lijsh
    May 28, 2018
    34
    我们的测试都是手写 SQL 暴力改数据库创造测试情景的
    SingeeKing
    SingeeKing
    May 28, 2018
    35
    会写是必须的,到底要不要写是另一码事。

    不要过度依赖 ORM,要是用了小众数据库或者一些特别复杂的操作还是要依托 pureSQL
    laravel
    laravel
    May 28, 2018
    36
    经常登录 mysql 命令行玩玩就会了,多看看文档
    initialdp
    initialdp
    May 28, 2018
    37
    不可接受。
    sunchen
    sunchen
    May 28, 2018
    38
    我们运营,测试,产品经理都会
    Raymon111111
    Raymon111111
    May 28, 2018
    39
    这个真的是两小时就能学会的东西...
    felinx
    felinx
    May 28, 2018
    40
    不收
    nekolr
    nekolr
    May 28, 2018 via Android
    41
    基本的 CRUD 要会,这个学习花不了多少时间。剩下复杂的一般也用不到,用到了能借助搜索引擎解决也行,这个慢慢积累。一般的后端这个程度就可以了
    boris1993
    boris1993
    May 28, 2018 via Android❤️2
    42
    我觉得吧,只要用的到,就要学就得至少会用
    我大学学的 C#,出来实习第一份工作干的是 IBM 主机,z/OS 系统,COBOL 语言。编程是公司给教,后面我要兼任管理员,咋办,爬 18 摸文档库啃,现在用户管理权限管理这俩必会的已经熟练了
    然后业务变动改做 Java,但是同样,Java 没怎么写过,框架也是头一次听说,MySQL,Redis,都没见过,咋办?爬教程一点点学,搭框架,写个小玩具,一边写一边学
    然后某银行 DevOps 投标 POC,仗着 Linux 玩得转,铁着头去了,然后发现 Jenkins 之类的,见过没用过更没配过,咋办?还 TM 不是爬教程去学,最后 POC 的要求达到了
    逼逼了这么多,我想说的就是,你既然要搞技术,那就不是说这玩意我能不能不会,而是这玩意有用那我就学一个。技多不压身,谁知道你这技能啥时候就派上用场了,更何况增删改查都是基本操作
    yeepZhang
    yeepZhang
    May 28, 2018
    43
    ...这都要纠结发个帖子问...
    nl101531
    nl101531
    May 28, 2018 via Android
    44
    作为后端,快排还是需要手撕的啊。。。
    mocurius
    mocurius
    May 28, 2018
    45
    @boris1993 #42 说的好,手动点赞。
    mhycy
    mhycy
    May 28, 2018
    46
    说白了还是懒
    qiyuey
    qiyuey
    May 28, 2018
    47
    反正我是记不住,都是生成的
    ZeoKarl
    ZeoKarl
    May 28, 2018 via iPhone
    48
    写两次就会了
    rb6221
    rb6221
    May 28, 2018 via Android
    49
    如果工作接触数据库 crud 必须会
    驱动 纯算法 操作系统这类可以不用会吧
    371657110
    371657110
    May 28, 2018
    50
    我一个前端都会手写了.
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    May 28, 2018❤️1
    51
    没事,知道自己不会就行了
    反正大部分工程师都不会,但都以为自己会
    pandago
    pandago
    May 28, 2018 via iPhone
    52
    要会的
    0x11901
    0x11901
    May 28, 2018
    53
    现在工作这么好找了么……
    CFO
    CFO
    May 28, 2018 via Android
    54
    我也就只会简单的 crud 加个简单的 join 有的同事写的复杂 sql 我看都看不懂…
    ilylx2008
    ilylx2008
    May 28, 2018 via Android
    55
    不可接受
    写代码不考虑 sql 性能的,就像小孩一样永远长不大
    xpresslink
    xpresslink
    May 28, 2018
    56
    我不会写代码想找个程序员工作,楼主觉得可接受么?
    dobelee
    dobelee
    May 28, 2018 via Android
    57
    請問 sql 語句都不會寫,到時候你好意思跟人談到 sql 優化、數據遷移、mysql 問題定位、mysql 高可用、mysql 集群嗎?更別提特性繁多的 SQLServer 和 Oracle 等。

    insert into 不用說了,就建表的語句,是 DDL 最最最基礎的技能,我大學畢業之前就已經手打過至少 1000 次建表語句,我只能說,要么你不用它,要么你不用心。

    另外,這些開篇技能都欠缺,我完全可以斷定你也不會其他數據庫基礎理論,如第三範式、b 樹索引、存儲引擎等相關知識。

    所以你覺得好嗎?
    zhangbohun
    zhangbohun
    May 29, 2018 via Android
    58
    select 最难
    jiangzhuo
    jiangzhuo
    May 29, 2018
    59
    手写红黑树都能接受,别说手写个 select 了。当然是选择原谅他了
    opengps
    opengps
    May 29, 2018
    60
    想要写出来高性能的代码,这些都是基础,不然一个数据库故障你用上一周去解决,你说你老大会不会开除你
    FrailLove
    FrailLove
    May 29, 2018
    61
    很多 Java 程序几百行才能解决的问题 一个 select 就能搞定 你怕不怕
    chaleaochexist
    chaleaochexist
    OP
    May 29, 2018
    62
    @boris1993 不知道老司机开了多少年车,想问一下
    > C#, IBM 主机,z/OS 系统,COBOL 语言。
    还剩下多少?

    ---
    其实我不是没学过,是学过不用就忘了,在学还是忘。。。也许我记性不好?
    为什么 select 会,因为 select 经常用。。。
    2pen
    2pen
    May 29, 2018
    63
    drop
    6diyipi
    6diyipi
    May 29, 2018
    64
    忘了就网上查一查啊, 你是不是来卖萌的。增删改查那么简单的。
    boris1993
    boris1993
    May 29, 2018 via Android
    65
    @chaleaochexist C 井和 COBOL 很久不写,略微手生。z/OS 目前时不时的要处理权限和资源释放问题,目前可以不看屏幕用消息指导同事操作。
    emmm,最早看你的帖子,理解成了根本不会写,而不是时间长不用忘了。我也会忘东西啊,所以手边常备 Google,时不时也会写点东西温习一下
    nbstoner
    nbstoner
    May 29, 2018
    66
    有啥不能接受的,你觉得你这样可以,然后让面试官觉得你这样可以。之后的工作中你也用你觉得可以的方法去做好工作。这不就得了
    keikeizhang
    keikeizhang
    May 29, 2018
    67
    也许未来工具集越来越多,可能不会 SQL 也没有什么,如果有杠精,想想编程语言的底层是什么。
    chaleaochexist
    chaleaochexist
    OP
    May 29, 2018
    68
    @6diyipi 不是卖萌。
    不过我有一个坏习惯就是做决定之前想听听别人的看法。V2 装逼的少,就上来问问。
    tedzhou1221
    tedzhou1221
    May 29, 2018
    69
    我觉得起码简单的要会写
    leeyom
    leeyom
    May 29, 2018
    70
    不接受
    jptx
    jptx
    May 29, 2018
    71
    建表这类的低频率、复杂而且很重要的 SQL 不记得也没关系,直接用工具来建表最安全省事,至于 INSERT INTO 之类的常用 SQL,平时操作数据库时多写几遍就记住了,结构很简单
    hanxiV2EX
    hanxiV2EX
    May 29, 2018 via Android
    72
    不用百度,准备一份手册,写的时候看看就行。又不是比速度,临时写也就 5 分钟的事情
    6diyipi
    6diyipi
    May 29, 2018
    73
    @chaleaochexist 常用语句用印象笔记记着。最多半小时全部整理的妥妥的。
    niubee1
    niubee1
    May 29, 2018
    74
    如果这个学不会我觉得是能力有问题, 接受不能.
    xjr7670
    xjr7670
    May 29, 2018
    75
    这都能做后端??为啥我找个工作那么难,问得那么多
    AdamMing
    AdamMing
    May 29, 2018
    76
    面试的时候不会问几种引擎的区别嘛。。
    KimJongun
    KimJongun
    May 29, 2018
    77
    不推荐 ORM,还是写原声 SQL 吧
    nullen
    nullen
    May 29, 2018
    78
    不能接受。
    akinoneko
    akinoneko
    May 29, 2018
    79
    我们的测试都会.
    zhaogaz
    zhaogaz
    May 29, 2018
    80
    其实我也忘,我跟楼主差不多,哈哈哈哈哈。

    经常写,还是忘。

    上面有人问,sql 递归,递归我也写过,具体到细节现在也忘了,大题思路还是有印象的。哈哈哈哈

    我觉得上面大部分人理解都是有问题的,记住了 /会了 就不会忘。怎么可能,又不是机器人,何况机器人也会坏呢。。。
    arthas2234
    arthas2234
    May 29, 2018
    81
    。。不会写 SQL 一些问题你要怎么排查,数据库要怎么优化。要碰到没有 DBA 的公司,数据库都要你设计怎么办。我们运维和产品 SQL 都写的贼 6,别说是后端了
    xsliang
    xsliang
    May 29, 2018
    82
    w3school 有一个 SQL 的快速参考
    http://www.w3school.com.cn/sql/sql_quickref.asp
    那里忘了看哪里 当然不包括一些细节
    silentstorm
    silentstorm
    May 29, 2018
    83
    嗯,没啥大问题。只要 update,delete 时候 where 语句别忘了写就行
    Lanke0
    Lanke0
    May 29, 2018
    84
    我经常忘,需要复习
    salamanderMH
    salamanderMH
    May 29, 2018
    85
    不可能吧
    YouXia
    YouXia
    May 29, 2018
    86
    工作前 3 年,没写过 SQL。后来做数据库内核开发时候,开始学了点。
    lazydog
    lazydog
    May 29, 2018 via Android
    87
    如果没特殊要求的话,黑猫白猫抓到老鼠就是好猫!
    southsala
    southsala
    May 29, 2018
    88
    对自己要求不高啊
    hjw45611
    hjw45611
    May 29, 2018
    89
    增删查改、嵌套、联表等常用操作都写个例子,放在工作文档里,用到就看一下,怎么也能记住了。
    ytll21
    ytll21
    May 29, 2018
    90
    对自己没要求的话,可以不会。
    enhancer
    enhancer
    May 29, 2018❤️1
    91
    如果是做企业级应用开发的话,后端不会写 SQL 几乎无法干活。互联网应用情况可能稍微好一点。比如很普通的财务总账 SQL:

    SELECT AB.subject_code code, AB.subject_name name
    , IFNULL(AB.debit_amount_init, 0) debit_amount_init
    , IFNULL(AB.credit_amount_init, 0) credit_amount_init
    , IFNULL(AB.debit_amount_curr, 0) debit_amount_curr
    , IFNULL(AB.credit_amount_curr, 0) credit_amount_curr
    , IFNULL(C.debit_amount_end, 0) debit_amount_end
    , IFNULL(C.credit_amount_end, 0) credit_amount_end
    , IFNULL(D.debit_amount_total, 0) debit_amount_total
    , IFNULL(D.credit_amount_total, 0) credit_amount_total
    FROM
    (SELECT B.subject_code, B.subject_name
    , A.debit_amount_init, A.credit_amount_init
    , B.debit_amount_curr, B.credit_amount_curr
    FROM
    (SELECT subject_code
    , subject_name
    , SUM(debit_amount) debit_amount_init
    , SUM(credit_amount) credit_amount_init
    FROM accounting_document_item adi, accounting_document ad
    WHERE adi.doc_id = ad.id
    AND date_format(accounting_date, '%Y%m') < CONCAT(@12-YEAR@, @12-MONTH@)
    GROUP BY subject_code, subject_name) A
    RIGHT JOIN
    (SELECT subject_code
    , subject_name
    , SUM(debit_amount) debit_amount_curr
    , SUM(credit_amount) credit_amount_curr
    FROM accounting_document_item adi, accounting_document ad
    WHERE adi.doc_id = ad.id
    AND date_format(accounting_date, '%Y%m') = CONCAT(@12-YEAR@, @12-MONTH@)
    GROUP BY subject_code, subject_name) B
    ON A.subject_code = B.subject_code) AB
    LEFT JOIN
    (SELECT subject_code
    , subject_name
    , SUM(debit_amount) debit_amount_end
    , SUM(credit_amount) credit_amount_end
    FROM accounting_document_item adi, accounting_document ad
    WHERE adi.doc_id = ad.id
    AND date_format(accounting_date, '%Y%m') <= CONCAT(@12-YEAR@, @12-MONTH@)
    GROUP BY subject_code, subject_name) C
    ON AB.subject_code = C.subject_code
    LEFT JOIN
    (SELECT subject_code
    , subject_name
    , SUM(debit_amount) debit_amount_total
    , SUM(credit_amount) credit_amount_total
    FROM accounting_document_item adi, accounting_document ad
    WHERE adi.doc_id = ad.id
    AND date_format(accounting_date, '%Y') = @12-YEAR@
    GROUP BY subject_code, subject_name) D
    ON AB.subject_code = D.subject_code
    guoyuchuan
    guoyuchuan
    May 29, 2018
    92
    至少基本的增删查改要会写,是会写,不是记得;
    younfor
    younfor
    May 29, 2018
    93
    @FrailLove 怕不怕 。当然怕。从工程的角度来看,都是必须的。我还喜欢写胖代码,胖接口。成吨成吨的写。太可怕了。当然 SQL 你当然也要会。什么索引啊。视图啊,存储过程啊都要会写吧。之前我为了把 echarts 和自己业务 BI 展示合在一起,还专门封装了一遍。就是在写 SQL。太可怕了。
    younfor
    younfor
    May 29, 2018
    94
    @enhancer 对。我想说的就是这个。企业应用类工程项目。必须是要会写的。有一次我 left join 10 张表。太可怕了。就为了查库存。
    HaoC12
    HaoC12
    May 29, 2018
    95
    熟悉行转列,列转行,仍然找不到好工作。
    cuzfinal
    cuzfinal
    May 29, 2018
    96
    测试运维都会手写 SQL。
    Tokin
    Tokin
    May 29, 2018
    97
    我一直以为这些简单的 sql 语句学过编程的人都会,工作之后发现并不是这样,很多人都不会写。
    不知道为什么,难道他们学编程的时候,都没涉及到数据库吗?
    大学一些作业不都是什么图书管理系统、学生信息管理系统吗?
    难道数据都写 txt 里了吗。。。。
    ChiangDi
    ChiangDi
    May 29, 2018
    98
    不会就百度呀。。。
    fuchaofather
    fuchaofather
    May 29, 2018 via Android
    99
    @xxxy 没毛病
    bomb77
    bomb77
    May 29, 2018❤️2
    100
    我记忆现在已经和金鱼差不多了,也动不动就怀疑自己是不是不适合做这行啊。。。
    算了,反正都是面向 Stack Overflow 编程。。。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5099 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 204ms · UTC 08:10 · PVG 16:10 · LAX 00:10 · JFK 03:10
    ♥ Do have faith in what you're doing.