SQL Server 常用命令.docx

上传人:b****4 文档编号:4909184 上传时间:2023-05-07 格式:DOCX 页数:31 大小:28.59KB
下载 相关 举报
SQL Server 常用命令.docx_第1页
第1页 / 共31页
SQL Server 常用命令.docx_第2页
第2页 / 共31页
SQL Server 常用命令.docx_第3页
第3页 / 共31页
SQL Server 常用命令.docx_第4页
第4页 / 共31页
SQL Server 常用命令.docx_第5页
第5页 / 共31页
SQL Server 常用命令.docx_第6页
第6页 / 共31页
SQL Server 常用命令.docx_第7页
第7页 / 共31页
SQL Server 常用命令.docx_第8页
第8页 / 共31页
SQL Server 常用命令.docx_第9页
第9页 / 共31页
SQL Server 常用命令.docx_第10页
第10页 / 共31页
SQL Server 常用命令.docx_第11页
第11页 / 共31页
SQL Server 常用命令.docx_第12页
第12页 / 共31页
SQL Server 常用命令.docx_第13页
第13页 / 共31页
SQL Server 常用命令.docx_第14页
第14页 / 共31页
SQL Server 常用命令.docx_第15页
第15页 / 共31页
SQL Server 常用命令.docx_第16页
第16页 / 共31页
SQL Server 常用命令.docx_第17页
第17页 / 共31页
SQL Server 常用命令.docx_第18页
第18页 / 共31页
SQL Server 常用命令.docx_第19页
第19页 / 共31页
SQL Server 常用命令.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SQL Server 常用命令.docx

《SQL Server 常用命令.docx》由会员分享,可在线阅读,更多相关《SQL Server 常用命令.docx(31页珍藏版)》请在冰点文库上搜索。

SQL Server 常用命令.docx

SQLServer常用命令

SQLServer2000常用命令

(1)数据记录筛选:

sql="select*from数据表where字段名=字段值orderby字段名[desc]"

sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]"

sql="selecttop10*from数据表where字段名orderby字段名[desc]"

sql="select*from数据表where字段名in('值1','值2','值3')"

sql="select*from数据表where字段名between值1and值2"

(2)更新数据记录:

sql="update数据表set字段名=字段值where条件表达式"

sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式"

(3)删除数据记录:

sql="deletefrom数据表where条件表达式"

sql="deletefrom数据表"(将数据表所有记录删除)

(4)添加数据记录:

sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)"

sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表)

(5)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值

COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql="selectsum(字段名)as别名from数据表where条件表达式"

setrs=conn.excute(sql)

用rs("别名")获取统的计值,其它函数运用同上。

(5)数据表的建立和删除:

CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)

例:

CREATETABLEtab01(namevarchar(50),datetimedefaultnow())

DROPTABLE数据表名称(永久性删除一个数据表)

4.记录集对象的方法:

rs.movenext             将记录指针从当前的位置向下移一行

rs.moveprevious         将记录指针从当前的位置向上移一行

rs.movefirst            将记录指针移到数据表第一行

rs.movelast             将记录指针移到数据表最后一行

rs.absoluteposition=N   将记录指针移到数据表第N行

rs.absolutepage=N       将记录指针移到第N页的第一行

rs.pagesize=N           设置每页为N条记录

2、更改表格 

ALTERTABLEtable_name 

ADDCOLUMNcolumn_nameDATATYPE 

说明:

增加一个栏位(没有删除某个栏位的语法。

ALTERTABLEtable_name

ADDPRIMARYKEY(column_name)

说明:

更改表得的定义把某个栏位设为主键。

ALTERTABLEtable_name

DROPPRIMARYKEY(column_name)

说明:

把主键的定义删除。

3、建立索引 

CREATEINDEXindex_nameONtable_name(column_name)

说明:

对某个表格的栏位建立索引以增加查询时的速度。

4、删除 

DROPtable_name

DROPindex_name

二、的资料形态DATATYPEs

smallint

16位元的整数。

interger

32位元的整数。

decimal(p,s)

p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数

点後有几位数。

如果没有特别指定,则系统会设为p=5;s=0。

 

float

32位元的实数。

double

64位元的实数。

char(n)

n长度的字串,n不能超过254。

varchar(n)

长度不固定且其最大长度为n的字串,n不能超过4000。

graphic(n)

和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。

这个形态是为

了支援两个字元长度的字体,例如中文字。

vargraphic(n)

可变长度且其最大长度为n的双字元字串,n不能超过2000。

date

包含了年份、月份、日期。

time

包含了小时、分钟、秒。

timestamp

包含了年、月、日、时、分、秒、千分之一秒。

三、资料操作DML(DataManipulationLanguage)

资料定义好之後接下来的就是资料的操作。

资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update)、删除资料(delete)四种模式,以下分别介绍他们的语法:

1、增加资料:

INSERTINTOtable_name(column1,column2,...)

valueS(value1,value2,...)

说明:

