2023年sql学习最全面精品资料笔记.pdf

上传人:C****o 文档编号:91137847 上传时间:2023-05-22 格式:PDF 页数:43 大小:1.76MB
返回 下载 相关 举报
2023年sql学习最全面精品资料笔记.pdf_第1页
第1页 / 共43页
2023年sql学习最全面精品资料笔记.pdf_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《2023年sql学习最全面精品资料笔记.pdf》由会员分享,可在线阅读,更多相关《2023年sql学习最全面精品资料笔记.pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 sql 学习资料笔记 创建视图和索引 视图常常被称为虚表。在视图被创建以后,你可以对视图采用如下命令:select,insert,update,delete。索引是与磁盘上数据的存储方式不同的另外一种组织数据的方法。使用视图 视图并不占用数据库或表的物理空间。创建视图的语法如下:CREATE VIEW (col1,col2.)AS SELECT FROM;视图可以是多级的,也就是可以用视图来创建视图。但这会加大维护工作的复杂性。1。列的重命名 注意:当在视图中使用 SQL 的计算功能时,SQL 会要求你给出一个虚字段的名字,这是可以理解,因为象 COUNT(*)或 AVG(PAYMENT)是

2、不能作为列名的。2。SQL 对视图的处理过程 运行 SELECT 语句-查找表-未找到-查找视图。3。在 SELECT 语句中的使用约束 在视图的 SELECT 语句中:不能使用 UNION 操作。不能使用 ORDER BY 子句,但在视图中,使用 GROUP BY 子句可以有 ORDER BY 子句相同的功能。4。在视图中修改数据 在视图创建以后,就可以用 Insert,Update,Delete 语句来更新,插入,删除视图中的数据。5。在视图中修改数据的几个问题 对于多表视图,不能使用 DELETE 语句。除非底层表的所有非空列都已经在视图中出现,否则,你不能使用Insert 语句。有这个

3、限制的原 因是 SQL 不知道该将什么数据插入到 NOT NULL 限制列中(没有在视图中出现的)。如果对一个归并的表格插入或更新记录,那么所有被更新的记录必须属于同一个物理表。如果你在创建视图时使用了 DISTINCT语句,那么你就不能插入或更新这个视图中的记录。你不能更新视图中的虚拟列(它是用计算字段得到的)。6。通用应用程序的视图 下面有几个视图需要完成的任务:提供了用户安全功能。可以进行单位换算。创建一个新的虚拟表格。简单的结构化复合查询。-视图与安全性 -在单位换算中使用视图 -在视图中使用简单的结构化复合查询 7。删除视图的语句 DROP VIEW view_name;注意:该命令

4、会使所有与 DROP 掉的视图相关联的视图不能正常运行。一些数据库系统甚至会将所有 与 DROP 掉的视图相关联的视图也删除掉。使用索引 在 SQL 中使用索引有以下几个原因:在使用 UNIQUE 关键字时强制性地保证数据的完整性。可以容易地使用索引字段或其他字段进行排序。提高查询的执行速度。1。什么是索引 创建索引的语法:CREATE INDEX index_name ON table_name(col1,col2.);注意:在不同的数据库系统中,创建索引的语法差别很大。删除索引的语法:DROP INDEX index_name;备注:当表被删除时,所有与表相关的索引也将被删除。2。使用索引

5、的技巧 对于小表来说,使用索引对于性能不会有任何提高。当你的索引中有极多不同的数据和空值时,索引会使性能有极大的提高。当查询返回的数据很少时,索引可以优化你的查询(比较好的情况是少于全部数据的 25)。如 果要返回的数据很多时,索引会加大系统开销。索引会提高数据的返回速度,但是它使数据的更新速度变慢。如果要进行大量的更新操作,请先 删除索引,在执行完更新操作后,再恢复索引。索引会占用你的数据库空间,在设计数据库的可用空间时要考虑到。如果对字段的索引已经对两个表进行了归并操作,这一技术可以极大地提高归并的速度。大多数数据库系统不允许对视图创建索引。不要对经常需要更新或修改的字段创建索引,更新索引

