sqlserver命令大全.docx
- 文档编号:4126645
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:28
- 大小:44.61KB
sqlserver命令大全.docx
《sqlserver命令大全.docx》由会员分享,可在线阅读,更多相关《sqlserver命令大全.docx(28页珍藏版)》请在冰豆网上搜索。
sqlserver命令大全
【引用】常用SQL命令和ASP编程
【引用】MSSQL经典语句
2011-07-2816:
23:
00| 分类:
电脑网络| 标签:
|字号大中小 订阅
本文引用自honeyzyf《MSSQL经典语句》
1.按姓氏笔画排序:
Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as
2.数据库加密:
selectencrypt('原始密码')
selectpwdencrypt('原始密码')
selectpwdcompare('原始密码','加密后密码')=1--相同;否则不相同encrypt('原始密码')
selectpwdencrypt('原始密码')
selectpwdcompare('原始密码','加密后密码')=1--相同;否则不相同
3.取回表中字段:
declare@listvarchar(1000),@sqlnvarchar(1000)
select@list=@list+','+b.namefromsysobjectsa,syscolumnsbwherea.id=b.idanda.name='表A'
set@sql='select'+right(@list,len(@list)-1)+'from表A'
exec(@sql)
4.查看硬盘分区:
EXECmaster..xp_fixeddrives
5.比较A,B表是否相等:
if(selectchecksum_agg(binary_checksum(*))fromA)
=
(selectchecksum_agg(binary_checksum(*))fromB)
print'相等'
else
print'不相等'
6.杀掉所有的事件探察器进程:
DECLAREhcforeachCURSORGLOBALFORSELECT'kill'+RTRIM(spid)FROMmaster.dbo.sysprocesses
WHEREprogram_nameIN('SQLprofiler',N'SQL事件探查器')
EXECsp_msforeach_worker'?
'
7.记录搜索:
开头到N条记录
SelectTopN*From表
-------------------------------
N到M条记录(要有主索引ID)SelectTopM-N*From表WhereIDin(SelectTopMIDFrom表)OrderbyIDDesc
----------------------------------
N到结尾记录
SelectTopN*From表OrderbyIDDesc
8.如何修改数据库的名称:
sp_renamedb'old_name','new_name'
9:
获取当前数据库中的所有用户表selectNamefromsysobjectswherextype='u'andstatus>=0
10:
获取某一个表的所有字段selectnamefromsyscolumnswhereid=object_id('表名')
11:
查看与某一个表相关的视图、存储过程、函数selecta.*fromsysobjectsa,syscommentsbwherea.id=b.idandb.textlike'%表名%'
12:
查看当前数据库中所有存储过程selectnameas存储过程名称fromsysobjectswherextype='P'
13:
查询用户创建的所有数据库select*frommaster..sysdatabasesDwheresidnotin(selectsidfrommaster..sysloginswherename='sa')
或者
selectdbid,nameASDB_NAMEfrommaster..sysdatabaseswheresid<>0x01
14:
查询某一个表的字段和数据类型selectcolumn_name,data_typefrominformation_schema.columns
wheretable_name='表名'
[n].[标题]:
Select*FromTableNameOrderByCustomerName
[n].[标题]:
Select*FromTableNameOrderByCustomerName
from:
分类:
(一般分类):
:
评论(0):
:
静态链接网址:
:
引用(0)
触发器-MSSQL常用操作
发表人:
kendy517|发表时间:
2007年二月09日,09:
18
不再新开文章.
这里只打算讲解四部分了,也就最简单、最常用的四部分。
1、触发器。
定义:
何为触发器?
在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。
触发器是一个特殊的存储过程。
常见的触发器有三种:
分别应用于Insert,Update,Delete事件。
(SQLServer2000定义了新的触发器,这里不提)
我为什么要使用触发器?
比如,这么两个表:
CreateTableStudent(--学生表
StudentIDintprimarykey,--学号
....
)
CreateTableBorrowRecord(--学生借书记录表
BorrowRecordintidentity(1,1),--流水号
StudentIDint,--学号
BorrowDatedatetime,--借出时间
ReturnDAteDatetime,--归还时间
...
)
用到的功能有:
1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。
这时候可以用到触发器。
对于1,创建一个Update触发器:
CreateTriggertruStudent
OnStudent
forUpdate
As
ifUpdate(StudentID)
begin
UpdateBorrowRecord
SetStudentID=i.StudentID
FromBorrowRecordbr,Deletedd,Insertedi
Wherebr.StudentID=d.StudentID
end
理解触发器里面的两个临时的表:
Deleted,Inserted。
注意Deleted与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个Update的过程可以看作为:
生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。
对于2,创建一个Delete触发器
CreatetriggertrdStudent
OnStudent
forDelete
As
DeleteBorrowRecord
FromBorrowRecordbr,Deltedd
Wherebr.StudentID=d.StudentID
从这两个例子我们可以看到了触发器的关键:
A.2个临时的表;B.触发机制。
这里我们只讲解最简单的触发器。
复杂的容后说明。
事实上,我不鼓励使用触发器。
触发器的初始设计思想,已经被“级联”所替代.
来自:
分类:
(一般分类):
:
评论(0):
:
静态链接网址:
:
引用(0)
MSSQL数据库导出和导入
发表人:
kendy517|发表时间:
2007年二月09日,09:
17
SQLServer导出导入数据方法
2004-02余枫一、导出导入SQLServer里某个数据库1.在SQLServer企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。
2.备份选数据库-完全,目的备份到按添加按钮文件名在SQLServer服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)重写选重写现有媒体最后按确定按钮。
如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。
3.通过FTP或者remotedesktop或者pcanywhere等方法把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQLServer数据库,如果有压缩要解压。
4.目的SQLServer数据库如果还没有此数据库,先创建一个新的数据库;然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定还原备份集->数据库-完全最后按确定按钮。
完全的数据库导入成功了。
(如果在已经存在的SQLServer数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,可以去看->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill进程号杀掉这些锁,然后再做还原)注意:
如果在原有的目的SQLServer数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。
如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。
二、导出导入SQLServer里某个表1.没有防火墙,同一个局域网里或不在同一个局域网里,但通过Internet可以互相访问在SQLServer企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择局域网内能访问到的所有SQLServer服务器,或者直接输入IP地址)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择目的->目的(用于SQLServer的MicrofostOLEDB提供程序)->服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQLServer服务器,或者直接输入IP地址)->目的数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择源表和视图->在要导入的表和视图前面选中源->目的出现同样的表名(可以手工修改成别的表名)->转换->列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项->确定->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,存到SQLServer即可,保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示创建表及插入记录的步骤和状态->完成2.经过防火墙,不在同一个局域网里①、导出表里的数据到文本文件:
在SQLServer企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择局域网内能访问到的所有SQLServer服务器)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择目的->目的(文本文件)->文件名(在自己的电脑硬盘中生成一个自定义的文本文件)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择目的文件格式->源(选择要导出的表)->用默认的带分隔符->选第一行包含有列名称选项->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出到文本文件,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示表到文本文件的步骤和状态->完成如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。
②、通过FTP或者remotedesktop或者pcanywhere等方法把第①步生成的文本文件或者其压缩后的文件传到目的SQLServer数据库,如果有压缩要解压。
③、把文本文件导入目的SQLServer数据库直接把文本文件导入目的SQLServer数据库里跟文本文件同名的新表名时,默认的会把所有字段类型都变成字符串。
所以我们要这样做:
在源SQLServer数据库上先生成创建表的sql语句在SQLServer查询分析器里->选中源数据库里表名->按右键->在新窗口中编写对象脚本->创建->复制下新窗口内创建表名的sql语句到目标SQLServer数据库上查询分析器里执行创建表名的sql语句,生成空表结构。
(如果已经存在这样的表名,修改建表的sql语句,在表名后面加上导入时间的年月信息,例如table_0113)调用导入/导出工具->弹出数据转换服务导入/导出向导窗口->下一步->选数据源->数据源(文本文件)->文件名(已传到目的SQLServer数据库下要导入的文本文件,后缀可以不是*.txt,但是常规文本编辑器能打开的文件,文件类型选全部)->下一步->选择文件格式->用默认的带分隔符->选第一行包含有列名称选项->下一步->制定列分割符->逗号->下一步->选择目的->目的(用于SQLServer的MicrofostOLEDB提供程序)->服务器(可选择目标局域网内能访问到的所有SQLServer服务器)->选择使用windows身份验证还是使用SQLServe身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQLServer服务器上所有权限范围内的数据库)->下一步->选择源表和视图->修改目的表名为刚才创建的表名->转换(在目的表中追加行)->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动把文本文件导入,选调度DTS包以便以后执行)->保存(可以不选)->[保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示文本文件到表的步骤和状态->完成如果要更改导入时间的年月信息的表名,例如table_0113到原来的表名,在企业管理器里把原来的表名改成table_old_0113,table_0113改名成table。
这会对应用程序里频繁访问的表照成一定的中断。
注意:
源表上的建的索引和主键约束不能用上面介绍的1和2方法转移过来,还需要手工来建索引和主键。
标志种子和notnull的约束可以继承过来。
导入视图时会把源视图里所有的真实数据导入成一个新表,而不是视图。
三、SQLServer存储过程或用户定义的函数导出导入1、导出存储过程或用户定义的函数成*.sql文件在SQLServer企业管理器里选中源数据库,存储过程->单选或者多选中要转移的存储过程->用户定义的函数->单选或者多选中要转移的函数->按鼠标右键,选所有任务->生成SQL脚本->确定->在自己的电脑硬盘中生成一个自定义的*.sql文件->保存->正在生成SQL脚本->成功2、如果目的数据库经过防火墙,不在同一个局域网里,要通过FTP或者remotedesktop或者pcanywhere等方法把第1步生成的*.sql文件传到目的SQLServer数据库服务器上。
3、用查询分析器进入SQLServer目的数据库,从菜单里选文件->打开->打开查询文件->选中第1步生成的*.sql文件->点执行查询的绿色倒三角型快捷键->查询窗口里会出现执行后的消息(有时候可能因为存储过程和用户定义的函数之间有一定的依赖关系,会报一些错。
最好先执行用户定义的函数的*.sql文件,再执行存储过程的*.sql文件)四、ORACLE数据库里表导入SQLServer数据库1、在目的SQLServer数据库服务器上安装ORACLEClient软件或者ORACLEODBCDriver.在$ORACLE_HOMEnetworkadmintnsnames.ora里配置ORACLE数据库的别名(servicename)。
具体配置方法可以参考本站文章:
客户端连服务器的注意事项2、在WIN2000或者win2003服务器->管理工具->数据源(ODBC)->系统DSN(本机器上NT域用户都可以用)->添加->ORACLEODBCDriver->完成->datasourcename可以自定义,我一般填ORACLE数据库的sid标志,description里可以填ORACLE数据库详细描述,也可以不填->datasourceservicename填第1步定义的ORACLE数据库别名->OK。
(用户DSN和文件DSN也可以类似配置,但使用的时候有一些限制)3、SQLServer的导入和导出数据工具里->选数据源->数据源(其它(ODBC数据源))->选第2步在ODBC里定义的系统DSNsourcename,用户名密码处填写ORACLE系统的用户名和密码->下一步->选择目的,选SQLServer数据库(跟上面第二点讲的一致,就不重复了)。
注意:
在ORACLE表和SQLServer表之间'转换'那步很重要,可以改变默认的字段数据类型,如image->text,decimal->int五、SQLServer数据库里表导入ORACLE数据库方法一.导出目的选通过ODBC数据源里定义的ORACLE数据库,注意ORACLE里表名都是大写的.我一般在ORACLE这边先生成好表结构,再选择SQLSERVER源表往ORACLE目的表里追加数据.数据传输速度比方法二慢.方法二.从SQLServer数据库导入数据到ORACLE数据库可以选择用Windows下ORACLE9i企业或者个人版数据库做中转。
具体配置方法可以参考这两篇文章:
Oracle异构服务实践在ORACLE里设置访问多个SQLServer数据库注意:
ORACLE通过访问SQLServer的数据库链接时,用select*的时候字段名是用双引号引起来的。
查看全文
分类:
(一般分类):
:
评论(0):
:
静态链接网址:
:
引用(0)
MySQL数据库导出和导入
发表人:
kendy517|发表时间:
2007年二月09日,09:
14
1).MySQLimport的语法介绍:
MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。
这是一个命令行工具。
有两个参数以及大量的选项可供选择。
这个工具把一个文本文件(textfile)导入到你指定的数据库和表中。
比方说我们要从文件Customers.txt中把数据导入到数据库Meet_A_Geek中的表Custermers中:
MySQLimportMeet_A_GeekCustomers.txt
注意:
这里Customers.txt是我们要导入数据的文本文件,而Meet_A_Geek是我们要操作的数据库,数据库中的表名是Customers,这里文本文件的数据格式必须与Customers表中的记录格式一致,否则MySQLimport命令将会出错。
其中表的名字是导入文件的第一个句号(.)前面文件字符串,另外一个例子:
MySQLimportMeet_A_GeekCus.to.mers.txt
那么我们将把文件中的内容导入到数据库Meet_A_Geek中的Cus表中。
上面的例子中,都只用到两个参数,并没有用到更多的选项,下面介绍MySQLimport的选项
2).MySQLimport的常用选项介绍:
选项功能
-dor--delete新数据导入数据表中之前删除数据数据表中的所有信息
-for--force不管是否遇到错误,MySQLimport将强制继续插入数据
-ior--ignoreMySQLimport跳过或者忽略那些有相同唯一关键字的行,导入文件中的数据将被忽略。
-lor-lock-tables数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
-ror-replace这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。
--fields-enclosed-by=char指定文本文件中数据的记录时以什么括起的,很多情况下数据以双引号括起。
默认的情况下数据是没有被字符括起的。
--fields-terminated-by=char指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。
您可以用此选项指定数据之间的分隔符。
默认的分隔符是跳格符(Tab)
--lines-terminated-by=str此选项指定文本文件中行与行之间数据的分隔字符串或者字符。
默认的情况下MySQLimport以newline为行分隔符。
您可以选择用一个字符串来替代一个单个的字符:
一个新行或者一个回车。
MySQLimport命令常用的选项还有-v显示版本(version),-p提示输入密码(password)等。
3).例子:
导入一个以逗号为分隔符的文件
文件中行的记录格式是这样的:
"1","ORD89876","1DozenRoses","1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sqlserver 命令 大全