1.若没有指定column系统则会按表格内的栏位顺序填入资料。

2.栏位的资料形态和所填入的资料必须吻合。

3.table_name也可以是景观view_name。

INSERTINTOtable_name(column1,column2,...)

SELECTcolumnx,columny,...FROManother_table

说明:

也可以经过一个子查询(subquery)把别的表格的资料填入。

2、查询资料:

基本查询

SELECTcolumn1,columns2,...

FROMtable_name

说明:

把table_name的特定栏位资料全部列出来

SELECT*

FROMtable_name

WHEREcolumn1=xxx 

[ANDcolumn2>yyy][ORcolumn3<>zzz]

三)交叉连接

交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数

据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等

于6*8=48行。

SELECTtype,pub_name

FROMtitlesCROSSJOINpublishers

ORDERBYtype

UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。

UNION的语法格式为:

select_statement

UNION[ALL]selectstatement

[UNION[ALL]selectstatement][…n]

其中selectstatement为待联合的SELECT查询语句。

ALL选项表示将所有行合并到结果集合中。

不指定该项时,被联合查询结果集合中的重复行将只保留一

行。

联合查询时,查询结果的列标题为第一个查询语句的列标题。

因此,要定义列标题必须在第一个查询语

句中定义。

要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选

择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。

在自动转换时,对于数值类

型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。

例如:

查询1UNION(查询2UNION查询3)

  INSERT语句

  用户可以用INSERT语句将一行记录插入到指定的一个表中。

例如,要将雇员JohnSmith的记录插入到本例的表中,可以使用如下语句:

  INSERTINTOEMPLOYEESvalueS

  ('Smith','John','1980-06-10',

  'LosAngles',16,45000);

  通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。

这些列按照我们创建表时定义的顺序排列。

在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。

  我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。

如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。

  如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。

这是因为SQL提供对事务的支持。

一次事务将数据库从一种一致性转移到另一种一致性。

如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。

  回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。

为了增加可读性而在数字间插入逗号将会引起错误。

记住,在SQL中逗号是元素的分隔符。

  同样要注意输入文字值时要使用单引号。

双引号用来封装限界标识符。

  对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd)

 

--查询当前连接的实例名

select@@servername

--察看任何数据库属性

sp_helpdbmaster

--设置单用户模式,同时立即断开所有用户

alterdatabaseNorthwindsetsingle_userwithrollbackimmediate

--恢复正常

alterdatabaseNorthwindsetmulti_user

--察看数据库属性

sp_helpdb

--察看数据库恢复模式

selectdatabasepropertyex('Northwind','recovery')

--设置自动创建统计

alterdatabaseNorthwindsetauto_create_statisticson/off

--设置自动更新统计

alterdatabaseNorthwindsetauto_update_statisticson/off

--查看作业列表

select*frommsdb..sysjobs

--查看作业详细信息

execmsdb..sp_help_job@job_name='HQCRM-CrmNew-CrmNew_2Dimension-NANJINGCRM-216'

--修改作业信息

execmsdb..sp_update_job@job_id=0x4CA27521C9033C48954E7BFC6B965395,@enabled=1

--察看服务器角色

execsp_helpsrvrolemember

--添加服务器角色

execsp_addsrvrolemember'member_name','sysadmin'

--删除服务器角色

execsp_dropsrvrolemember'member_name','sysadmin'

--察看数据库角色

execsp_helprole

--添加数据库角色

execsp_addrole'role_name'

--删除数据库角色

execsp_droprole'role_name'

--查看用户信息

execsp_helpuser

--注意删除guest帐户

usedbname

go

execsp_dropuserguest

--修改对象拥有者

execsp_changeobjectowner'old_onwer.table_name','new_owner'

--查看BUILTIN\Administrators帐号

execmaster..xp_logininfo'BUILTIN\Administrators','members'

--修改默认数据库

execsp_defaultdb'login','defaultdb'

--创建新的登陆

execsp_addlogin@loginame='esProgram',@passwd='h1J2P97vfdlK34',@defdb='career'

--更改登陆数据库访问权限

use

execsp_grantdbaccess@loginame='esProgram',@name_in_db='esProgram'

--把角色db_appuser添加用户帐号中

use

execsp_addrolemember@rolename='db_appuser',@membername='esProgram'

--预测增长

usemaster

/*Procedurefor8.0server*/

createprocusp_databases

as

setnocounton

declare@namesysname

declare@SQLnvarchar(600)

/*Usetemporarytabletosumupdatabasesizew/ousinggroupby*/

createtable#databases(

     DATABASE_NAMEsysnameNOTNULL,

     sizeintNOTNULL)

declarec1cursorfor 

  selectnamefrommaster.dbo.sysdatabases

   wherehas_dbaccess(name)=1--Onlylookatdatabasestowhichwehaveaccess

openc1

fetchc1into@name

while@@fetch_status>=0

