一.查询SQL Server中所有的表 SQL语句:SELECT * FROM sys.tables name列表示所有的表名. 二.查询SQL Server中所有的列 SQL语句:SELECT * FROM sys.columns name列表示所有的字段名称. 两张表根据object_id进行关联. 语法: select * from sys.tables t inner join sys.columns c on t.object_id=c.object and c.name='要查询的字…
1.除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效. 解决方法:top 100 percent * 2.如何对查询结果编号? 解决方法:row_number() over (order by billdate desc) as rowid 3.如何查询多个不关联表?且各表的字段不一样怎么办? 解决方法:使用union all,具体方法如下面代码 示例代码:(执行成功,但代码有多余,为了提供实例说明) a.* from…
1. 向表中添加新的字段 alter  table  table_name  add  column_name  varchar2(20) not null 2. 删除表中的一个字段 delete table table_name column column_name 3. 修改表中的一个字段名 alter table table_name rename column oldname to newname 4. 添加主键约束    alter table 表名    add constraint…
DATALENGTH 返回任何表达式所占用的字节数. 语法 DATALENGTH ( expression ) 参数 expression 任何类型的表达式. 返回类型 int 注释 DATALENGTH 对 varchar.varbinary.text.image.nvarchar 和 ntext 数据类型特别有用,因为这些数据类型可以存储可变长度数据. NULL 的 DATALENGTH 的结果是 NULL. 说明  兼容级别可能影响返回值.有关兼容级别的更多信息,请参见 sp_dbcmpt…
用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说明这个问题. 现在我们有一张表叫T_Class_A,其建表语句如下: CREATE TABLE [dbo].[T_Class_A]( ,) NOT NULL, ) NULL, [StudentTotalCount] [int] NULL, ) NULL, CONSTRAINT [PK_T_Class…
不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict  ID  NAME  CATEGORY  1 RED  COLOR   2 BLUE COLOR  3 APPLE  FRUIT  4 ORANGE FRUIT 执行SQL语句:select category,dbo.concatenate(name) as names from dict group by category. 得到结果表如下  category  …
软件工程综合实践第一次作业 代码来源:班上同学的数据库大作业 alter table sc add GPA float; --加入绩点列 alter table sc ,);--将表按原始位置顺序编号(可加可不加) alter table sc add primary key(number) declare score_visit cursor --声明一个游标 for select score from sc open score_visit --打开游标 declare @GPA float…
如果我们直接用delete from语句来删除读写频繁的大表中的数据,很有可能会因为where的条件是全表扫描从而导致整个表被锁住了.如果该表是读写频繁的生产库那简直就是一场灾难,所有的线上读写请求都会因为表被锁而超时. 如果不想如此糟糕的情况发生,我们可以先分析一下导致表被锁住的原因.既然全表扫描会会导致锁表,那我们就先把删除操作分为查询和删除.然后再分批删除,如此就可以保证不会引发线上读写请求大规模超时.如果这样你还担心频繁的分批删除影响线上效率的话,还可以在每个批次加上一定的延时. /*…
我要查找值为‘WSCOL1525’的字段. declare @cloumns varchar(40)declare @tablename varchar(40)declare @str varchar(40)declare @counts intdeclare @sql nvarchar(2000)declare MyCursor Cursor For Select a.name as Columns, b.name as TableName from syscolumns a,sysobjec…
昨晚维护系统数据时,遇到个奇怪现象.明明数据库里有数据,查询结果就是返回为空.具体情况是这样的,查询工作日志表里关于工作描述的情况,以中文内容匹配工作描述字段,其中匹配内容里包含有空格. 尝试去掉第一个空格后面内容,查询有结果.而加多一个空格就没有了.不管是“=” 或者“like”匹配,均无结果. 于是,查看下工作描述字段类型,是nvarchar类型.想起来了,在匹配字符前加N. SQL语句: select * from 工作日志表 where 工作描述字段 =N'内容是客户填写  这里前面有空…