Sql server MS SQL SERVER:SQL查询与常规编程的比较

Sql server MS SQL SERVER:SQL查询与常规编程的比较,sql-server,sql,Sql Server,Sql,我刚开始使用MSSQLServer(2008Express),并在最后一个小时左右尝试了一些基本的查询。sql脚本(正确的术语?)与一般计算机编程相比如何?编写sql查询是否与软件开发一样复杂、冗长、需要大量实践等?至少在某种程度上,编写高级sql查询可以与软件开发相媲美吗?如果可以,您能解释一下吗 此外,我还发现了一些学习sql的教程和参考网站,但您也可以推荐一些其他网站 另外(2),我在msSQL中使用sql查询设计器,它似乎是学习编写sql命令的一个好工具,但是有没有办法使用设计器插入数据

我刚开始使用MSSQLServer(2008Express),并在最后一个小时左右尝试了一些基本的查询。sql脚本(正确的术语?)与一般计算机编程相比如何?编写sql查询是否与软件开发一样复杂、冗长、需要大量实践等?至少在某种程度上,编写高级sql查询可以与软件开发相媲美吗?如果可以,您能解释一下吗

此外,我还发现了一些学习sql的教程和参考网站,但您也可以推荐一些其他网站

另外(2),我在msSQL中使用sql查询设计器,它似乎是学习编写sql命令的一个好工具,但是有没有办法使用设计器插入数据。似乎这只是为了选择数据


如有其他关于学习、理解等方面的一般性意见,将不胜感激。谢谢首先,SQL更多的是关于数据库,而不是编程,这样你就不能仅仅通过“编写好的查询”来获得成功:你还必须知道如何构造数据、制作优化的表、选择合适的类型等等。你可以花一天的时间考虑如何存储数据,没有真正编写任何查询SQL不是解决抽象问题的方法,而是高效、安全地存储和检索数据的方法。例如,制定维护和备份计划纯粹是DBA的工作,与SQL查询无关

学习时间长吗?嗯,在这里,它非常类似于一般的发展。基本SQL语法非常简单,所以在阅读SQL手册的第一页之后,您可能能够插入、检索和删除数据。但要掌握SQL和数据库方面的知识,您必须准备好多年的实践。就像CSS:编写CSS很容易。掌握它很难

一些建议:

考虑到安全问题。 通过发送字符串与SQLServer通信,服务器必须解释字符串。最大的错误是让最终用户参与构建您的查询:这会导致安全漏洞,黑客可以随心所欲地处理您的数据(称为SQL注入)。这就像让每个人编写他们想要的任何源代码,并在您的机器上执行。实际上,没有人允许第三方在她的机器上编写任意代码,但许多开发人员在查询数据库之前忘记了清理用户输入

使用参数化查询和存储过程。

您可能希望使用参数化查询尽快考虑。它将提高安全性,优化性能,并以某种方式迫使您编写更好的查询(即使这是有争议的)

在学习了几周或几个月的SQL之后,您可能还想学习什么是存储过程以及如何使用它们。它们有自己的优点,但不要犯我开始学习SQL时犯的错误:不要决定在任何地方都使用存储过程

使用框架。 如果您是.NET开发人员,请学习使用LINQtoSQL。如果您已经在.NET对象(列表、集合等)上使用了Linq,那么了解如何执行一些查询将非常有帮助。顺便说一下,请记住您可以使用Linq查询和

请记住,使用框架或抽象层不会使您成为数据库大师。使用它作为一个有用的工具,但有时自己也会使用SQL。是的,它可以让您不用手工编写SQL查询,即使是在大型项目上(例如,StackOverflow使用Linq to SQL)。但很快或稍后,您将需要处理一个不使用Linq的项目,或者您将看到Linq与普通SQL之间可能存在的一些限制

借一本书。 说真的,如果你想学东西,买一本书或者借一本书。教程将向您解释如何做一件精确的事情,但您将失去一个学习您从未想过的东西的机会。例如,如果您想成为DBA,就必须知道数据库分区或镜像。任何关于数据库的书都会谈到分区;另一方面,很少有教程会引导您自己学习这个主题

测试、评估、描述。 SQL是关于优化查询的。任何人都可以编写
select
语句,但许多人会以非优化形式编写

如果您处理的是最多有数百条记录的几千字节的数据库,那么所有查询都会执行得很好,但当事情扩大时,您会注意到一个简单的select查询会在数十亿行数据库上花费三秒钟,而不是几毫秒

要了解如何编写优化的查询和创建优化的数据库,请尝试使用大型集。从Microsoft开始是一个很好的起点,但有时您可能还需要用随机数据填充数据库,以获得足够的数据来正确衡量性能

使用Microsoft SQL Profiler(包含在SQL Server 2008 Enterprise中)。它将帮助您了解服务器真正在做什么以及速度有多快,并查找瓶颈和编写不好的查询

向别人学习。 读一本书是一个很好的开始,但还不够。阅读StackOverflow上的内容,特别是与从事DBA工作的开发人员相关的问题。例如,请参阅问题,并在学习SQL时不时返回阅读答案

如果您有任何精确的问题(一个无法产生您期望的结果的查询、一个奇怪的性能问题等),请随时在StackOverflow上提问。这个社区很棒,有很多人非常了解这些东西

有时,与公司的DBA交谈(如果有)也是一个学习的机会

是否有一种方法可以使用设计器插入数据。好像是开着的