SQL Server 常用命令.docx
- 文档编号:10944391
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:31
- 大小:28.59KB
SQL Server 常用命令.docx
《SQL Server 常用命令.docx》由会员分享,可在线阅读,更多相关《SQL Server 常用命令.docx(31页珍藏版)》请在冰豆网上搜索。
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('?
')
--检测数据库损坏情况
alterdatabase
dbcccheckdb(
--数据库损坏处理步骤
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Server 常用命令