最近我听说SQL是一种糟糕的语言,似乎太阳下的每个框架都预先打包了一个数据库抽象层。 根据我的经验,SQL通常是更简单,更通用,更方便编程的数据input和输出pipe理方式。 我所使用的每个抽象层似乎是一个明显有限的方法,没有真正的好处。 是什么让SQL如此糟糕,为什么数据库抽象层有价值?
我有兴趣了解数据库引擎如何工作(即它的内部)。 我知道CS(树,散列表,列表等)中教授的大部分基本数据结构以及对编译器理论的相当好的理解(并且已经实现了一个非常简单的解释器),但我不明白如何去关于编写数据库引擎。 我已经search了关于这个主题的教程,我找不到任何东西,所以我希望别人能指出我正确的方向。 基本上,我想了解以下信息: 数据如何存储在内部(例如,表格是如何表示的等) 引擎如何find它需要的数据(例如,运行SELECT查询) 如何以快速高效的方式插入数据 和其他可能与此相关的话题。 它不一定是在磁盘上的数据库 – 即使内存数据库是好的(如果更容易),因为我只是想了解其背后的原则。 非常感谢您的帮助。
我有一个错误 Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index. 其中key是一个nvarchar(max)。 快速谷歌发现这一点 。 但是它并不能解释什么是解决scheme。 我如何创build像字典那样的关键和价值都是string,显然这个关键必须是唯一的,是单一的。 我的SQL语句是 create table [misc_info] ( [id] INTEGER PRIMARY KEY IDENTITY NOT NULL, [key] nvarchar(max) UNIQUE NOT NULL, [value] nvarchar(max) NOT NULL);
我在SQL Server 2008中的架构上进行了积极的开发,并且经常要重新运行我的drop / create数据库脚本。 当我跑步 USE [master] GO IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase') DROP DATABASE [MyDatabase] GO 我经常得到这个错误 Msg 3702, Level 16, State 4, Line 3 Cannot drop database "MyDatabase" because it is currently in use. 如果右键单击对象浏览器窗格中的数据库并从上下文菜单中select删除任务,则会出现一个checkbox,用于“closures现有连接” 有没有办法在我的脚本中指定这个选项?
我有一个SQLite数据库,我想按字母顺序sorting。 问题是,在sorting过程中,SQLite似乎不考虑A = a,因此我得到如下结果: A B C T a b c g 我想得到: A a b B C c g T 需要做什么特殊的SQL事情,我不知道? SELECT * FROM NOTES ORDER BY title
我需要重新启动数据库,因为一些进程不工作。 我的计划是将其脱机并重新联机。 我正在尝试在Sql Server Management Studio 2008中执行此操作: use master; go alter database qcvalues set single_user with rollback immediate; alter database qcvalues set multi_user; go 我收到这些错误: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later. Msg 5069, Level 16, State 1, […]
有没有简单的SQL编辑器插件的Eclipse? 简单的说,我的意思是,编辑器不连接到任何数据库,语法突出显示,并最好格式化SQL是一个奖金。
我是新来的数据库和triyng学习数据库。 我不知道SQL和MySQL之间的区别。
我们以前的程序员在表中设置了错误的sorting规则(Mysql)。 他用拉丁语整理,当它应该是UTF8,现在我有问题。 每个中日文字符都转成??? 字符。 是否有可能改变整理和取回字符的细节?
我可以理解为了避免因为开销和不便而使用游标,但是看起来好像有一些严重的光标恐惧症,在那里人们将竭尽全力避免使用游标。 例如,有一个问题要问如何做一些显而易见的事情,使用recursion自定义函数的普通表expression式(CTE)recursion查询来提供接受的答案,尽pipe这会将可以处理的行数限制为32 (由于sql server中的recursion函数调用限制)。 这对我来说是系统寿命的可怕解决scheme,更不用说为了避免使用简单的游标而付出的巨大努力。 这种疯狂仇恨的原因是什么? 有一些“着名的权威”对游标发布了一个法特瓦? 在光标的核心潜伏着一些无法形容的邪恶,腐败的孩子的道德或什么的? 维基的问题,比代表更感兴趣的答案。 相关信息: SQL Server快速游标 编辑:让我更精确:我明白, 不应该使用游标,而不是正常的关系操作 ; 这是一个很容易的事情。 我不明白的是,人们为了避免像他们的老鼠那样的游标,甚至在游标是一个更简单和/或更有效的解决scheme的时候,都会避免使用游标。 这是让我感到困惑的非理性仇恨,而不是明显的技术效率。