SQL学习总结.docx
- 文档编号:15892573
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:11
- 大小:45.85KB
SQL学习总结.docx
《SQL学习总结.docx》由会员分享,可在线阅读,更多相关《SQL学习总结.docx(11页珍藏版)》请在冰点文库上搜索。
SQL学习总结
1、Withties:
查出与返回数据的最后一行的相同的数据
2、用法:
selecttop(5)withties字段名FROM表名
3、Over的使用
Over称为窗口函数
用法:
sum(valus)over()其是指对搜索出来的数据进行求和,不需要在进行分组,如果需要有限定条件则sum(valus)over(partitionby字段名)
4、数据的计算
在进行数据与字段的乘除的时候,数字后面加一个点,(110.),这样就可以把整数字段隐式的装换为十进制数据进行乘除,否则则会使正式除法,回省略小数
5、In、like、between的用法
In主要是指在多个数据中选择一个,进字段名的值在in之内
Like主要进行迷糊查询,例:
like‘%as’
Between主要是指字段值在两个值之间
6、N的用法
N表示国际化(national)用于表示字符串Unicode(nchar、nvarchar)
数据类型numeric是指实数例:
numeric(12,2)(12指数据长度,2指小数位数)
7、数据的优先级
1、()
2、x、/、%
3、+、-、
4、
5、NOT
6、and
7、between、in、like、or
8、=
8、case表达式的使用
Select字段一,case字段二
When‘条件’then结果
When‘条件’then结果
Endas字段名from表名
Case与end是成对出现的
Case与case表达式的区别是,case表达式可以添加条件,但是case不可以
While语句的使用:
进行1+2+3+…….+100
declare@sumint
set@sum=0
declare@Iint
SET@I=0
WHILE@I<100
BEGIN
SELECT@SUM=@SUM+@I
SELECT@I=@I+1
END
SELECT(@sum)
求得日期的月份
selectMESBUSINESS20.dbo.fun_GetRealYYYYMMByDate(SubmitDate)
其中fun是函数
9、数据类型
Varchar和charnvarchar和nchar前者是一个字节来保存一个字符,语言只能限定于英语,后者是用两个字节来保存一个字符,不进行语言限制
在进行查询时如果把null值当做空字符串进行连接时,则可以通过一个CONCAT_NULL_YIELDS_NULL保持OFF状态
语法:
SETCONCAT_NULL_YIELDS_NULLOFF
同时也可以使用COALESEC函数进行转变COALESEC(字段)
Nvarchar和varvhar的区别:
Nvarchar在分配内存是可以根结自身的大小进行调整,nvarchar(100),其中一百是自己的最大地址,varchar(100)不会根据自身大小进行调整,100就是其占用的内存,不会改变
10、函数的使用:
数据截取函数SUBSTRING
函数使用SUBSTRING(String,start,length)
Len函数和DATALENGTH函数
二者函数主要进行返回字符串的字符数,其中DATALENGTH返回字符串的字节数,
用法:
selectlen(N’字符串)/DATALENGTH(N’字符串)
区别:
前者不包含尾随空格,后者包括尾随空格
Charindex函数
返回字符串中字串第一次出现的位置
用法:
Charindex(substring,string,start-POS)
Substring是指字串,start-POS指开始检索的行
PATINDEX函数
PATINDEX函数主要是返回字符串中某个模式第一次出现的位置
用法:
PATINDEX(pattern,string)其中pattern和like函数相似,主要进行模糊查询PATINDEX(‘%0-9%’,’abcd12345’),返回5
REPLACE函数
REPLACE(string,substring1,substring2)
Substring1指要被替换的字段,substring2指替换成的字段
REPLICATE函数
REPLICATE函数主要进行字符串的复制
用法:
REPLICATE(string,n)
STUFF函数
STUFF函数选删除一个字符串再插入一个字符串
用法:
STUFF(string,POS,length,insertstring)
POS是指开始插入的字符,length指长度
UPPER函数和LOWER函数
UPPER函数和LOWER函数主要是进行字母的大小写转换的函数
RTRIM函数和LTRIM函数主要进行前后空格的删除
11、自定义函数的书写:
书写格式:
CREATEFUNCTION函数名(@字段,数据类型)
RETURNS
@表名TABLE(@字段,数据类型)
AS
Begin
SELECT0
Return
End
例如:
已知部门id,求其子部门
ALTERFUNCTION[dbo].[Fun_BM_GetSubDeptByID]
(@DeptIDINT--指定部门的ID
)
RETURNS@SubDeptByIDTableTABLE
([ID][int]NOTNULL,
[PID][int]NULL,
cn_name[nvarchar](50)NULL,
en_name[nvarchar](50)NULL,
iscompany[smallint]NULL
)
AS
BEGIN
withSubDeptTreeas(
selectID,PID,cn_Name,en_name,iscompanyfromV_BS_DepartmentasawhereID=@DeptIDunionall
selectb.ID,b.PID,_Name,b.en_name,b.iscompanyfromV_BS_Departmentasb
joinSubDeptTreeonCHARINDEX(cast(SubDeptTree.idasvarchar(10)),b.PID)>0)
insertinto@SubDeptByIDTableselectID,PID,cn_Name,en_name,iscompanyfromSubDeptTree;
return;
END
12、通配符的使用
常用的通配符主要有:
’%’、’_’、’字符列(ABC)’、’[字符-字符]’、
‘[^字符列或范围]’、’escape(转义)’
字符列(ABC)用法:
like‘【abc】%’指以abc中某一个字母开始的字符
‘[^字符列或范围]’用法:
^表示不存在字符列或者范围内的字符
escape(转义)的使用:
当字符中存在特殊通配符是,需使用转义字符
like%!
_%escape!
指搜索是否含有_的字符,同样也可以使用
like%[_]%
时间等待:
WAITFOR
--WAITFOR
--例等待1小时2分零3秒后才执行SELECT语句
waitfordelay’01:
02:
03’
select*fromemployee
--例等到晚上11点零8分后才执行SELECT语句
waitfortime’23:
08:
00’
select*fromemployee
13、约束:
行约束:
Createtable
Idvarchar(10)primarykey
表约束:
Createtable(
Idvarchar(10),
Namevarchar(10)
ConstraintIdprimarykey(id)
)
向没有主键的表中进行添加主键
Altertable
Add
ConstraintId
primarykeyid
删除主键
Altertable
DropConstraintId
创建外键
Createtable(
Idvarchar(10)nullreferences指定参照的包表,
Namevarchar(10)
)
向没有外建的表中进行添加外键
Altertable
Add
Constraint字段
Forignkey字段references指定表名(字段)
Default约束
是指向数据库中插入数据时,在定义的约束列会填充相应的默认值
-------当分数为空值时,会显示该考生未参加考试
删除表中所有数据:
deletefrom表名//
Truncate删除数据
Truncatetable表名
Computeby进行数据分组汇总,在一部分数据中进行处理,其必须要与orderby
连用,切排序字段必须一致
视图的重新定义:
例:
alterviewv
asselectdidfromemp
createviewvasselecteid,ename,emp.didasedid,dept.didasdid,dname
fromemp,deptwhereemp.did=dept.did
/*创建视图*/
createviewvasselect*fromemp
--v为视图名,as为必须
14、索引:
/*查询指定的数据库有多少张表*/
selectobject_id('employee')
--获得指定database对象的ID,如果该对象不存在,返回NULL
selectnamefromsyscolumnswhereid=object_id('employee')
--返回指定表的字段
selectnamefromsysobjectswherextype='U'
--返回指定数据库的用户表
--xtype表类型,U表示用户表
15、游标:
创建游标:
Use数据库
Declare游标名称cursor(scroll可以进行跳转的游标)forselect* from表名------创建普通游标
Forreadonly/update----创建只读游标/更新游标
打开游标:
Open游标
Fetchenext(prior)from游标----每次查找下一条(上一条)记录
进行绝对跳转时使用absolute,如果进行相对跳转时使用relative(relative1向后跳转,-1向前跳转)
如果把数据存到其他表中进行展示,则需定义变量,例:
Declare@Aint(数据类型与原表相同)
Fetchabsolutefrom游标into@A
Select@A
关闭游标:
close游标
释放游标:
dealloate游标,释放后就不能在进行打开
--------在进行数据跳转查询时,可以通过‘print@@fetch_seatus’的值来确定跳转是否超出范围,(0正常,-1超出范围,-2查询值本来不存在)如果需要检索游标中的行数,可以使用@@cursor_row进行检索,但是在某些条件下是不具备检索的
对表中数据进行循环查找
fetchnextfromtestcursora
while@@FETCH_STATUS=0
begin
fetchnextfromtestcursora
end
/*游标实例(更新)*/
begintrantr
declarecrcursorforselect*fromempforupdateofename
--通过该游标只能更新ename列
--多个列逗号分隔
opencr
fetchnextfromcr
updateempsetename='log' wherecurrentofcr
--currentofcr通过游标
--只更新一行
closecr
deallocatecr
rollbacktrantr
/*删除游标指向的行*/
deletefromwherecurrentofcr
对于存储过程,在传递参数时不用添加括号,直接写要传递的参数
Exec存储过程参数
16、存储过程中的输出参数用法:
例:
createproc存储过程名称
@参数1数据类型output
As
Begin
、、、、、、、、、
End
执行时:
Daclare@参数1数据类型
Exec存储过程名称@参数1output
Select参数1
如果要进行参数输出时,在后面会用到select自定义的参数(declare参数)
17、触发器
创建触发器:
Createtrigger触发器名称on表名forinsert/update、delete----事后触发器
As
Begin
要执行的语句
End
--insertinto、、、、、、、、、、、、、、、、、
§、insert是插入式触发,update是更新触发器,delete删除触发器
触发器调用时的顺序,只能定义第一个和最后一个
语句:
sp_settriggerorder@triggername=’触发器名
称’,@order=frist/laet/none,stmttype=insert/update
其中frist指的是第一个要触发的触发器,last是最后一个要触发的触发器,none是取消触发的顺序,
Createtrigger触发器名称on表名forinsteadofdelect/insert/update----发器
As
Begin
要执行的语句
End
--inse
SQL数据学习问题:
索引以及触发器的含义以及用途
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 学习 总结