V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Rush9999
V2EX  ›  程序员

后端程序员可以不会写 SQL 语句吗?

  •  
  •   Rush9999 · 2019-03-26 17:50:39 +08:00 · 18481 次点击
    这是一个创建于 1856 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我司进了两个后端,只会写 select * from ,其余复杂语句完全不会写,连 desc 都不知道是干什么的,排序倒叙就写负号
    第 1 条附言  ·  2019-03-26 18:26:27 +08:00
    这种情况,我要和领导说吗?要怎么婉转的告诉领导?当前的业务的确不需要复杂业务逻辑,他们所有表,需要关联的全都加外键了,orm 现在的确够用,就连用户操作日志都关联了外键,而且还做了冗余,好多表设计看的莫名其妙。。。看着就糟心。。。
    185 条回复    2019-03-29 10:22:10 +08:00
    1  2  
    ryan18
        101
    ryan18  
       2019-03-27 18:16:56 +08:00 via Android
    这些玩意几天就学会了吧,看人愿不愿意学了
    passerbytiny
        102
    passerbytiny  
       2019-03-27 18:17:19 +08:00
    ORM 不是理由,即使是 JPA/Hibernate 这种高级抽象的 ORM,也只是以对象为主要内容而不是全部内容,必要的时候还要 Native Sql。其它低级抽象 ORM,半 ORM 就更不用说了。

    别提 NoSql,我尝试过用 Spring Data Redis 做业务处理,被打脸了,Redis 不支持事务。其它的 NoSql,要么不是给后端用的,要么只是临时用。

    另外 desc 不是 SQL 专用的,对象也是需要排序的。desc 都不知道,那就不是不会 sql 的问题了,而是能力有问题。
    nicking
        103
    nicking  
       2019-03-27 18:18:48 +08:00
    @hayi hh,我之前也不知道百度了下就知道了,mybatis,Hibernate 就叫 orm 中间件
    dengtongcai
        104
    dengtongcai  
       2019-03-27 18:21:57 +08:00
    sql 又不难 多背背就好了
    OMGZui
        105
    OMGZui  
       2019-03-27 18:45:31 +08:00 via Android
    不可以
    leedong00
        106
    leedong00  
       2019-03-27 18:48:08 +08:00
    我不信做后端只会写 select,那他妈咋干活啊
    loading
        107
    loading  
       2019-03-27 18:49:20 +08:00 via Android
    先辞退再说
    RangerWolf
        108
    RangerWolf  
       2019-03-27 18:50:33 +08:00
    看这个人的潜质啊
    比如够努力, 够聪明,愿意学习, 这就是人才, 不会的那就请他自己学习一下。
    YouXia
        109
    YouXia  
       2019-03-27 18:50:47 +08:00
    后端也包括的很广,比如做 infr,我工作前几年,一条 SQL 也没有写过。后来开始搞 OLAP 才慢慢会写,不过水平肯定不如很多做业务的同学好。
    k9990009
        110
    k9990009  
       2019-03-27 18:55:10 +08:00
    数据库设计要有人把关~ SQL 不熟悉还是多练,数据统计的需求多了就熟了
    mmdsun
        111
    mmdsun  
       2019-03-27 18:56:29 +08:00 via Android
    基本操作。SQL 都不会还干嘛
    hubqin
        112
    hubqin  
       2019-03-27 19:02:08 +08:00 via Android
    sql 必知必会 看个一两天 自己跟着敲一边就会了
    smallX
        113
    smallX  
       2019-03-27 19:07:29 +08:00
    是不是 ruby 程序员
    wmhx
        114
    wmhx  
       2019-03-27 19:08:14 +08:00
    应届的吧, 不会还可以学的么? 碍你什么事了?
    murmur
        115
    murmur  
       2019-03-27 19:08:50 +08:00
    sql 语法是计算机本科课程,这和前端那坨东西不一样
    Flobit
        116
    Flobit  
       2019-03-27 19:10:13 +08:00 via Android
    会数据库和前端,我算什么?
    chunleioo123
        117
    chunleioo123  
       2019-03-27 19:11:49 +08:00
    @CFO 有一个 CAS 集成的问题,想请教你一下 麻烦回复我一下邮件 希望能交一个朋友或者提供适当报酬 邮箱 [email protected] 期待您的来信 谢谢
    chunleioo123
        118
    chunleioo123  
       2019-03-27 19:12:23 +08:00
    @CFO 有一个 CAS 集成的问题,想请教你一下 麻烦回复我一下邮件 希望能交一个朋友或者提供适当报酬 邮箱 [email protected] 期待您的来信
    shiny
        119
    shiny  
       2019-03-27 19:13:48 +08:00
    估计只考了算法忘记考 SQL 了
    cpdyj0
        120
    cpdyj0  
       2019-03-27 19:15:56 +08:00
    会 SQL 不会 ORM 找得到工作吗 [斜眼笑]
    dremy
        121
    dremy  
       2019-03-27 19:22:10 +08:00 via iPhone   ❤️ 1
    @cpdyj0 可以转行做数据分析
    hantsy
        122
    hantsy  
       2019-03-27 20:36:30 +08:00
    SQL 依然有用,但现在显然真的没那么重要。JPA/Hibernate 查询语言几乎可以代替 SQL。

    以前工作中,总有人想当然说的写 SQL 效率会比 JPA/Hibernate 高。除非你是某种数据库方面的专家,懂得调优具体 SQL,否则 90%以上的情况下,我完全不相信一般程序员写出来的 SQL 会比 JPA 最终转化成的 SQL 更好。

    现在的新项目中,基于代码维护的要求,我们基本倾向于使用 Type Safe 的查询语句(不再使用字符串查询语句),比如 JPA/Hibernate 的 Criteria 查询,或者 QueryDSL (支持 JPA,JDBC,Mongo 等),即使要用 SQL,JOOQ 是个不错选择。

    NOSQL 和 RDBMS 哪个适合要看场景来用。

    Redis 作为 Key/Value 方案不用质疑,也常用作 Cache 和共享 Session。MongoDB 是作为文档型的数据库,而且支持 GridFS。ElasticSearch 可以用来支持全文搜索。这些 Spring 和 Spring Data 项目都有集成,以我最近几年的项目来看,基本不会使用单一数据库了,都是用几种数据库(包含 NOSQL 和 RDBMS )结合用。
    fsafdasfsdafsd
        123
    fsafdasfsdafsd  
       2019-03-27 20:37:27 +08:00
    @dremy
    后端为什么一定要会写 SQL ?
    fsafdasfsdafsd
        124
    fsafdasfsdafsd  
       2019-03-27 20:41:39 +08:00   ❤️ 1
    我在这个帖子里的回答
    https://www.v2ex.com/t/548945#reply140
    你的阅读理解能力有问题,我不想表达
    ““所以你的比喻一点也不恰当,你想表达写前端不用懂 tcp 这个观点也是错的””
    这个观点。

    我想表达的是这样一个观点,
    你和 lz 不是计算机正规科班出身的,
    因为我觉得你连计算机一个基本思维能力都没有,
    那就是分层思维。
    就是不断从抽象到具体,
    一层一层逐渐细化的过程。


    什么时候计算机成背书式的科目了?
    计算机应该是索引式的科目。

    你从某本书里面抽一个点,问他他答不上来,这不是他的问题,而是你的问题。你应该不懂计算机学科该怎么学?
    不懂具体的技术细节不可怕,可怕的是不知道哪里可以去找到相关的技术细节和整体的知识框架。

    我从来没觉得前端应该不用懂 tcp, 我只是觉得你那 tcp 头部有多少字节去考前端人员,人家答不上来就说人家技术不行,在我看来,你连计算机该怎么学都没入门,
    真的就是培训学校出来的,因为这个知识点我懂,你不懂,所以我比你牛。

    没有基本的计算机学科的能力,这是我想表达的观点。
    chendeshen
        125
    chendeshen  
       2019-03-27 20:44:33 +08:00 via Android
    万物基于 CRUD
    fsafdasfsdafsd
        126
    fsafdasfsdafsd  
       2019-03-27 20:44:33 +08:00
    我说句不好听的,
    大家可以看看谷歌微软这些企业面试考的都是什么,你去看看他们会不会抽一本书让你背?
    说到底这么面试,无非就是一帮熟练工而已,一个稍微懂多点东西的熟练工看不起不那么懂的民工,真没什么可骄傲的,打工的而已。
    murmur
        127
    murmur  
       2019-03-27 20:50:07 +08:00
    @fsafdasfsdafsd 因为 SQL 是本科计算机的课程。。。
    iyaozhen
        128
    iyaozhen  
       2019-03-27 20:51:53 +08:00 via Android
    你要其它都会,只不会 sql,那毫无问题。

    关键是很可能其它也不会呀
    fsafdasfsdafsd
        129
    fsafdasfsdafsd  
       2019-03-27 20:53:21 +08:00
    @murmur
    我知道啊,我们学校有位人工智能大牛,本校本硕博,你让他现在去写 sql,我也不觉得他能写出来。
    我只想表达的是,计算机比谁背的书多那真是悲哀了。
    fakeshadow
        130
    fakeshadow  
       2019-03-27 21:06:52 +08:00   ❤️ 1
    不会 sql 的要么是水货,要么就是特别领域专精。虽然不能全都一棒子打死,但隔一个打死一个应该还有漏掉的。
    lincanbin
        131
    lincanbin  
       2019-03-27 21:27:52 +08:00
    如果岗位是 CRUD boy,那么不会 SQL 是不可饶恕的。
    catror
        132
    catror  
       2019-03-27 21:30:44 +08:00
    后端太广了,可能以往的业务不需要使用数据库,也可能用的是 NoSQL 数据库。不过这都不重要,现在工作需要使用,他愿不愿意去学才是关键。
    aver4vex
        133
    aver4vex  
       2019-03-27 21:31:33 +08:00
    不会写,会查也行呀,拿别人的改改能用不就得了。
    mskf
        134
    mskf  
       2019-03-27 21:42:07 +08:00
    以前做 ERP,大部分的业务光靠 ORM 是不够的,不过写 sql 这件事并没有难到没办法在工作中学习就是,用 ORACLE,mysql 这些数据库的时候基本都是现学现用,再借鉴一下别人的 sql 语句,也足够了
    blubzz
        135
    blubzz  
       2019-03-27 21:48:43 +08:00
    后端分很多种,有很多不需要使用关系数据库的
    witcat
        136
    witcat  
       2019-03-27 22:01:52 +08:00
    相当于前端不会写 css
    javaWeber
        137
    javaWeber  
       2019-03-27 22:17:45 +08:00
    最近项目里,都是直接调那些写好的 ORM 接口,我都没怎么写 sql。。
    lolizeppelin
        138
    lolizeppelin  
       2019-03-27 22:22:26 +08:00
    别拿什么大牛来给你当挡箭牌 你又不是大牛

    普通后端,不会写 sql 只能说明你一点不上进.
    scnace
        139
    scnace  
       2019-03-27 22:29:02 +08:00 via Android
    那肯定 NoSQL/NewSQL 玩的很 6 了
    bestkayle
        140
    bestkayle  
       2019-03-27 23:03:18 +08:00 via iPhone
    @fsafdasfsdafsd #125 我觉得你肯定没看过微软 Google 面试题
    ToT
        141
    ToT  
       2019-03-27 23:38:19 +08:00
    我觉得如果领导不懂技术,不会关心这些细节。只有你们有需求要提升后端处理效率的时候,他们才有动力学习研究。
    duan602728596
        142
    duan602728596  
       2019-03-27 23:49:08 +08:00 via iPhone
    什么?现在后端都不用写 sql 了?
    cuebyte
        143
    cuebyte  
       2019-03-27 23:55:35 +08:00
    很多會 SQL 的程序員平時還不是寫寫 CURD ⋯ 五十步笑百步沒意思。
    815979670
        144
    815979670  
       2019-03-28 00:19:25 +08:00 via Android
    只会 orm 可以开发项目 增删改查都能解决 但是 存储过程呢 主从分离呢 这是基本功 ,不会也能做项目 但是 作为后端 不应该
    shiji
        145
    shiji  
       2019-03-28 00:36:51 +08:00
    如果单学 SQL 语法,不需要熟悉 DBMS 的话,一个周末的时间你就能驾驭了。
    rob001
        146
    rob001  
       2019-03-28 01:15:43 +08:00 via iPhone
    我一个前端最近都拷贝数据库、写复杂查询、链接,复合、子查询、多表都写了。不过既然用了 orm,你怎么知道别人是不会写 sql 还是不需要不想写呢? orm 不是不用写 sql 吗?我用 spring boot,django 什么的也都不写 sql。desc 我看的时候知道是排序但怎么也记不起来是升序还是降序,但百度了一下就知道了。用 excel 里也有啊!计算机二级不考吗?
    CodeCommunist
        147
    CodeCommunist  
       2019-03-28 01:21:39 +08:00 via Android
    在中国,不是 mybatis 才主流吗,现在流行分布式,微服务什么的,orm 根本做不来
    calpes
        148
    calpes  
       2019-03-28 01:51:33 +08:00
    会不会不重要,如果每天都用的话,一个礼拜能上手(日常需求没问题),俩月能精通(性能调优),拥有这样的学习能力,这才是程序员的必要条件,不然哪天你们要整个 es 啥的,是不是又要问从来没用过 es 是不是一个合格的程序员了。。。
    Marsss
        149
    Marsss  
       2019-03-28 07:57:31 +08:00 via iPhone
    楼上老哥说的对,不要光凭会不会就看低一个人,要看他在工作需要的时候从不会到会的学习能力。在允许的情况下,如果你觉得这个年轻人人品还可以,尽量给点机会吧。
    ebingtel
        150
    ebingtel  
       2019-03-28 08:51:18 +08:00
    不行……不会 SQL 基本上也不会数据库设计吧…… ls 说的可以不会,大多数是因为自己不会吧……
    Variazioni
        151
    Variazioni  
       2019-03-28 08:58:00 +08:00
    这是基本技能啊。。又没有多难。。抽几天时间学学都不行么。。
    VoidChen
        152
    VoidChen  
       2019-03-28 09:05:02 +08:00
    @fsafdasfsdafsd 但是这位大牛要用 sql 不用 2 天就能学会,这就是差距明白吗。
    wweir
        153
    wweir  
       2019-03-28 09:08:35 +08:00 via iPhone
    不会写 SQL。但如果需要的话,可以详细分析一条 SQL 在数据库内的具体流转过程,分布式同样可以分析。
    单纯用到的少,不想花这时间
    chtcrack
        154
    chtcrack  
       2019-03-28 09:23:17 +08:00
    后端最基本的增删改查必须要会吧..
    zqguo
        155
    zqguo  
       2019-03-28 09:24:39 +08:00
    可以,会扯就行。
    66beta
        156
    66beta  
       2019-03-28 09:33:46 +08:00 via Android
    当时的技术面试官是几个意思?
    前端都会考啊,几个范式写不出总能说说吧
    ScorpioQ
        157
    ScorpioQ  
       2019-03-28 09:43:25 +08:00
    游戏后端,用的是 NoSQL 数据库。。。我真不会 @_@
    arthas2234
        158
    arthas2234  
       2019-03-28 09:45:26 +08:00
    作为后端 SQL 不是基础吗。。就算有 ORM,也会有用到 SQL 的时候吧。再说你有 SQL 的基础,对 ORM 理解也容易很多
    而且学校没有有关数据库的课,我是不信的
    我们公司,前端都会写 SQL,别说后端了
    liuxey
        159
    liuxey  
       2019-03-28 09:49:44 +08:00
    后端不会写 SQL 是不合格的,但不合格不代表不能胜任工作
    rockyou12
        160
    rockyou12  
       2019-03-28 09:55:35 +08:00
    后端不一定对 sql 很熟,不会真的是搞笑了。即使是 jpa 一类的 orm,你不写原生 sql 也总有必须要写 jpql 或者 native sql 的时候,我们也用 querydsl 去解决一些复杂查询,但真特别复杂多个连表的时候 jpql 还是好用得多。

    再说你用其他的后端存储,现在有几个不支持 sql 查询的?而且 sql 简单学一下要不了一天吧? inner outer left join 这些你暂时不晓得区别还能理解,order by 都写不出来还写啥代码……
    NieKing
        161
    NieKing  
       2019-03-28 09:55:55 +08:00
    我搞不懂咋招进来的。。。
    specita
        162
    specita  
       2019-03-28 09:58:12 +08:00
    倒序排序负号是一种方法吧,如果字段有 NULL,对这个字段进行排序的时候,负号和 DESC 的输出顺序就是不一样的,所以用负号排序也是有使用场景的,但只会写 select *肯定是初级的吧,只要肯学,指点一下也可以啊
    amon
        163
    amon  
       2019-03-28 09:59:21 +08:00
    if (综合能力不错) {
    瑕不掩瑜
    return
    }
    if (公司是否宁缺毋滥) {
    让他滚蛋
    return
    }
    还能咋地
    ilaipi
        164
    ilaipi  
       2019-03-28 10:07:42 +08:00
    不可以。甚至连前端、P 图都要会,sql 基本功能不会?
    tt67wq
        165
    tt67wq  
       2019-03-28 10:09:31 +08:00
    @ilaipi #164 真 全干工程师
    micean
        166
    micean  
       2019-03-28 10:21:30 +08:00
    互联网程序员不需要写报表吗?
    Keyes
        167
    Keyes  
       2019-03-28 10:55:05 +08:00 via iPhone
    @murmur 别说本科了,专科都是必学必考 233
    Seney
        168
    Seney  
       2019-03-28 11:09:54 +08:00
    @guyeu mysql 方言可以不清楚 但是做 oracle 真的需要了解 oracle 数据库的特定用法 以及后端一般都需要学 js 的 不对 应该所有人都应该学 js 毕竟是时代宠儿
    cuzfinal
        169
    cuzfinal  
       2019-03-28 11:37:42 +08:00
    先开掉一个,然后让另一个学 SQL,看看效果。
    pynix
        170
    pynix  
       2019-03-28 11:55:11 +08:00
    比较懒吧。。
    binux
        171
    binux  
       2019-03-28 12:09:18 +08:00
    我的底线是需要了解的知识,至少 w3schools 上面有的东西你得有个印象吧。
    读一遍 https://www.w3schools.com/sql/default.asp 都用不着两天的。
    ruandao
        172
    ruandao  
       2019-03-28 12:34:41 +08:00
    我 sql 最熟悉的是 大学时候
    后面没用到...服务端开发的时候, 基本和 redis 打交道...
    xiaxiaokang
        173
    xiaxiaokang  
       2019-03-28 12:48:19 +08:00 via iPhone
    有一种人,钱是要多的,事是不想干的
    voidbean
        174
    voidbean  
       2019-03-28 13:40:22 +08:00
    连 desc 都不知道有点过分了……
    而且就算如此 sql 基础那点东西学起来也不难啊
    如果让他们学都不行的话这问题就更大了
    赶紧甩给 boss 处理
    chinvo
        175
    chinvo  
       2019-03-28 13:52:08 +08:00 via iPhone
    @fsafdasfsdafsd #40 外键、索引会降低写性能,所以有些不需要严格外键约束的地方要避免
    fuchaofather
        176
    fuchaofather  
       2019-03-28 16:14:59 +08:00
    如果是低价招来的应届生, 那也不能抱怨了. 不是的话就辞退得了
    Luckyray
        177
    Luckyray  
       2019-03-28 16:20:29 +08:00
    我靠我连负号都不知道....只会 desc
    swordne
        178
    swordne  
       2019-03-28 16:42:37 +08:00
    @hayi 数据库对象映射关系。
    AngelCriss
        179
    AngelCriss  
       2019-03-28 16:47:11 +08:00
    我前两年分别做了对冲基金的交易系统,和 http 缓存系统,连数据库都没用到过。我可能是个假的后端,甚至连后端是啥都不知道?
    guanhui07
        180
    guanhui07  
       2019-03-28 16:59:18 +08:00
    会 orm 也会 sql 了吧
    SakuraKuma
        181
    SakuraKuma  
       2019-03-28 17:11:06 +08:00
    前端不会 js 可以吗,可以,页面仔(现在很少了吧
    后端不会 sql ?那干嘛,怎么入职的。
    songkai
        182
    songkai  
       2019-03-28 19:22:28 +08:00
    不会 sql,你们公司也是真心大。
    Shiyq
        183
    Shiyq  
       2019-03-28 23:07:54 +08:00
    学呗,又不难
    way2create
        184
    way2create  
       2019-03-29 08:55:53 +08:00
    这些都要会的吧,专业搞数据库的那些知识我倒是不太清楚
    ccgoing10
        185
    ccgoing10  
       2019-03-29 10:22:10 +08:00
    做 ebs 的,就是写 sql
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2823 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.