Tsql语句大全.docx
《Tsql语句大全.docx》由会员分享,可在线阅读,更多相关《Tsql语句大全.docx(14页珍藏版)》请在冰豆网上搜索。
![Tsql语句大全.docx](https://file1.bdocx.com/fileroot1/2023-2/2/e554a967-cee5-4423-962c-2640378d6625/e554a967-cee5-4423-962c-2640378d66251.gif)
Tsql语句大全
T-SQL查询语句大全收藏
一、1)建立数据库:
例:
createdatabasestudent
onprimary
(
name=student_data,
filename=”c:
\student_data.mdf”,
size=2mb,
filegrowth=1mb,
maxsize=20mb
)
logon
(
name=student_log,
filename=”c:
\student_log.ldf”,
size=1mb,
filegrowth=10%,
maxsize=15mb
)
注:
create:
创建database:
数据库student:
学生(自己起的数据库名称)primary:
主要的name:
姓名filename:
文件路径size:
文件大小filegrowth:
文件增长maxsize:
文件最大存储容量log:
日志
2)修改已建好的数据库:
修改数据库建立时文件(主数据文件或日志文件)的大小,要更改文件最大值和文件增长速度,只需将size改为maxsize或filegrowth即可。
alterdatabasestudentmodifyfile
(
name='student_log',
size=4mb
)
注:
alter:
修改modify:
扩充
修改数据库,要增加数据库次要数据文件。
alterdatabasestudentaddfile
(
name='student_data2',
filename="e:
\student_data2.ndf",
size=1mb,
maxsize=10mb,
filegrowth=1mb
)
二、配置数据库
(1)为student数据库设置为“只读”属性
execsp_dboption‘student’,’readonly’,’true’
(2)为student数据库设置为“单用户”属性
execsp_dboption‘student’,’singleuser’,’true’
(3)为student数据库设置为“自动收缩”属性
execsp_dboption‘student’,’autoshrink’,’true’
注:
如对设置属性进行删除,则将’true’改为’false’
(4)手动式压缩数据库
dbccshrinkdatabase(student,10)
注:
exec:
执行配置sp_dboption:
存储
singleuser:
单用户readonly:
只读
autoshrink:
自动压缩dbcc:
收缩数据库命令
shrinkdatabase:
压缩数据库student:
数据库名
10:
允许数据库有10%的未用空间
三、删除数据库
dropdatabasestudent
注:
drop:
删除
四、创建用户定义数据类型
execsp_addtypeci,’nvarchar(20)’,null
注:
sp_addtype:
新数据类型
ci:
新数据类型名称
五、创建数据库表
usestudent
createtablestudent_inf
(
student_idintnotnull,
student_namenvarchar(15)notnull,
student_sexnvarchar
(1)notnull,
student_ageintnotnull
)
注:
use:
使用(如果没有选择在哪个数据库里建表,则必须使用此语句)student_inf:
数据表名student_id:
学号(列名1)int:
数据类型1notnull:
非空student_name:
学员姓名(列名2)nvarchar(15):
数据类型2student_sex:
学员性别(列名3)student_age:
学员年龄(列名4)
六、修改已建好的数据表
(1)修改列的数据类型
altertablestudent_infaltercolumnstudent_namenvarchar(10)null
注:
alter:
修改student_inf:
表名column:
列student_name:
列名nvarchar(10):
数据类型null:
允许为空
(2)删除一列内容:
altertablestudent_infdropcolumnstudent_sex
注:
drop:
删除student_sex:
所要删除的列名
(3)增加一列内容:
altertablestudent_infaddstudent_sexnvarchar
(1)null
注:
student_sex:
列名null:
增加列名允许为空
七、为了保证数据的完整性,需要添加的约束
(1)实体完整性:
1)主键:
primarykey
在创建时加主键约束:
createtablestudent_mark
(
student_idintnotnullprimarykey,
computer_marknvarchar(15)notnull,
math_marknvarchar
(1)notnull,
Chinese_markintnotnull
)
注:
student_mark:
表名computer_mark:
计算机成绩
math_mark:
数学成绩Chinese_mark:
语文成绩
在修改表时添加主键约束:
altertablestudent_infaddconstraintpkprimarykey(student_id)
注:
add:
加constraint:
约束
pk:
自己起的约束名称,方便于对约束进行删除
在修改表时删除主键约束:
altertablestudent_infdropconstraintpk
2)唯一约束:
unique
在创建时加唯一约束:
createtablestudent_mark
(
student_idintnotnullunique,
computer_marknvarchar(15)notnull,
math_marknvarchar
(1)notnull,
Chinese_markintnotnull
)
在修改表时添加唯一约束:
altertablestudent_infaddconstraintununique(student_id)
在修改表时删除唯一约束:
altertablestudent_infdropconstraintun
3)标识列:
identity(标识种子,标识增量)—从标识种子开始,每加一条记录就自增1,需在创建时加入,并可直接将此列定义为主键列。
createtablestudent_mark
(
student_idintidentity(1,1)primarykey,
computer_marknvarchar(15)notnull,
math_marknvarchar
(1)notnull,
Chinese_markintnotnull
)
(2)引用完整性
外键:
foreignkey
在创建时加入外键:
createtablestudent_mark
(
student_idintnotnullforeignkeyreferencesstudent_inf(student_id),
computer_marknvarchar(15)notnull,
math_marknvarchar
(1)notnull,
Chinese_markintnotnull
)
注:
references:
关系student_inf:
主键表student_id:
主键列
在修改表时加入外键:
altertablestudent_markaddconstraintfkforeignkey(student_id)referencesstudent_inf(student_id)
在修改表时删除外键约束:
altertablestudent_markdropconstraintfk
(3)域完整性
1)default约束:
当列值为空时,用default约束后面的值来代替空值
在建表时同时创建:
createtablestudent_mark
(
student_idintnotnull,
computer_marknvarchar(15)nulldefault‘unknow’,
math_marknvarchar
(1)notnull,
Chinese_markintnotnull
)
注:
unknow:
不知道
在修改表时加入default约束:
altertablestudent_markaddconstraintdedefault‘unknow’forcomputer_mark
在修改表时删除default约束:
altertablestudent_markdropconstraintde
2)check约束:
用条件来约束本列数据
在建表时同时创建:
createtablestudent_inf
(
student_idintnotnull,
student_ageintnotnullcheck(student_age>15andstudent_age<100),
student_namenvarchar(15)notnull,
student_sexnvarchar
(1)notnull
)
在修改表时加入check约束:
altertablestudent_infaddconstraintchcheck(student_age>15andstudent_age<100)
注:
连接两个条用:
and:
并且or:
或
在修改表时删除default约束:
altertablestudent_markdropconstraintch
八、删除数据库表
droptablestudent_inf
九、SQL里的条件表达式和逻辑运算符:
运算符含义
>大于
<小于
>=大于等于
<=小于等于
=等于
!
非
<>不等于
not逻辑非:
否定条件
and逻辑与:
连接两个条件且仅当两个条件都为真时返回TRUE
or逻辑或:
连接两个条件,但只要其中任一个为真就返回TRUE
使用方法:
一般放于where子句里进行条件限制的筛选
例:
a)select*fromstudent_infwherestudent_id=1
b)selectstudent_name,student_sex,student_agefromstudent_infwherestudent_age>15andstudent_age<20
注:
select:
查询显示
十、通配符
图示:
本博客不支持哦!
十一、向表中插入数据:
1)直接将值进行插入:
insertintostudent_mark(computer_mark,math_mark)
values(89,86)
2)用其他表中的数值直接插入到另一张表里:
insertintostudent_mark(computer_mark,math_mark)
selectq,wfromqwe
注:
q:
是表qwe的一列w:
是表qwe的一列
qwe:
是表名
十二、更新数据行:
updatestudent_marksetcomputer_mark=computer_mark+2wherestudent_id=3
十三、联接:
是为了联接显示最终结果,并非为两张表设置主外键
(1)内联接:
innerjoin…on…
筛选出两张表里的公共内容
select*fromstudent_infinnerjoinstudent_markonstudent_inf.student_id=student_mark.student_id
注:
在查询结果窗口中显示两张表中的所有内容于一张联合表中。
(2)外联接:
1)左外联接:
leftouterjoin…on…
以左表为主,显示与其相连的右表内容,若右表中此记录不存在则用null来代替:
select*fromstudent_infleftouterjoinstudent_markonstudent_inf.student_id=student_mark.student_id
2)右外联接:
rightouterjoin…on…
以右表为主,显示与其相连的左表内容,若左表中此记录不存在则用null来代替:
select*fromstudent_infrightouterjoinstudent_markonstudent_inf.student_id=student_mark.student_id
十四、删除数据
1)删除某一行数据:
deletefromstudent_markwherestudent_id=1
2)删除表里的所有数据:
deletefromstudent_mark
3)删除表里的所有数据:
truncatetablestudent_mark
附加:
以下内容为附加内容,有精力的同学可以加以参考,不做要求
3)完全外部联接:
fullouterjoin…on…
将两张表中所有行显示出来,如果没有匹配的内容则用null来补充。
select*fromstudent_inffullouterjoinstudent_markonstudent_inf.student_id=student_mark.student_id
(3)自联接:
本表与自身相连
假设要显示在一张表里,学员math_mark成绩相等的的两个学员的学号和语文成绩。
那么就讲这张表与自身相连所联接的列是math_mark,为了保证显示数据的不冗余,因此加了个条件student_mark.student_id代码:
select
student_mark.student_id,student_mark.chinese_mark,student_mark1.student_id,student_mark1.chinese_markfrom
student_markinnerjoinstudent_markasstudent_mark1onstudent_mark.math_mark=student_mark1.math_markandstudent_mark.student_id(4)交叉联接:
CROSSJOIN
在这类联接的结果集内,两个表中每两个可能成对的行占一行。
例如,在pubs数据库表中,通过作者CROSSJOIN出版商输出的结果集内,每个可能的作者/出版商组合占一行。
所得到的SQL可能象下面这样:
SELECT*
FROMauthorsCROSSJOINpublishers
附加内容结束
十五、查询语句:
select
1)查询全部行和列:
select*fromstudent_inf
2)查询一张表里的某些列:
selectstudent_id,student_name,student_agefromstudent_inf
3)查询一张表里的某一行:
selectstudent_id,student_namefromstudent_inf
wherestudent_id=3
十六、排序子句:
orderby…desc降序
orderby…升序
SELECTstudent_id,computer_mark,math_markFROMstudent_markORDERBYmath_mark,student_idDESC
十七、在查询中使用常量和运算符
SELECTstudent_name+':
'+student_name+'->'+student_name
FROMstudent_inf
注:
select后的列与加入符号的数据类型必须匹配。
十八、as子句:
为查询显示列起个列名
SELECTstudent_name+':
'+student_name+'->'+student_nameasname123
FROMstudent_inf
十九、top子句:
返回数据行:
top
1)限制返回数据行
SELECTTop3student_id,student_nameFromstudent_inf
2)限制返回行百分比
SELECTTop80Percentstudent_id,student_nameFromstudent_inf
二十、聚合函数
1)SUM:
求和函数
SELECTSUM(math_mark)AsTotal
Fromstudent_mark
2)AVG:
平均值函数
SELECTAVG(math_mark)Asavg
Fromstudent_mark
3)COUNT:
统计个数
SELECTCOUNT(math_mark)Asavg
Fromstudent_mark
4)max:
最大值
SELECTmax(math_mark)Asavg
Fromstudent_mark
5)min:
最小值
SELECTmin(math_mark)Asavg
Fromstudent_mark
二十一、分组子句:
groupby…
SELECTcount(math_mark)as[123]FROMstudent_markGROUPBYmath_mark
二十二、having子句:
用于设置groupby子句的条件
SELECTAVG(math_mark)as[123]FROMstudent_markwherestudent_id>3GROUPBYmath_markhavingAVG(math_mark)>70
二十三、其他模糊查询
1)Like运算符(之前已讲过)
2)In运算符:
in()
只返回和in后()内的值相匹配的项
SELECTstudent_name,student_ageFROMstudent_inf
WHEREstudent_idIN('2','4')
3)BETWEEN运算符:
between…and…
返回在between…and…之间的数值项
SELECTstudent_name,student_ageFROMstudent_inf
WHEREstudent_idbetween1and4
4)ISNULL运算符:
ISNULL
返回为空值的内容项
SELECTstudent_name,student_ageFROMstudent_inf
WHEREstudent_nameisnull