6、的开销会降低你所期望获得的性能。不要将索引和表存储在同一个驱动器上,分开存储会去掉访问的冲突,从而使结果返回的更快。3。对更多的字段进行索引 这也叫复合索引。4。在创建索引时使用 UNIQUE 关键字 复合索引通常使用 UNIQUE 关键字来防止有相同数据的多个记录多次出现。在创建索引时,可以使用 DESC 关键字。5。索引与归并 在归并查询中,对表中唯一属性的字段或用以归并操作的字段创建索引,可以大大比高归并的效率。6。群集(簇)的使用 当使用群集索引时,数据的表中的物理排列方式将会被修改。使用群集索引通常比传统的不使用群 集的索引速度要快。许多数据库系统(如 Sybase 的 SQL Se

7、rver)只允许一个表有一个群集索引。用于创建群集索引的字段常常是主关键字。用 Sybase 的 Transact-SQL 创建群集索引的例子:CREATE UNIQUE CLUSTERED INDEX id_index ON book(id);在 Oracle 中,群集具有与众不同的概念。群集是 SQL 的第三方特性。Transact_SQL小手册 *Transact_SQL*-语 句 功 能 -数据操作 SELECT -从数据库表中检索数据行和列 INSERT -向数据库表添加新数据行 DELETE -从数据库表中删除数据行 UPDATE -更新数据库表中的数据 -数据定义 CREATE

8、TABLE -创建一个数据库表 DROP TABLE -从数据库中删除表 ALTER TABLE -修改数据库表结构 CREATE VIEW -创建一个视图 DROP VIEW -从数据库中删除视图 CREATE INDEX -为数据库表创建一个索引 DROP INDEX -从数据库中删除索引 CREATE PROCEDURE -创建一个存储过程 DROP PROCEDURE -从数据库中删除存储过程 CREATE TRIGGER -创建一个触发器 DROP TRIGGER -从数据库中删除触发器 CREATE SCHEMA -向数据库添加一个新模式 DROP SCHEMA -从数据库中删除一

9、个模式 CREATE DOMAIN -创建一个数据值域 ALTER DOMAIN -改变域定义 DROP DOMAIN -从数据库中删除一个域 -数据控制 GRANT -授予用户访问权限 DENY -拒绝用户访问 REVOKE -解除用户访问权限 -事务控制 COMMIT -结束当前事务 ROLLBACK -中止当前事务 SET TRANSACTION -定义当前事务数据访问特征 -程序化 SQL DECLARE -为查询设定游标 EXPLAN -为查询描述数据访问计划 OPEN -检索查询结果打开一个游标 FETCH -检索一行查询结果 CLOSE -关闭游标 PREPARE -为动态执行准

10、备 SQL 语句 EXECUTE -动态地执行 SQL 语句 DESCRIBE -描述准备好的查询 -局部变量 declare id char(10)-set id=10010001 select id=10010001 -全局变量 -必须以 开头 -IF ELSE declare x int y int z int select x=1 y=2 z=3 if x y print x y-打印字符串x y else if y z print y z else print z y -CASE use pangu update employee set e_wage=case when job_l

11、evel=1 then e_wage*1.08 when job_level=2 then e_wage*1.07 when job_level=3 then e_wage*1.06 else e_wage*1.05 end -WHILE CONTINUE BREAK declare x int y int c int select x=1 y=1 while x 3 begin print x-打印变量 x 的值 while y 3 begin select c=email=100*x100*x/email+y print c-打印变量 c 的值 select y=y+1 end selec

12、t x=x+1 select y=1 end -WAITFOR -例 等待 1 小时 2 分零 3 秒后才执行 SELECT 语句 waitfor delay 01:02:03 select*from employee -例 等到晚上 11 点零 8 分后才执行 SELECT 语句 waitfor time 23:08:00 select*from employee *SELECT*select*(列名)from table_name(表名)where column_name operator value ex:(宿主)select*from stock_information where s

13、tockid =str(nid)stockname=str_name stockname like%find this%stockname like a-zA-Z%-(指定值的范围)stockname like F-M%-(排除指定范围)-只能在使用 like 关键字的 where 子句中使用通配符)or stockpath=stock_path or stocknumber=表达式的最小整数返回的数据类型与表达式相同可为 -INTEGER/MONEY/REAL/FLOAT 类型 FLOOR(numeric_expression)-返回=表达式的最小整数返回的数据类型与表达式相同可为 -INT

14、EGER/MONEY/REAL/FLOAT 类型 ROUND(numeric_expression)-返回以 integer_expression 为精度的四舍五入值返回的数据 -类型与表达式相同可为 INTEGER/MONEY/REAL/FLOAT 类型 ABS(numeric_expression)-返回表达式的绝对值返回的数据类型与表达式相同可为 -INTEGER/MONEY/REAL/FLOAT 类型 SIGN(numeric_expression)-测试参数的正负号返回 0 零值 1 正数或-1 负数返回的数据类型 -与表达式相同可为 INTEGER/MONEY/REAL/FLOAT

