sqlserver学习笔记.docx
- 文档编号:30155903
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:18
- 大小:207.04KB
sqlserver学习笔记.docx
《sqlserver学习笔记.docx》由会员分享,可在线阅读,更多相关《sqlserver学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。
sqlserver学习笔记
---Transact-SQL行构造器
droptable#a;
createtable#a
(
column1nvarchar(max),
column2nvarchar(max)
);
--select*from#a;
go
insertinto#a
values(
('1''1'),
('2''2')
);
select*from#a;
创建数据库快照:
createdatabasetest1Capture
on
(
NAME=sqlserver2008test,
FILENAME='E:
\sqlserver2008test.mdf'
)
assnapshotofsqlserver2008test;
使用数据库快照:
restoredatabasesqlserver2008testfromdatabase_snapshot='sqlserver2008test'
go
制定多个数据库文件创建数据库:
createdatabase酒店管理系统
on
primary
(NAME=酒店管理系统_DATA,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\酒店管理系统.mdf',
SIZE=10MB,
MAXSIZE=15MB,
FILEGROWTH=10%
),
(NAME=酒店管理系统_DATA1,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\酒店管理系统1.ndf',
SIZE=8MB,
MAXSIZE=10MB,
FILEGROWTH=10%
),
(NAME=酒店管理系统_DATA2,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\酒店管理系统.ndf',
SIZE=8MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
LOGON
(NAME=酒店管理系统_LOG,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\酒店管理系统_LOG.ldf',
SIZE=3MB,
MAXSIZE=10MB,
FILEGROWTH=5%
)
制定多个文件组的数据库:
createdatabase人力资源系统
on
primary
(NAME=人力资源系统_DATA,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\人力资源系统.mdf',
SIZE=10MB,
MAXSIZE=15MB,
FILEGROWTH=10%
),
FILEGROUPDBGROUP1
(NAME=人力资源系统_DATA1,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\人力资源系统1.ndf',
SIZE=8MB,
MAXSIZE=10MB,
FILEGROWTH=10%
),
FILEGROUPDBGROUP2
(NAME=人力资源系统_DATA2,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\人力资源系统.ndf',
SIZE=8MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
LOGON
(NAME=人力资源系统_LOG,
FILENAME='E:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MS2008R2\MSSQL\DATA\人力资源系统_LOG.ldf',
SIZE=3MB,
MAXSIZE=10MB,
FILEGROWTH=5%
)
数据库重命名:
存储过程发:
EXECsp_dboption'学生管理系统','SINGLE',True
EXECsp_renamedb'学生管理系统','Student'
EXECsp_dboption'学生管理系统','SINGLE',False
useStudent
go
selectDATABASEPROPERTYEX('Student','UserAccess')
as'JSDKJ'
sp_spaceused显示数据库空间信息
execsp_addtype姓名,'int','null'添加自定义类型
execsp_droptype姓名删除自定义类型
execsp_rename'test1','test2'将表test1重命名为表test2
createschemamySchema创建模式并使用
authorizationdbo
createtable学生信息
(
学号nvarchar(50)notnullprimarykey,
姓名nchar(10)notnull
);
xml操作:
XQuery查询:
declare@xmlDocXML
SET@xmlDoc='<教师信息>
<教师编号>111教师编号>
<姓名>张辉姓名>
<性别>男性别>
<年龄>21年龄>
<名族>汉族名族>
<籍贯>陕西宝鸡籍贯>
<联系电话>123455联系电话>
教师信息>'
select@xmlDoc.query('/教师信息/教师编号')as教师编号
使用forxmlrow模式:
首先构造一张表:
createtablestudent
(namevarchar(20)primarykey,
ageintnotnull,
hobbyvarchar(50),
jobvarchar(20)
);
select*fromstudent;
insertintostudentvalues('tiantian',20,'basketball','teacher');
Select*fromstudentforxmlraw
执行结果:
使用forxmlauto模式
使用表名称作为元素名称,使用列名称作为属性名称,而在select关键字后面的列表顺序决定了xml文档的层次关系:
使用forxmlexplicit模式:
Explicit产生独立于相关表的任意属性机构层次。
Xml索引:
主索引:
辅助索引:
Createprimaryxmlindex学生信息
On学生信息(学号)
Go
Createxmlindex学生信息
On学生信息(姓名)
Usingxmlindex学生信息forpath
Go
Openxml函数查询xml
Declare@Teacherint
declare@TeacherInfoxml
set@TeacherInfo=
'
<教师编号>2000教师编号>
<姓名>张辉姓名>
<性别>男性别>
<籍贯>陕西省籍贯>
'
execsp_xml_preparedocument@Teacheroutput,@TeacherInfo
select*fromopenxml(@Teacher,'/row',2)
with(
教师编号nchar(10),
姓名nchar(10),
性别nchar(10),
籍贯ntext
)
While语句:
declare@sumint
set@sum=0
declare@iint
set@i=1
while@i<=100
begin
set@sum=@sum+@i
set@i=@i+1
end
select@sum
函数:
Avg返回平均值:
selectavg(分数)as平均成绩from表名字
Checksum:
用于生成hashindex,
Checksum_agg:
返回组中各值的数量
Count_big:
数量
Grouping:
Max:
最大值selectmax(分数)as最高分from表名字
Min:
最小值
Sum:
总和
Stdev:
标准偏差
Stdevp:
总体标准偏差
Var:
方差
Varp:
总体方差
Count:
计数函数selectcount(*)from表名字
数学函数:
Abs绝对值
Exp以e为敌的指数
Power:
配置函数:
@@max_connections:
最大用户连接数
字符串函数:
Ascii:
返回ascii码值
Char:
与上一个可逆
Left:
左子串函数
Len:
返回字符个数
Lower:
小写字母
Upper:
大写字母
数据类型转换函数:
Cast:
cast(expressionasdatatype)
Convert:
convert(data_type,expression)
日期和时间函数:
Getdate():
返回标准时间格式:
Dateadd()
Datediff():
文本和图像函数:
Patindex:
返回指定表达式中某模式第一次出现的起始位置。
Textptr:
Textvalue:
用户自定义函数:
Create
createfunctionwww()
returnsvarchar(20)
as
begin
return'dldj'
end
标量值函数:
createfunctionGetName(@hobbynvarchar)
returnsnvarchar(50)
as
begin
declare@Namenchar(10)
select@Name=(selectname
fromstudent
wherehobby=@hobby
)
return@Name
end
内联表值自定义函数:
返回一个值,返回一个表,没有begin。
。
end语句
直接就是要给返回语句。
多语句表值函数:
以上两种函数的结合体。
事务与锁:
Begintransaction:
事务的开始
Commit/rollback:
事务的结束。
提交/回滚
下面来做个实验:
目前数据库表的信息:
begintransaction--开启事务
updatestudentsetage=20wherename='tiantian';--更新一条数据
之后查询
发现已经修改了,此时我们发现自己犯错了,该如何是好呢?
回滚:
Rollback。
我们发现我们所做的操作已经修改了
如果我们已经用commit提交了此次事务:
就会提示我们没有对应的回滚点。
锁:
排它锁:
共享锁:
更新锁:
意向锁:
键范围锁:
架构锁:
大容量更新锁:
游标:
定义游标:
declarecursor1cursor
forselect*
fromstudent;
打开游标:
opencursor1
检索游标:
关闭和删除游标:
closecursor1
删除游标:
deallocatecursor1
存储过程:
用户自定义存储过程:
Transact-SQL,CLR
扩展存储过程:
C语言
系统存储过程:
sqlserver许多管理活动都通过一种特殊的存储过程执行的。
Sp_who:
查看当前用户、会话、进程的信息。
Sp_helpdb:
制定数据库的信息
Sp_monitor:
有关sqlserver的统计信息
创建存储过程:
简单示例:
createprocedurepro_student
as
select*fromstudent
execpro_student;
创建加密存储过程:
使用withencryption
加密后的存储过程将无法查看其文本信息。
未加密的:
加密后的:
创建临时存储过程:
#本地临时存储过程
##全局临时存储过程
当sqlserver关闭后,这些过程将不复存在。
Createprocedure#pro_student
As
Select*fromstudent
创建嵌套存储过程:
CLR存储过程:
在vs里面创建数据库项目:
然后添加存储过程Teacher.cs
并编写如下代码:
右击项目,点击部署,之后存储过程就生成了。
在sqlserver里面执行这个存储过程teacher
execsp_configure'showadvancedoptions','0';
go
reconfigure
go
execsp_configure'clrenabled','1';
go
reconfigure;
go
execTeacher1
默认情况下CLR处于禁止状态,使用sp_configure系统存储过程启动CLR。
创建登录帐户:
1.图形化界面
2.命令管理
Createlogin登录名
createloginDBUserwithpassword='admin',default_database=master
sp_grantlogin存储过程:
execsp_grantlogin‘prohui-pc\ms2008r2\dbmanager
sp_addlogin存储过程:
execsp_addlogin‘user’,’admin’,’master’go
droplogin:
删除登陆账户
sp_droplogin‘user’:
删除登陆账户
登陆名相当于进入大门的钥匙,而用户名相当于进入房间的钥匙,如果要看看房间里面的东西,还需要有用户名才行。
数据库用户:
默认用户:
dbo用户guest用户sys用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sqlserver 学习 笔记