begin

  select@SQL='insertinto#databases

    selectN'''+@name+''',sum(size)from'

    +QuoteName(@name)+'.dbo.sysfiles'

  /*Insertrowforeachdatabase*/

  execute(@SQL)

  fetchc1into@name

end

deallocatec1

select 

  DATABASE_NAME,

  DATABASE_SIZE=size*8,/*Convertfrom8192bytepagestoK*/

  RUN_DT=GETDATE()

from#databases

orderby1

GO

createtableDatabaseSizeReport

(Database_NameVarchar(32),

Database_Sizeint, 

CreateDtdatetime)

insertintoDatabaseSizeReportexecusp_databases

select*fromDatabaseSizeReport

--快捷方式

ALT-F1  sp_help

CTRL-1  sp_who

CTRL-2  sp_lock

--查看对象空间

execsp_spaceused/

--察看文件是否存在

execxp_fileexist"c:

\test.txt"

--察看文件详细信息

execmaster..xp_getfiledetails"c:

\test.txt"

--查看系统出错日志

setnocounton--执行一个查询或者是存储过程是要保证这个是开的。

可以提高速度

createtable#sunying_error_lg

(errortextvarchar(500),

continuerowint)

insertinto#sunying_error_lgexecmaster..xp_readerrorlog

select*from#sunying_error_lg

droptable#sunying_error_lg

--获得dbcc命令的完整列表

dbcchelp('?

')

--检测数据库损坏情况

alterdatabasesetsingle_userwithrollbackimmediate

dbcccheckdb(,repair_fast)

--数据库损坏处理步骤

1.检查SQLSERVER和WindowsNT错误日志,看是否能找出问题所在。

例如,可能硬盘驱动器已满。

2.以单用户模式启动SQLServer。

3.用@dbname参数执行sp_resetstatus(比如,sp_resetstatus@dbname="pubs")。

来使数据库摆脱损坏状态

4.以单用户模式重新启动SQLServer。

5.如果数据库仍处于置疑状态,可将它重设回正常模式,并试着用下面命令转储置疑的数据库的事务:

dumptransactionNorthwindwithno_log

6.再次以单用户模式启动SQLServer,如果数据库出现了,可对其进行详细的DBCC检查(checkdb,checkalloc,等等)

7.运行一些随机查询,看看是否会遇到问题。

8.如果没有问题出现,可停止并重新启动SQLServer,然后将数据库投入生产应用。

--将数据库置于紧急模式

sp_configure'allowupdates',1

reconfigurewithoverride

go

updatemaster..sysdatabasessetstatus=-32768wherename='pubs'

go

sp_configure'allowupdates',0

reconfigurewithoverride

go

--当数据库处于这种模式时,你只能从中读取数据。

--查看日志空间

dbccsqlperf(logspace)

--查看高速缓存命中率

dbccsqlperf(lrustats)

--查看活动事务(opentransaction)

dbccopentran

--如果有事务是活动的比如(SPID:

54UID:

1),还有看这个事务打开了多久了。

如果有人忘了,可以用

--kill54

--来干掉他

--查看用户使用set命令的全部内容

dbccuseroptions

--比如可以查看setnocounton

--系统函数

app_name()函数返回当前从SQLServer请求数据的应用程序名称。

get_date()函数返回SQLServer上的当前时间。

host_name()函数确定是哪台工作站正在连接到SQLServer。

system_user函数提供正在连接的用户的登陆名

db_name()告诉你连接是哪个数据库

标识列

droptablesunying_test

createtablesunying_test(aidintidentity,valvarchar(500))

insertintosunying_test(val)select'abc'为1

insertintosunying_test(val)select'abc'为2

insertintosunying_test(val)select'abc'为3

select*fromsunying_test

select@@identity

--在不同连接里查@@identity她返回null

select@@identity

--和@@identity相同,不同点即使停止SQLServer并且重新建立连接,这个命令仍然会返回正确的值

selectident_current('')

--查看I/O,执行计划

setstatisticsioon

selectcount(*)fromsunying_test

--断开一个数据库的所有用户

sp_who

createprocedureusp_killusers@dbnamevarchar(50)as

setnocounton

declare@strSQLvarchar(255)

print'KillingUsers'

print'---------------------'

createtable#tmpUsers(

spidint,

eidint,

statusvarchar(30),

loginnamevarchar(50),

hostnamevarchar(50),

blkint,

dbnamevarchar(50),

cmdvarchar(30))

insertinto#tmpUsersexecsp_who

declarelogincursorcursor

read_only

forselectspid,dbnamefrom#tmpUserswhere 

declare@spidvarchar(10)

declare@dbname2varchar(40)

openlogincursor

fetchnextfromlogincursorinto@spid,@dbname2

while(@@fetch_status<>-1)

begin

if(@@fetch_status<>-2)

begin

   print'Killing 

   set@strSQL='KILL 

   exec(@strSQL)

end

fetchnextfromlogincursorinto@spid,@dbname2

end

closelogincursor

deallocatelogincursor

droptable#tmpUs

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2