15、 类型 PI()-返回值为 即 3.1415926535897936 RAND(integer_expression)-用任选的integer_expression做种子值得出 0-1 间的随机浮点数 -字符串函数-ASCII()-函数返回字符表达式最左端字符的 ASCII 码值 CHAR()-函数用于将 ASCII 码转换为字符 -如果没有输入 0 255 之间的 ASCII 码值 CHAR 函数会返回一个 NULL 值 LOWER()-函数把字符串全部转换为小写 UPPER()-函数把字符串全部转换为大写 STR()-函数把数值型数据转换为字符型数据 LTRIM()-函数把字符串头部的空格

16、去掉 RTRIM()-函数把字符串尾部的空格去掉 LEFT(),RIGHT(),SUBSTRING()-函数返回部分字符串 CHARINDEX(),PATINDEX()-函数返回字符串中某个指定的子串出现的开始位置 SOUNDEX()-函数返回一个四位字符码 -SOUNDEX 函数可用来查找声音相似的字符串但 SOUNDEX函数对数字和汉字均只返回 0 值 DIFFERENCE()-函数返回由 SOUNDEX 函数返回的两个字符表 达式的值的差异 -0 两个 SOUNDEX 函数返回值的第一个字符不同 -1 两个 SOUNDEX 函数返回值的第一个字符相同 -2 两个 SOUNDEX 函数返回

17、值的第一二个字符相同 -3 两个 SOUNDEX 函数返回值的第一二三个字符相同 -4 两个 SOUNDEX 函数返回值完全相同 QUOTENAME()-函数返回被特定字符括起来的字符串 /*select quotename(abc,)quotename(abc)运行结果如下 -abc abc*/REPLICATE()-函数返回一个重复 character_expression 指定次数的字符串 /*select replicate(abc,3)replicate(abc,-2)运行结果如下 -abcabcabc NULL*/REVERSE()-函数将指定的字符串的字符排列顺序颠倒 REPLA

18、CE()-函数返回被替换了指定子串的字符串 /*select replace(abc123g,123,def)运行结果如下 -abcdefg*/SPACE()-函数返回一个有指定长度的空白字符串 STUFF()-函数用另一子串替换字符串指定位置长度的子串 -数据类型转换函数-CAST()函数语法如下 CAST()(AS length)CONVERT()函数语法如下 CONVERT()(length,style)select cast(100+99 as char)convert(varchar(12),getdate()运行结果如下 -199 Jan 15 2000 -日期函数-DAY()-函

19、数返回 date_expression 中的日期值 MONTH()-函数返回 date_expression 中的月份值 YEAR()-函数返回 date_expression 中的年份值 DATEADD(,)-函数返回指定日期 date 加上指定的额外日期间隔 number 产生的新日期 DATEDIFF(,)-函数返回两个指定日期在 datepart 方面的不同之处 DATENAME(,)-函数以字符串的形式返回日期的指定部分 DATEPART(,)-函数以整数值的形式返回日期的指定部分 GETDATE()-函数以 DATETIME 的缺省格式返回系统当前的日期和时间 -系统函数-APP_

20、NAME()-函数返回当前执行的应用程序的名称 COALESCE()-函数返回众多表达式中第一个非 NULL 表达式的值 COL_LENGTH(,)-函数返回表中指定字段的长度值 COL_NAME(,)-函数返回表中指定字段的名称即列名 DATALENGTH()-函数返回数据表达式的数据的实际长度 DB_ID(database_name)-函数返回数据库的编号 DB_NAME(database_id)-函数返回数据库的名称 HOST_ID()-函数返回服务器端计算机的名称 HOST_NAME()-函数返回服务器端计算机的名称 IDENTITY(,seed increment)AS column

21、_name)-IDENTITY()函数只在 SELECT INTO 语句中使用用于插入一个 identity column列到新表中 /*select identity(int,1,1)as column_name into newtable from oldtable*/ISDATE()-函数判断所给定的表达式是否为合理日期 ISNULL(,)-函数将表达式中的 NULL 值用指定值替换 ISNUMERIC()-函数判断所给定的表达式是否为合理的数值 NEWID()-函数返回一个 UNIQUEIDENTIFIER 类型的数值 NULLIF(,)-NULLIF 函数在expression1 与

