Tag: sql

如何从SQL Server 2008中select查询结果创build一个表

我想从SQL Server中select查询结果创build一个表,我试过了 create table temp AS select….. 但是我得到了一个错误 关键字“AS”附近的语法错误

有没有更好的方式来dynamic构buildSQL WHERE子句,而不是在开头使用1 = 1?

我在C#中build立一些SQL查询。 它会根据代码中作为variables存储的一些条件而有所不同。 string Query="SELECT * FROM Table1 WHERE 1=1 "; if (condition1) Query += "AND Col1=0 "; if (condition2) Query += "AND Col2=1 "; if (condition3) Query += "AND Col3=2 "; 它工作,但testing1 = 1似乎并不高雅。 如果我没有使用它,我将不得不记住,每次检查“where”关键字是否已经添加或不查询。 有更好的解决scheme吗?

存储过程的命名约定是什么?

我已经看到了命名存储过程的各种规则。 一些人在usp_前面加上了sproc的名字,其他的名字是应用名称的缩写,还有一些是所有者的名字。 除非你是真正的意思,否则你不应该在SQL Server中使用sp_。 一些用动词(Get,Add,Save,Remove)启动proc名字。 其他则强调实体名称。 在拥有数百个sprocs的数据库中,当您认为已经存在的时候,可能会很难滚动并find合适的sproc。 命名约定可以使查找更简单。 你使用命名约定? 请描述一下,并解释为什么你比其他select更喜欢它。 答复摘要: 每个人似乎都提倡命名的一致性,对于每个人来说,使用相同的命名约定可能比使用特定命名约定更为重要。 前缀:当很多人使用usp_或类似的东西(但很less使用sp_)时,许多人使用数据库或应用程序名称。 一个聪明的DBA使用gen,rpt和tsk来区分用于报告或任务的一般CRUD sprocs。 动词+名词似乎比名词+动词稍微受欢迎。 有些人对动词使用SQL关键字(Select,Insert,Update,Delete),而其他人则使用非SQL动词(或缩写),如Get和Add。 有些区分singluar和复数名词来表示是否正在检索一个或多个logging。 最后在适当的地方build议一个额外的短语。 GetCustomerById,GetCustomerBySaleDate。 有些人在名字段之间使用下划线,有些人避免使用下划线。 app_ Get_Customer与appGetCustomer – 我想这是一个可读性问题。 可以将大量sprocs分离到Oracle包或Management Studio(SQL Server)解决scheme和项目或SQL Server架构中。 应该避免不可思议的缩写。 为什么我select我所做的答案:有很多好的答案。 谢谢你们! 正如你所看到的,select一个将是非常困难的。 我select的那个对我产生了共鸣。 我遵循了他描述的相同的path – 尝试使用Verb + Noun,然后无法find所有适用于Customer的sprocs。 能够find现有的sproc,或者确定是否存在,是非常重要的。 如果有人无意中用另一个名字创build了一个重复的sproc,就会出现严重的问题。 由于我通常在数以百计的sprocs非常大的应用程序工作,我有一个最容易find命名方法的首选项。 对于较小的应用程序,我可能会提倡动词+名词,因为它遵循方法名称的通用编码约定。 他还提倡使用应用程序名称而不是非常有用的usp_作为前缀。 正如几个人指出的,有时数据库包含多个应用程序的sprocs。 因此,以应用程序名称作为前缀有助于分离sprocs,并帮助DBA和其他人确定哪个应用程序是用于sproc的。

如何在SQL Server Management Studio中快速编辑表中的值?

除了从对象资源pipe理器的上下文菜单 – >“编辑排名前200的行”,有没有一个快速的方法来打开编辑模式,我可以快速修改单元格的值的表? 我需要能够翻过前200行。 我不想写“插入”脚本,我需要做的每一个小调整…我不明白为什么短信不提供快速访问页面表编辑器(如Navicat)。

如何在T-SQL中使用数据库名称的variables?

我在我的脚本中的几个地方使用数据库名称,我希望能够快速更改它,所以我正在寻找这样的东西: DECLARE @DBNAME VARCHAR(50) SET @DBNAME = 'TEST' CREATE DATABASE @DBNAME GO ALTER DATABASE @DBNAME SET COMPATIBILITY_LEVEL = 90 GO ALTER DATABASE @DBNAME SET RECOVERY SIMPLE GO 但它不起作用。 那么编写这个代码的正确方法是什么?

SQL更新字段CONCAT不起作用的字段中的所有值

这是我想要做的: 当前表格: +—-+————-+ | id | data | +—-+————-+ | 1 | max | | 2 | linda | | 3 | sam | | 4 | henry | +—-+————-+ 神秘查询(类似于"UPDATE table SET data = CONCAT(data, 'a')" ) 结果表: +—-+————-+ | id | data | +—-+————-+ | 1 | maxa | | 2 | lindaa […]

如何将db模式更改为dbo

我从旧的SQL Server(2000)导入了一堆表到我的2008数据库。 所有导入的表都以我的用户名作为前缀,例如: jonathan.MovieData 。 在表格properties它将jonathan列为数据库模式。 当我编写存储过程时,我现在必须包含jonathan. 在所有令人困惑的表名前面。 我如何将所有的表格改为dbo而不是jonathan? 当前结果: jonathan.MovieData dbo.MovieData结果: dbo.MovieData

改变表格添加列语法

我试图以编程方式将一个标识列添加到一个表Employees。 不知道我在做什么错我的语法。 ALTER TABLE Employees ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1) ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY CLUSTERED ( EmployeeID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 我究竟做错了什么? 我试图导出脚本,但SQL Mgmt Studio做了整个Temp Table重命名的事情。 更新 :我认为这是第一个语句与“靠近关键字'列'不正确的语法窒息”。

SQL子句“GROUP BY 1”是什么意思?

有人向我发送了一个SQL查询,其中GROUP BY子句由以下语句组成: GROUP BY 1 。 这肯定是一个错字吗? 没有列给别名1.这是什么意思? 我是否有权假定这是一个错字?

当子查询没有被EXISTS引入时,只能在select列表中指定一个expression式

我的查询如下,其中包含一个子查询: select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC) 我收到的错误是… Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.` […]