精妙SQL语句介绍_第1页
精妙SQL语句介绍_第2页
精妙SQL语句介绍_第3页
精妙SQL语句介绍_第4页
精妙SQL语句介绍_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精妙精妙 SQLSQL 语句介绍语句介绍 大全大全 之一之一 说明 查询从第 30 条到第 40 条的记录数 SQL select top 10 from temp where id not in select top 30 id from temp order by id asc order by id asc 说明 复制表 只复制结构 源表名 a 新表名 b SQL select into b from a where 11 说明 拷贝表 拷贝数据 源表名 a 目标表名 b SQL insert into b a b c select d e f from b 说明 显示文章 提交人和最后回复时间 SQL select a title a username b adddate from table a select max adddate adddate from table where table title a title b 说明 外连接查询 表名 1 a 表名 2 b SQL select a a a b a c b c b d b f from a LEFT OUT JOIN b ON a a b c 说明 日程安排提前五分钟提醒 SQL select from 日程安排 where datediff minute f 开始时间 getdate 5 说明 两张关联表 删除主表中已经在副表中没有的信息 SQL delete from info where not exists select from infobz where info infid infobz infid 说明 SQL SELECT A NUM A NAME B UPD DATE B PREV UPD DATE FROM TABLE1 SELECT X NUM X UPD DATE Y UPD DATE PREV UPD DATE FROM SELECT NUM UPD DATE INBOUND QTY STOCK ONHAND FROM TABLE2 WHERE TO CHAR UPD DATE YYYY MM TO CHAR SYSDATE YYYY MM X SELECT NUM UPD DATE STOCK ONHAND FROM TABLE2 WHERE TO CHAR UPD DATE YYYY MM TO CHAR TO DATE TO CHAR SYSDATE YYYY MM 01 YYYY MM DD 1 YYYY MM Y WHERE X NUM Y NUM AND X INBOUND QTY NVL Y STOCK ONHAND 0 X STOCK ONHAND B WHERE A NUM B NUM 说明 SQL select from studentinfo where not exists select from student where studentinfo id student id and 系名称 56 多表更新 update table1 a set a column1 select b column1 from table2 b where a column2 b 2column2 精妙精妙 SQLSQL 语句介绍语句介绍 大全大全 之二之二 查询表内容 SELECT 表名 case when a colorder 1 then d name else end 表说明 case when a colorder 1 then isnull f value else end 字段序号 a colorder 字段名 a name 标识 case when COLUMNPROPERTY a id a name IsIdentity 1 then else end 主键 case when exists SELECT 1 FROM sysobjects where xtype PK and name in SELECT name FROM sysindexes WHERE indid in SELECT indid FROM sysindexkeys WHERE id a id AND colid a colid then else end 类型 b name 占用字节数 a length 长度 COLUMNPROPERTY a id a name PRECISION 小数位数 isnull COLUMNPROPERTY a id a name Scale 0 允许空 case when a isnullable 1 then else end 默认值 isnull e text 字段说明 isnull g value FROM syscolumns a left join systypes b on a xtype b xusertype inner join sysobjects d on a id d id and d xtype U and d name dtproperties left join syscomments e on a cdefault e id left join sysproperties g on a id g id and a colid g smallid left join sysproperties f on d id f id and f smallid 0 where d name 要查询的表 如果只查询指定表 加上此条件 order by a id a colorder SQL 交 表实例 很简单的一个东西 见网上好多朋友问 怎么实现交 表 以下是我写的一个例子 数据库基于 SQL SERVER 2000 建表 在查询分析器里运行 CREATE TABLE Test id int IDENTITY 1 1 NOT NULL name nvarchar 50 COLLATE Chinese PRC CI AS NULL subject nvarchar 50 COLLATE Chinese PRC CI AS NULL Source numeric 18 0 NULL ON PRIMARY GO INSERT INTO test name subject Source values N 张三 N 语文 60 INSERT INTO test name subject Source values N 李四 N 数学 70 INSERT INTO test name subject Source values N 王五 N 英语 80 INSERT INTO test name subject Source values N 王五 N 数学 75 INSERT INTO test name subject Source values N 王五 N 语文 57 INSERT INTO test name subject Source values N 李四 N 语文 80 INSERT INTO test name subject Source values N 张三 N 英语 100 Go 交 表语句的实现 用于 交 表的列数是确定的 select name sum case subject when 数学 then source else 0 end as 数学 sum case subject when 英语 then source else 0 end as 英语 sum case subject when 语文 then source else 0 end as 语文 from test group by name 用于 交 表的列数是不确定的 declare sql varchar 8000 set sql select name select sql sql sum case subject when subject then source else 0 end as subject from select distinct subject from test as a select sql left sql len sql 1 from test group by name exec sql go SQL Server 存储过程的分页方案比拼 出处 SQL Server 存储过程的分页 这个问题已经讨论过几年了 很多朋友在问我 所以在此发表一下我的观 点 建立表 CREATE TABLE TestTable ID int IDENTITY 1 1 NOT NULL FirstName nvarchar 100 COLLATE Chinese PRC CI AS NULL LastName nvarchar 100 COLLATE Chinese PRC CI AS NULL Country nvarchar 50 COLLATE Chinese PRC CI AS NULL Note nvarchar 2000 COLLATE Chinese PRC CI AS NULL ON PRIMARY GO 插入数据 2 万条 用更多的数据测试会明显一些 SET IDENTITY INSERT TestTable ON declare i int set i 1 while i SELECT MAX id FROM SELECT TOP 20 id FROM TestTable ORDER BY id AS T ORDER BY ID SELECT TOP 页大小 FROM TestTable WHERE ID SELECT MAX id FROM SELECT TOP 页大小 页数 id FROM 表 ORDER BY id AS T ORDER BY ID 分页方案三 利用 SQL 的游标存储过程分页 create procedure XiaoZhengGe sqlstr nvarchar 4000 查询字符串 currentpage int 第 N 页 pagesize int 每页行数 as set nocount on declare P1 int P1 是游标的 id rowcount int exec sp cursoropen P1 output sqlstr scrollopt 1 ccopt 1 rowcount rowcount output select ceiling 1 0 rowcount pagesize as 总页数 rowcount as 总行数 currentpage as 当前页 set currentpage currentpage 1 pagesize 1 exec sp cursorfetch P1 16 currentpage pagesize exec sp cursorclose P1 set nocount off 其它的方案 如果没有主键 可以用临时表 也可以用方案三做 但是效率会低 建议优化的时候 加上主键和索引 查询效率会提高 通过 SQL 查询分析器 显示比较 我的结论是 分页方案二 利用 ID 大于多少和 SELECT TOP 分页 效率最高 需要拼接 SQL 语句 分页方案一 利用 Not In 和 SELECT TOP 分页 效率次之 需要拼接 SQL 语句 分页方案三 利用 SQL 的游标存储过程分页 效率最差 但是最为通用 在实际情况中 要具体分析 得到随机排序结果 出处 SELECT FROM Northwind Orders ORDER BY NEWID SELECT TOP 10 FROM Northwind Orders ORDER BY NEWID select to char 日期 yyyymmdd DATE ID to char 日期 yyyy 年 to char 日期 mm 月 to char 日 期 dd 日 DATE NAME to char 日期 yyyymm MONTH ID to char 日期 yyyy 年 to char 日期 mm 月 MONTH NAME Q to char 日期 q yyyy QUARTERID to char 日期 yyyy 年第 to char 日期 q 季度 QUARTERID NAME to char 日期 yyyy YEAR ID to char 日期 yyyy 年 YEAR NAME from select to date 2000 01 01 yyyy mm dd rownum 1 日期 from user objects where rownum 367 and to date 2000 01 01 yyyy mm dd rownum 1 to date 2001 01 01 yyyy mm dd 得到季度和月份对应关系 select distinct to char 日期 q 季度 to char to date 2001 01 01 yyyy mm dd rownum 1 yyyymm 日期 from select to date 2001 01 yyyy mm rownum 1 日期 from user objects where rownum 367 and to date 2001 01 01 yyyy mm dd rownum 1 to date 2002 01 01 yyyy mm dd 得到一年中的天数 select to char to date 2000 01 01 yyyy mm dd rownum 1 yyyy mm dd 日期 from user objects where rownum 367 and to date 2000 01 01 yyyy mm dd rownum 1 to date 2001 01 01 yyyy mm dd 获取一个数据库的所有存储过程 可以用 select from sysobjects where type p 生成交 表的简单通用存储过程 出处 if exists select from dbo sysobjects where id object id N dbo p qry and OBJECTPROPERTY id N IsProcedure 1 drop procedure dbo p qry GO 生成交 表的简单通用存储过程 根据指定的表名 纵横字段 统计字段 自动生成交 表 并可根据需要生成纵横两个方向的合计 注意 横向字段数目如果大于纵向字段数目 将自动交换纵横字段 如果不要此功能 则去掉交换处理部分 邹建 204 06 调用示例 exec p qry syscolumns id colid colid 1 1 create proc p qry TableName sysname 表名 纵轴 sysname 交 表最左面的列 横轴 sysname 交 表最上面的列 表体内容 sysname 交 表的数数据字段 是否加横向合计 bit 为 1 时在交 表横向最右边加横向合计 是否家纵向合计 bit 为 1 时在交 表纵向最下边加纵向合计 as declare s nvarchar 4000 sql varchar 8000 判断横向字段是否大于纵向字段数目 如果是 则交换纵横字段 set s declare a sysname if select case when count distinct 纵轴 count distinct 横轴 then 1 else 0 end from TableName 1 select a 纵轴 纵轴 横轴 横轴 a exec sp executesql s N 纵轴 sysname out 横轴 sysname out 纵轴 out 横轴 out 生成交 表处理语句 set s set s select s s cast 横轴 as varchar sum case 横轴 when cast 横轴 as varchar then 表体内容 else 0 end from TableName group by 横轴 exec sp executesql s N s varchar 8000 out sql out 是否生成合计字段的处理 declare sum1 varchar 200 sum2 varchar 200 sum3 varchar 200 select sum1 case 是否加横向合计 when 1 then 合计 sum 表体内容 else end sum2 case 是否家纵向合计 when 1 then 纵轴 case grouping 纵轴 when 1 then 合计 else cast 纵轴 as varchar end else 纵轴 end sum3 case 是否家纵向合计 when 1 then with rollup else end 生成交 表 exec select sum2 sql sum1 from TableName group by 纵轴 sum3 go 利用排序规则特点计算汉字笔划和取得拼音首字母 出处 SQL SERVER 的排序规则平时使用不是很多 也许不少初学者还比较陌生 但有 一个错误大家应是经常碰到 SQL SERVER 数据库 在跨库多表连接查询时 若两数据 库默认字符集不同 系统就会返回这样的错误 无法解决 equal to 操作的排序规则冲突 一 错误分析 这个错误是因为排序规则不一致造成的 我们做个测试 比如 create table t1 name varchar 20 collate Albanian CI AI WS value int create table t2 name varchar 20 collate Chinese PRC CI AI WS value int 表建好后 执行连接查询 select from t1 A inner join t2 B on A name B name 这样 错误就出现了 服务器 消息 446 级别 16 状态 9 行 1 无法解决 equal to 操作的排序规则冲突 要排除这个错误 最简单方法是 表连接时指定它的排序规则 这样错误就 不再出现了 语句这样写 select from t1 A inner join t2 B on A name B name collate Chinese PRC CI AI WS 二 排序规则简介 什么叫排序规则呢 MS 是这样描述的 在 Microsoft SQL Server 2000 中 字符串的物理存储由排序规则控制 排序规则指定表示每个字符的位模式以及存 储和比较字符所使用的规则 在查询分析器内执行下面语句 可以得到 SQL SERVER 支持的所有排序规则 select from fn helpcollations 排序规则名称由两部份构成 前半部份是指本排序规则所支持的字符集 如 Chinese PRC CS AI WS 前半部份 指 UNICODE 字符集 Chinese PRC 指针对大陆简体字 UNICODE 的排序规则 排序规则的后半部份即后缀 含义 BIN 二进制排序 CI CS 是否区分大小写 CI 不区分 CS 区分 AI AS 是否区分重音 AI 不区分 AS 区分 KI KS 是否区分假名类型 KI 不区分 KS 区分 WI WS 是否区分宽度 WI 不区分 WS 区分 区分大小写 如果想让比较将大写字母和小写字母视为不等 请选择该选项 区分重音 如果想让比较将重音和非重音字母视为不等 请选择该选项 如果选择该选项 比较还将重音不同的字母视为不等 区分假名 如果想让比较将片假名和平假名日语音节视为不等 请选择该选项 区分宽度 如果想让比较将半角字符和全角字符视为不等 请选择该选项 三 排序规则的应用 SQL SERVER 提供了大量的 WINDOWS 和 SQLSERVER 专用的排序规则 但它的应用往往 被开发人员所忽略 其实它在实践中大有用处 例 1 让表 NAME 列的内容按拼音排序 create table t id int name varchar 20 insert t select 1 中 union all select 2 国 union all select 3 人 union all select 4 阿 select from t order by name collate Chinese PRC CS AS KS WS drop table t 结果 id name 4 阿 2 国 3 人 1 中 例 2 让表 NAME 列的内容按姓氏笔划排序 create table t id int name varchar 20 insert t select 1 三 union all select 2 乙 union all select 3 二 union all select 4 一 union all select 5 十 select from t order by name collate Chinese PRC Stroke CS AS KS WS drop table t 结果 id name 4 一 2 乙 3 二 5 十 1 三 四 在实践中排序规则应用的扩展 SQL SERVER 汉字排序规则可以按拼音 笔划等排序 那么我们如何利用这种功能 来处理汉字的一些难题呢 我现在举个例子 用排序规则的特性计算汉字笔划 要计算汉字笔划 我们得先做准备工作 我们知道 WINDOWS 多国汉字 UNICODE 目前 收录汉字共 20902 个 简体 GBK 码汉字 UNICODE 值从 19968 开始 首先 我们先用 SQLSERVER 方法得到所有汉字 不用字典 我们简单利用 SQL 语句就 可以得到 select top 20902 code identity int 19968 1 into t from syscolumns a syscolumns b 再用以下语句 我们就得到所有汉字 它是按 UNICODE 值排序的 select code nchar code as CNWord from t 然后 我们用 SELECT 语句 让它按笔划排序 select code nchar code as CNWord from t order by nchar code collate Chinese PRC Stroke CS AS KS WS code 结果 code CNWord 19968 一 20008 丨 20022 丶 20031 丿 20032 乀 20033 乁 20057 乙 20058 乚 20059 乛 20101 亅 19969 丁 从上面的结果 我们可以清楚的看到 一笔的汉字 code 是从 19968 到 20101 从小到大排 但到 了二笔汉字的第一个字 丁 CODE 为 19969 就不按顺序而重新开始了 有了这结果 我们就可以轻 松的用 SQL 语句得到每种笔划汉字归类的第一个或最后一个汉字 下面用语句得到最后一个汉字 create table t1 id int identity code int cnword nvarchar 2 insert t1 code cnword select code nchar code as CNWord from t order by nchar code collate Chinese PRC Stroke CS AS KS WS code select A cnword from t1 A left join t1 B on A id B id 1 and A code B code where B code is null order by A id 得到 36 个汉字 每个汉字都是每种笔划数按 Chinese PRC Stroke CS AS KS WS 排序规则排序后的 最后一个汉字 亅阝马风龙齐龟齿鸩龀龛龂龆龈龊龍龠龎龐龑龡龢龝齹龣龥齈龞麷鸞麣龖龗齾齉龘 上面可以看出 亅 是所有一笔汉字排序后的最后一个字 阝 是所有二笔汉字排序后的最后 一个字 等等 但同时也发现 从第 33 个汉字 龗 33 笔 后面的笔划有些乱 不正确 但没关系 比 龗 笔划 多的只有四个汉字 我们手工加上 齾 35 笔 齉 36 笔 靐 39 笔 龘 64 笔 建汉字笔划表 TAB HZBH create table tab hzbh id int identity cnword nchar 1 先插入前 33 个汉字 insert tab hzbh select top 33 A cnword from t1 A left join t1 B on A id B id 1 and A code a collate Chinese PRC Stroke CS AS KS WS order by id id 8 结果 汉字 国 笔划数为 8 上面所有准备过程 只是为了写下面这个函数 这个函数撇开上面建的所有临时表和固 定表 为了通用和代码转移方便 把表 tab hzbh 的内容写在语句内 然后计算用户输入一串 汉字的总笔划 create function fun getbh str nvarchar 4000 returns int as begin declare word nchar 1 n int set n 0 while len str 0 begin set word left str 1 如果非汉字 笔划当 0 计 set n n case when unicode word between 19968 and 19968 20901 then select top 1 id from select 1 as id N 亅 as word union all select 2 N 阝 union all select 3 N 马 union all select 4 N 风 union all select 5 N 龙 union all select 6 N 齐 union all select 7 N 龟 union all select 8 N 齿 union all select 9 N 鸩 union all select 10 N 龀 union all select 11 N 龛 union all select 12 N 龂 union all select 13 N 龆 union all select 14 N 龈 union all select 15 N 龊 union all select 16 N 龍 union all select 17 N 龠 union all select 18 N 龎 union all select 19 N 龐 union all select 20 N 龑 union all select 21 N 龡 union all select 22 N 龢 union all select 23 N 龝 union all select 24 N 齹 union all select 25 N 龣 union all select 26 N 龥 union all select 27 N 齈 union all select 28 N 龞 union all select 29 N 麷 union all select 30 N 鸞 union all select 31 N 麣 union all select 32 N 龖 union all select 33 N 龗 union all select 35 N 齾 union all select 36 N 齉 union all select 39 N 靐 union all select 64 N 龘 T where word word collate Chinese PRC Stroke CS AS KS WS order by id ASC else 0 end set str right str len str 1 end return n end 函数调用实例 select dbo fun getbh 中华人民共和国 dbo fun getbh 中華人民共和國 执行结果 笔划总数分别为 39 和 46 简繁体都行 当然 你也可以把上面 UNION ALL 内的汉字和笔划改存在固定表内 在汉字 列建 CLUSTERED INDEX 列排序规则设定为 Chinese PRC Stroke CS AS KS WS 这样速度更快 如果你用的是 BIG5 码的操作系统 你得另外生成汉字 方法一样 但有一点要记住 这些汉字是通过 SQL 语句 SELECT 出来的 不是手工输入的 更不 是查字典得来的 因为新华字典毕竟不同于 UNICODE 字符集 查字典的结果会不正 确 用排序规则的特性得到汉字拼音首字母 用得到笔划总数相同的方法 我们也可以写出求汉字拼音首字母的函数 如下 create function fun getPY str nvarchar 4000 returns nvarchar 4000 as begin declare word nchar 1 PY nvarchar 4000 set PY while len str 0 begin set word left str 1 如果非汉字字符 返回原字符 set PY PY case when unicode word between 19968 and 19968 20901 then select top 1 PY from select A as PY N 驁 as word union all select B N 簿 union all select C N 錯 union all select D N 鵽 union all select E N 樲 union all select F N 鰒 union all select G N 腂 union all select H N 夻 union all select J N 攈 union all select K N 穒 union all select L N 鱳 union all select M N 旀 union all select N N 桛 union all select O N 漚 union all select P N 曝 union all select Q N 囕 union all select R N 鶸 union all select S N 蜶 union all select T N 籜 union all select W N 鶩 union all select X N 鑂 union all select Y N 韻 union all select Z N 咗 T where word word collate Chinese PRC CS AS KS WS order by PY ASC else word end set str right str len str 1 end return PY end 函数调用实例 select dbo fun getPY 中华人民共和国 dbo fun getPY 中華人民共和國 结果都为 ZHRMGHG 你若有兴趣 也可用相同的方法 扩展为得到汉字全拼的函数 甚至还可以得到全拼的读 音声调 不过全拼分类大多了 得到全拼最好是用对照表 两万多汉字搜索速度很快 用对照 表还可以充分利用表的索引 排序规则还有很多其它的巧妙用法 限于篇幅在此就不再详细说明 欢迎大家共同探讨 如何实现对数据库单个字段进行加密 选择自 callzjy 的 Blog 关键字 callzjy 字段加密 sqlserver 函数 出处 create view v rand as select c unicode cast round rand 255 0 as tinyint go create function f jmstr str varchar 8000 type bit returns varchar 8000 参数说明 str 要加密的字符串或已经加密后的字符 type 操作类型 0 加密 解密 返回值说明 当操作类型为加密时 type 0 返回为加密后的 str 即存放于数据库中的字符串 当操作类型为解密时 type 1 返回为实际字符串 即加密字符串解密后的原来字符串 As begin declare re varchar 8000 返回值 declare c int 加密字符 declare i int 加密方法为原字符异或一个随机 ASCII 字符 if type 0 加密 begin select c c re i len str from v rand while i 0 select re nchar unicode substring str i 1 c i re i i 1 set re re nchar c end else 解密 begin select i len str 1 c unicode substring str i 1 1 re while i 0 select re nchar unicode substring str i 1 c i re i i 1 end return re end go 测试 declare tempstr varchar 20 set tempstr 1 2 3aA select dbo f jmstr dbo f jmstr tempstr 0 1 输出结果 1 2 3aA 完 让数据库产生一张详细的日历表 也许有了这张表 你的工作会轻松很多 CREATE TABLE dbo time dimension time id int IDENTITY 1 1 NOT NULL the date datetime NULL the day nvarchar 15 NULL the month nvarchar 15 NULL the year smallint NULL day of month smallint NULL week of year smallint NULL month of year smallint NULL quarter nvarchar 2 NULL fiscal period nvarchar 20 NULL ON PRIMARY DECLARE WeekString varchar 12 dDate SMALLDATETIME sMonth varchar 20 iYear smallint iDayOfMonth smallint iWeekOfYear smallint iMonthOfYear smallint sQuarter varchar 2 sSQL varchar 100 adddays int SELECT adddays 1 日期增量 可以自由设定 SELECT dDate 01 01 2002 开始日期 WHILE dDate 0 and a xusertype in 175 239 231 167 open tb fetch next from tb into s while fetch status 0 begin exec s fetch next from tb into s end close tb deallocate tb 测试结果 所在的表及字段 authors au lname 查询指定的表在那些数据库中存在 declare tbname sysname set tbname 客户资料 declare dbname sysname sql nvarchar 4000 re bit sql1 varchar 8000 set sql1 declare tb cursor for select name from master sysdatabases open tb fetch next from tb into dbname while fetch status 0 begin set sql set re case when exists select 1 from dbname sysobjects where xtype U and name tbname then 1 else 0 end exec sp executesql sql N re bit out re out if re 1 set sql1 sql1 union all select dbname fetch next from tb into dbname end close tb deallocate tb set sql1 substring sql1 12 8000 exec sql1 比较两个数据库的表结构差异 选择自 zjcxc 的 Blog 关键字 表结构 差异 出处 比较两个数据库的表结构差异 调用示例 exec p comparestructure xzkh model xzkh new if exists select from dbo sysobjects where id object id N dbo p comparestructure and OBJECTPROPERTY id N IsProcedure 1 drop procedure dbo p comparestructure GO create proc p comparestructure dbname1 varchar 250 要比较的数据库名 1 dbname2 varchar 250 要比较的数据库名 2 as create table tb1 表名 1 varchar 250 字段名 varchar 250 序号 int 标识 bit 主键 bit 类型 varchar 250 占用字节数 int 长度 int 小数位数 int 允许空 bit 默认值 varchar 500 字段说明 varchar 500 create table tb2 表名 2 varchar 250 字段名 varchar 250 序号 int 标识 bit 主键 bit 类型 varchar 250 占用字节数 int 长度 int 小数位数 int 允许空 bit 默认值 varchar 500 字段说明 varchar 500 得到数据库 1 的结构 exec insert into tb1 SELECT 表名 d name 字段名 a name 序号 a colid 标识 case when a status 0 x80 then 1 else 0 end 主键 case when exists SELECT 1 FROM dbname1 sysobjects where xtype PK and name in SELECT name FROM dbname1 sysindexes WHERE indid in SELECT indid FROM dbname1 sysindexkeys WHERE id a id AND colid a colid then 1 else 0 end 类型 b name 占用字节数 a length 长度 a prec 小数位数 a scale 允许空 a isnullable 默认值 isnull e text 字段说明 isnull g value FROM dbname1 syscolumns a left join dbname1 systypes b on a xtype b xusertype inner join dbname1 sysobjects d on a id d id and d xtype U and d name dtproperties left join dbname1 syscomments e on a cdefault e id left join dbname1 sysproperties g on a id g id and a colid g smallid order by a id a colorder 得到数据库 2 的结构 exec insert into tb2 SELECT 表名 d name 字段名 a name 序号 a colid 标识 case when a status 0 x80 then 1 else 0 end 主键 case when exists SELECT 1 FROM dbname2 sysobjects where xtype PK and name in SELECT name FROM dbname2 sysindexes WHERE indid in SELECT indid FROM dbname2 sysindexkeys WHERE id a id AND colid a colid then 1 else 0 end 类型 b name 占用字节数 a length 长度 a prec 小数位数 a scale 允许空 a isnullable 默认值 isnull e text 字段说明 isnull g value FROM dbname2 syscolumns a left join dbname2 systypes b on a xtype b xusertype inner join dbname2 sysobjects d on a id d id and d xtype U and d name dtproperties left join dbname2 syscomments e on a cdefault e id left join dbname2 sysproperties g on a id g id and a colid g smallid order by a id a colorder and not exists select 1 from tb2 where 表名 2 a 表名 1 select 比较结果 case when a 表名 1 is null and b 序号 1 then 库 1 缺少表 b 表名 2 when b 表名 2 is null and a 序号 1 then 库 2 缺少表 a 表名 1 when a 字段名 is null and exists select 1 from tb1 where 表名 1 b 表名 2 then 库 1 b 表名 2 缺少字段 b 字段名 when b 字段名 is nul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论