22、expression2 相等时返回NULL 值若不相等时则返回 expression1 的值。1。查询一个两列表中一列相同另一列不同的记录:设两列分别为 a,b,表 tbl 则:SELECT i_PO,s_idnumber,i_DepartmentID FROM ksb_receive WHERE s_idnumber IN (SELECT s_idnumber FROM (SELECT s_idnumber,COUNT(i_departmentid)AS count1 FROM (SELECT s_idnumber,i_departmentid FROM ksb_receive GROUP

23、BY s_idnumber,i_departmentID HAVING len(s_idnumber)0)AS a WHERE i_departmentid GROUP BY s_idnumber HAVING COUNT(i_departmentid)1 )AS m)GO 2。查询物料主表和收料表物料类别不同的记录(物料主表,收料表,关联表)设主表为 a,物料表 b,关联表 c。则:SELECT m.IDNumber,m.FinMaterialType,n.s_FIMatType FROM tblmmd m INNER JOIN (SELECT s_idnumber,i_department

24、id,s_FIMatType FROM ksb_receive a INNER JOIN FI_FIMatType b ON a.i_departmentid=b.i_sort2 AND a.i_departmentid IN(1,2,3)n ON m.idnumber=n.s_idnumber AND m.FinMaterialType n.s_FIMatType 全部转自新闻组精华区,同时感谢 iceriver(林)返回数据库内所有表的字段详细说明的 SQL 语句(可以直接粘贴使用)SELECT (case when a.colorder=1 then d.name else end)N表

25、名,a.colorder N 字段序号,a.name N 字段名,(case when COLUMNPROPERTY(a.id,a.name,IsIdentity)=1 then else end)N 标识,(case when(SELECT count(*)FROM sysobjects WHERE(name in (SELECT name FROM sysindexes WHERE(id=a.id)AND(indid in (SELECT indid FROM sysindexkeys WHERE(id=a.id)AND(colid in (SELECT colid FROM syscol

26、umns WHERE(id=a.id)AND(name=a.name)AND (xtype=PK)0 then else end)N主键,b.name N 类型,a.length N 占用字节数,COLUMNPROPERTY(a.id,a.name,PRECISION)as N长度,isnull(COLUMNPROPERTY(a.id,a.name,Scale),0)as N小数位数,(case when a.isnullable=1 then else end)N允许空,isnull(e.text,)N 默认值,isnull(g.value,)AS N字段说明 FROM syscolumns

27、 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.namedtproperties left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id AND a.colid=g.smallid order by object_name(a.id),a.colorder -用了游标循环删除,速度有点慢,-其实可以考虑先生成对应关系的脚本,再删除

28、现有关系、约束等,然后再用 TRUNCATE TABLE来删除,-最后再重建关系会否快一些呢?呵呵,有空测试一下 begin tran SET NOCOUNT ON-记录所有外键相关表 select object_name(fkeyID)as cName,object_name(rkeyID)as fName into#FkeyTable from sysforeignkeys-建立临时表,记录已经删除的表 CREATE table#HaveDel (TableName varchar(100)declare TableName varchar(100)-循环删除只具有 FOREIGN KEY

29、 约束的表对象 while exists(select cName from#FkeyTable)begin select cName into#NowTable from(select cName from#FkeyTable)as a left join (select fName from#FkeyTable)as b on a.cName=b.Fname where b.fname is null declare cur_DelTable cursor for select cName from#NowTable open cur_DelTable fetch next from cu

30、r_DelTable into TableName while FETCH_STATUS=0 begin print 正在删除:+TableName exec(delete from +TableName)insert into#HaveDel select TableName fetch next from cur_DelTable into TableName end close cur_DelTable deallocate cur_DelTable -删除掉外键相关表中已经删除的表的相关记录 delete from#FkeyTable where exists(select cName

31、 from#NowTable where#FkeyTable.cName=#NowTame)drop table#NowTable end drop table#FkeyTable-删除剩余表记录 declare cur_DelTable cursor for select tbl.name from sysobjects as tbl left join#HaveDel on tbl.name=#HaveDel.TableName where#HaveDel.TableName is null and tbl.xtype=u open cur_DelTable fetch next from

32、 cur_DelTable into TableName while FETCH_STATUS=0 begin print 正在删除:+TableName exec(delete from +TableName)fetch next from cur_DelTable into TableName end close cur_DelTable deallocate cur_DelTable drop table#HaveDel print 删除完成!commit tran 交叉表实现一例 问题:源表数据:ID NAME CODE 1 A AA 2 A BB 3 B CC 4 B DD 5 C

33、EE 6 C FF 7 D GG 8 D HH 9 E II 10 E JJ 希望统计成如下格式:CODE A C D E F 合计 -AA 1 0 0 0 0 10%BB 1 0 0 0 0 10%CC 0 1 0 0 0 10%DD 0 1 0 0 0 10%EE 0 0 1 0 0 10%FF 0 0 1 0 0 10%GG 0 0 0 1 0 10%HH 0 0 0 1 0 10%II 0 0 0 0 1 10%JJ 0 0 0 0 1 10%实现步骤如下:-建立测试数据 declare tmp1 table(id int,name varchar(10),code varchar(1

34、0)insert into tmp1 select 1,A,AA UNION select 2,A,BB UNION select 3,B,CC UNION select 4,B,DD UNION select 5,C,EE UNION select 6,C,FF UNION select 7,D,GG UNION select 8,D,HH UNION select 9,E,II UNION select 10,E,JJ-返回结果 SELECT CODE,sum(A)as A,sum(B)as C,sum(C)as D,sum(D)as E,sum(E)as F,left(CAST(COUN

35、T(CODE)AS DECIMAL(10,2)/(SELECT COUNT(*)FROM TMP1)*100,2)+%AS 合计 FROM (SELECT CODE,CASE WHEN NAME=A THEN count(CODE)ELSE 0 end as A,CASE WHEN NAME=B THEN count(CODE)ELSE 0 end AS B,CASE WHEN NAME=C THEN count(CODE)ELSE 0 end AS C,CASE WHEN NAME=D THEN count(CODE)ELSE 0 end AS D,CASE WHEN NAME=E THEN

36、 count(CODE)ELSE 0 end AS E FROM tmp1 GROUP BY CODE,name)AS C GROUP BY CODE 锁定数据库的一个表 SELECT*FROM table WITH(HOLDLOCK)注意:锁定数据库的一个表的区别 SELECT*FROM table WITH(HOLDLOCK)其他事务可以读取表,但不能更新删除 SELECT*FROM table WITH(TABLOCKX)其他事务不能读取表,更新和删除 SELECT 语句中“加锁选项”的功能说明 SQL Server 提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能

37、使用 SQL Server的缺省设置也可以在 select 语句中使用“加锁选项”来实现预期的效果。本文介绍了 SELECT 语句中的各项“加锁选项”以及相应的功能说明。功能说明:NOLOCK(不加锁)此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。在这 种 情 况 下,用 户 有 可 能 读 取 到 未 完 成 事 务(Uncommited Transaction)或回滚(Roll Back)中的数据,即所谓的“脏数据”。HOLDLOCK(保持锁)此选项被选中时,SQL Server 会将此共享锁保持至整个事务结束,而不会在途中释放。UPDLOCK(修改锁)此选项被选中时

38、,SQL Server 在读取数据时使用修改锁来代替共享锁,并将此锁保持至整个事务或命令结束。使用此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。TABLOCK(表锁)此选项被选中时,SQL Server 将在整个表上置共享锁直至该命令结 束。这个选项保证其他进程只能读取而不能修改数据。PAGLOCK(页锁)此选项为默认选项,当被选中时,SQL Server 使用共享页锁。TABLOCKX(排它表锁)此选项被选中时,SQL Server 将在整个表上置排它锁直至该命令或事务结束。这将防止其他进程读取或修改表中的数据 一。dbcc memusage:占用内存多少?二。整理数据库中所有

39、表的索引碎片:sp_msforeachtable dbcc dbreindex(?)三。数据库远程访问:方案一:SELECT*FROM OPENDATASOURCE(SQLOLEDB,Data Source=ServerName;User ID=MyUID;Password=MyPass).Northwind.dbo.表名 方案二:select*from openrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)四。select name from sysobjects where type=u-读表语句 select name from syscolumn

40、s where id=object_id(表名)-读字段名(sysobject:系统表,存放表,视图,规则,存储过程,默认值和触发器信息)select db_id(N 数据库名字):检测相应数据库的 ID(dbid)select object_id(N 对象名):检测相应对象名的 ID(objectid)SELECT*FROM table WITH(HOLDLOCK):锁定数据库的一个表,其他事务可以读取表,不能删除表;SELECT*FROM table WITH(TABLOCKX):锁定数据库的一个表,其他事务不能读取表、更新和删除;五。UPDATE。FROM。UPDATE a SET a.

41、FROM table a INNER JOIN table b ON.WHERR.f exists(select*from dbo.sysobjects where id=object_id(Ndbo.p_copydb)and OBJECTPROPERTY(id,NIsProcedure)=1)drop procedure dbo.p_copydb GO /*-数据库数据复制 将一个数据库中的数据复制到另一个数据库 如果某列在目标数据库中为标识列,将不会被复制 适用范围:数据库结构发生了变化,想将旧数据库进行升级 这样就可以根据新的数据库结构创建一个空库,然后 将旧数据库的所有数据复制到新库中

42、-邹建 2003.10(引用请保留此信息)-*/*-调用示例 exec p_copydb bns_aa,bns_new exec p_copydb acc_ 五医,acc_演示数据 8-*/create proc p_copydb o_dbname sysname,-要复制数据的数据库-源数据库 n_dbname sysname -接收数据的数据库-目标数据库 as declare sql nvarchar(4000)-禁用约束/触发器,防止复制时的数据冲突 set sql=declare#tbc cursor for select name from email=+n_dbname+.sys

43、objects%27+n_dbname+%27.sysobjects/email where xtype=U and status=0 exec(sql)declare tbname sysname open#tbc fetch next from#tbc into tbname while fetch_status=0 begin set sql=alter table email=+n_dbname+.+tbname+%27+n_dbname+%27.%5B%27+tbname+%27/email NOCHECK CONSTRAINT ALL exec(sql)set sql=alter

44、table email=+n_dbname+.+tbname+%27+n_dbname+%27.%5B%27+tbname+%27/email disable trigger ALL exec(sql)fetch next from#tbc into tbname end close#tbc-复制数据 declare sql1 varchar(8000)set sql=declare#tb cursor for select a.name from email=+o_dbname+.sysobjects+o_dbname+%27.sysobjects/email a inner join em

45、ail=+n_dbname+.sysobjects+n_dbname+%27.sysobjects/email b on a.name=b.name where a.xtype=U and b.xtype=U exec(sql)open#tb fetch next from#tb into tbname while fetch_status=0 begin select sql1=,sql=select sql1=sql1+,+a.name+from(select name from email=+o_dbname+.syscolumns%27+o_dbname+%27.syscolumns/

46、email where id in (select id from email=+o_dbname+.sysobjects%27+o_dbname+%27.sysobjects/email where email=name=+tbname+name=%27%27%27+tbname+%27%27%27/email)a inner join(select name from email=+n_dbname+.syscolumns%27+n_dbname+%27.syscolumns/email where status0 x80 and id in (select id from email=+

47、n_dbname+.sysobjects%27+n_dbname+%27.sysobjects/email where email=name=+tbname+name=%27%27%27+tbname+%27%27%27/email)b on a.name=b.name exec sp_executesql sql,Nsql1 nvarchar(4000)out,sql1 out select sql1=substring(sql1,2,8000)exec(insert into email=+n_dbname+.+tbname+(+sql1%27+n_dbname+%27.%5B%27+tb

48、name+%27%5D%28%27+sql1/email +)select email=+sql1+%27+sql1+%27/email from email=+o_dbname+.+tbname+%27+o_dbname+%27.%5B%27+tbname+%27%5D%27/email)if error0 print(insert into email=+n_dbname+.+tbname+(+sql1%27+n_dbname+%27.%5B%27+tbname+%27%5D%28%27+sql1/email +)select email=+sql1+%27+sql1+%27/email

49、from email=+o_dbname+.+tbname+%27+o_dbname+%27.%5B%27+tbname+%27%5D%27/email)fetch next from#tb into tbname end close#tb deallocate#tb -数据复制完成后启用约束 open#tbc fetch next from#tbc into tbname while fetch_status=0 begin set sql=alter table email=+n_dbname+.+tbname+%27+n_dbname+%27.%5B%27+tbname+%27/emai

50、l CHECK CONSTRAINT ALL exec(sql)set sql=alter table email=+n_dbname+.+tbname+%27+n_dbname+%27.%5B%27+tbname+%27/email enable trigger ALL exec(sql)fetch next from#tbc into tbname end close#tbc deallocate#tbc go 1.把某个字段重新生气序列(从 1 到 n):DECLARE i int Set i=0 Update Table1 Set i=i+1,Field1=i 2.按成绩排名次 Upd

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