代码之家  ›  专栏  ›  技术社区  ›  Clay

每个优秀的数据库/SQL开发人员都应该能够回答的问题[已关闭]

  •  66
  • Clay  · 技术社区  · 7 年前

    我正在经历 Questions every good .Net developer should be able to answer 我对这个问题的内容和方法印象深刻,因此本着同样的精神,我向数据库/SQL开发人员提出这个问题。

    你认为应该好好休息一下吗 数据库/SQL程序员是否能够响应?

    22 回复  |  直到 9 年前
        1
  •  31
  •   marc_s    16 年前

    不同类型的联接:

    • 内连接
    • 左右外接
    • 完全联接
    • 交叉连接

    看杰夫·阿特伍德的 Visual Explanation of JOINs

    • 什么是索引,它如何帮助您的数据库?

    • 可用的数据类型有哪些?何时使用哪些数据类型?

        2
  •  28
  •   OMG Ponies    9 年前

    重印的 my answer here ,作为主题的一般指南。


    1. SELECT 从表中删除列
    2. 骨料第1部分: COUNT , SUM , MAX / MIN
    3. 骨料第2部分: DISTINCT GROUP BY , HAVING

    中间的


    1. JOIN s、 ANSI-89和ANSI-92语法
    2. UNION vs UNION ALL
    3. NULL 处理: COALESCE
    4. IN , EXISTS ,和内联视图
    5. 子查询:相关
    6. WITH 语法:子查询分解/CTE
    7. 意见


    • 函数、存储过程、包
    • 数据透视:案例&轴心语法
    • 分层查询
    • 游标:隐式和显式
    • 物化视图
    • 查询优化:索引
    • 查询优化:解释计划
    • 查询优化:评测
    • 数据建模:范式,1到3
    • 数据建模:初级和中级;外键
    • 数据建模:表约束
    • 数据建模:链接/腐蚀表
    • 全文检索
    • COMMIT , ROLLBACK
        3
  •  12
  •   Phil Sandler    16 年前

    以下是一些:

    • 什么是标准化?为什么 重要吗?
    • 你在什么情况下 数据是否会去规范化?
    • 什么是交易?为什么是交易
    • 什么是参照完整性?为什么 重要吗?
    • 调查数据库运行缓慢的报告 演出
        4
  •  8
  •   user121301    16 年前

    什么是sql注入,如何防止它?

    什么是光标,何时使用(或不使用),为什么?

        5
  •  8
  •   powtac    9 年前

    我之所以给出这个答案,是因为埃尔文·斯穆特发表了一篇文章 answer 这是非常错误的,它强调了可能有必要特别防范它。

    如果候选人无法用火焰击倒索赔,他们可以:

    • 我不理解索赔的问题。

    记录在案

    1. 假设您的查询是正确的
    2. 兽皮 该问题(再次需要附加处理)。最好是找出问题并修复您的查询。。。那样会跑得更快。
        6
  •  5
  •   Randy Minder    16 年前

        7
  •  5
  •   HLGEM    16 年前

    我会给出一个写得很糟糕的查询,并询问他们将如何进行性能调优。

    我想问一下集合论。如果您不了解在集合中操作,那么就无法有效地查询关系数据库。

    我会给他们一些游标示例,并询问他们将如何重写这些示例,使它们成为基于集合的。

    如果工作涉及导入和导出,我会询问有关SSI(或其他数据库使用的与此相关的其他工具)的问题。如果涉及到编写报告,我想知道他们是否了解聚合和分组(以及Crystal reports或SSR或您使用的任何电子报告工具)。

    select  a.field1
            , a.field2
            , b.field3
    from table1 a
    join table2 b
        on a.id = b.id
    where a.field5 = 'test'
        and b.field3 = 1
    
    select  a.field1
            , a.field2
            , b.field3
    from table1 a
    left join table2 b
        on a.id = b.id
    where a.field5 = 'test'
        and b.field3 = 1
    
    select  a.field1
            , a.field2
            , b.field3
    from table1 a
    left join table2 b
        on a.id = b.id and b.field3 = 1
    where a.field5 = 'test'
    
        8
  •  5
  •   Jose Chama    16 年前

    两者之间的区别是什么 聚集索引与非聚集索引

    我想问的另一个不是针对特定服务器的问题是:

    什么是僵局?

        9
  •  4
  •   Jack Marchetti    16 年前

    SELECT *
    
        10
  •  3
  •   Jordão    16 年前

    一个有趣的问题是 relational division ,或如何表达“for all”关系,这需要嵌套 not exists

    这个问题来源于 this link .

    create table PilotSkills (
      pilot_name char(15) not null,
      plane_name char(15) not null
    )
    
    create table Hangar (
      plane_name char(15) not null
    )
    

    选择可以驾驶机库中每架飞机的飞行员姓名。

    select distinct pilot_name
    from PilotSkills as ps1 
    where not exists (
      select * from hangar
      where not exists (
        select * from PilotSkills as ps2 where 
          ps1.pilot_name = ps2.pilot_name and 
          ps2.plane_name = hangar.plane_name
      )
    )
    

    选择所有已接受带有标记的问题答案的堆栈溢出用户 10 most popular programming languages .

    (可能的)答案(假设 Accepted_Answers 视图和a Target_Language_Tags 带有所需标记的表):

    select distinct u.user_name
    from Users as u
    join Accepted_Answers as a1 on u.user_id = a1.user_id
    where not exists (
      select * from Target_Language_Tags t
      where not exists (
        select * 
          from Accepted_Answers as a2
          join Questions as q on a2.question_id = q.question_id
          join Question_Tags as qt on qt.question_id = q.question_id 
        where 
          qt.tag_name = t.tag_name and
          a1.user_id = a2.user_id
      )
    )
    
        11
  •  2
  •   jcm    16 年前

    当我们有一个使用经过适当优化的ORM并实现缓存系统(如 memcached ?

    这是一个严肃的问题,他们应该能够证明自己的存在。正如杰夫·阿特伍德喜欢说的那样” Hardware is Cheap, Programmers are Expensive

        12
  •  2
  •   Iker Jimenez    16 年前

    比较和对比sql/rdbms解决方案和nosql解决方案之间的差异。你不能声称自己是任何技术的专家,而不知道它与竞争对手相比的优势和劣势。

        13
  •  1
  •   user1228    16 年前

    (我喜欢这一个,因为人们从大学里出来,希望把一切都变成第三正常状态)

        14
  •  1
  •   JuanZe    16 年前
    • 预期答案,IMHO,使用不同日期/时间戳类型和BLOB解决问题的经验 .

    • 什么时候使用位图索引方便?

        15
  •  1
  •   David Oneill    16 年前

    什么 explain plan

        16
  •  1
  •   Disillusioned    16 年前
    • 什么样的锁定范例是典型可用的,并讨论它们的优缺点。
    • 讨论空值和相关问题。
    • 您使用过的最大的数据库系统是什么:#表、#行、#用户。

    • 时间戳数据类型用于什么?
        17
  •  1
  •   Tim Jarvis    16 年前

    该应用程序每天24小时都在使用。您的维护/更新窗口为每月2小时,您计划如何最大限度地减少中断?

        18
  •  1
  •   Shamik    16 年前

    这里几乎什么都提到了。我想和大家分享一个关于数据库的高级经理问我的问题。我发现这个问题很有趣,如果你深入思考,它有很多意义。

    问题是-你会如何向你5岁的孩子描述数据库?

        19
  •  0
  •   keithwarren7    16 年前
    • 解释两种方法之间的区别 内部和外部连接。
    • 什么是笛卡尔积?
    • 解释第三范式
        20
  •  0
  •   R van Rijn    16 年前
    • 解释表上可能存在的约束
    • 解释视图(和具体化视图)
    • 解释触发器
        21
  •  0
  •   AdaTheDev    16 年前
    • 使用临时/动态SQL语句的缺点是什么?您会怎么做?

    • 在什么情况下,您会使用临时/动态SQL语句?

    因为规则总是有例外:)

        22
  •  -2
  •   Erwin Smout    16 年前