SQL语法大全TsqlWord文档下载推荐.docx

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

SQL语法大全TsqlWord文档下载推荐.docx

《SQL语法大全TsqlWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQL语法大全TsqlWord文档下载推荐.docx(38页珍藏版)》请在冰点文库上搜索。

SQL语法大全TsqlWord文档下载推荐.docx

十三、多表联接查询14

1、分类14

2、多表内联结查询14

3、多表外联接查询15

4、多表交叉联接查询16

十四、数据库用户16

1、创建登录帐户16

2、创建数据库用户17

3、给用户分配权限17

4、系统内置的数据库用户17

十五、T—SQL编程18

1、变量18

2、输出语句19

3、逻辑控制语句19

十六、高级查询21

1、简单的子查询21

2、IN(NOTIN)子查询21

3、EXISTS子查询22

十七、事务22

1、使用T-SQL语句来管理事务22

2、判断某条语句执行是否出错22

3、事务必须具备ACID四个属性22

4、事务的分类23

5、事务例句23

十八、索引24

1、索引类型24

2、使用T-SQL语句创建索引24

3、索引的优缺点24

4、创建索引的指导原则25

5、索引例句25

十九、视图26

1、是么是视图26

2、视图的用途26

3、使用T-SQL语句创建视图26

4、视图例句26

二十、存储过程27

1、什么是存储过程(procedure)27

2、存储过程的优点27

3、存储过程的分类27

4、常用的系统存储过程28

5、使用T-SQL语句创建和调用存储过程28

6、处理存储过程中的错误32

二十一、触发器33

1、创建触发器的语法33

2、例句34

T—SQL

一、T—SQL的组成

1、DML(数据操作语言DataManipulationLanguage)

查询、插入、删除和修改数据库中的数据。

SELECT、INSERT、UPDATE、DELETE等;

2、DCL(数据控制语言DataControlLanguage)

用来控制存取许可、存取权限等。

GRANT、REVOKE等。

3、DDL(数据定义语言DataDefinitionLanguage)

用来建立数据库、数据库对象和定义其列。

CREATETABLE、DROPTABLE等。

4、变量说明、流程控制、功能函数

定义变量、判断、分支、循环结构等。

日期函数、数学函数、字符函数、系统函数等。

二、库

1、建立库

--判断是否存在该库,如果有则删除

USEmaster--设置当前数据库为master,以便访问sysdatabases表

GO

IFEXISTS(SELECT*FROMsysdatabasesWHEREname='

stuDB'

DROPDATABASEstuDB

--建立数据库

CREATEDATABASEstuDB

ONPRIMARY--默认就属于PRIMARY主文件组,可省略

NAME='

stuDB_data'

--主数据文件的逻辑名

FILENAME='

D:

\project\stuDB_data.mdf'

--主数据文件的物理名

SIZE=5mb,--主数据文件初始大小

MAXSIZE=100mb,--主数据文件增长的最大值

FILEGROWTH=15%--主数据文件的增长率

LOGON

stuDB_log'

\project\stuDB_log.ldf'

SIZE=2mb,

FILEGROWTH=1MB

GO

2、删除库

DROPDATABASEstuDB

EXISTS()语句:

检测是否存在stuDB数据库,如果存在stuDB数据库,则删除

sysdatabases表在master数据库中,保存着当前系统中所有的数据库

三、表

1、建表

--判断是否存在该表,有则删除

USEstuDB--将当前数据库设置为stuDB,以便在stuDB数据库中建表

IFEXISTS(SELECT*FROMsysobjectsWHEREname='

stuInfo'

DROPTABLEstuInfo

--建表

CREATETABLEstuInfo/*-创建学员信息表-*/

stuNameVARCHAR(20)NOTNULL,--姓名,非空(必填)

stuNoCHAR(6)NOTNULL,--学号,非空(必填)

stuAgeINTNOTNULL,--年龄,INT类型默认为4个字节

stuIDNUMERIC(18,0),--身份证号

stuSeatSMALLINTIDENTITY(1,1),--座位号,自动编号

stuAddressTEXT--住址,允许为空,即可选输入

2、删表

USE库名--将当前数据库设置为stuDB,以便在stuDB数据库中建表

表名'

DROPTABLE表名

四、约束

1、主键(primarykey)

ALTERTABLEstuInfo

ADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo)

2、唯一性(uinque)

ADDCONSTRAINTUQ_stuIDUNIQUE(stuID)

)for)

ADDCONSTRAINTDF_stuAddress

DEFAULT('

地址不详'

)FORstuAddress

4、检查(check(……))

ADDCONSTRAINTCK_stuAge

CHECK(stuAgeBETWEEN15AND40)

5、外键(foreignkey(列名)references主表名(列名))

ALTERTABLEstuMarks

ADDCONSTRAINTFK_stuNo

FOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)

6、删除约束

ALTERTABLE有约束的表名DORP约束名

五、通配符

 

通配符

解释

示例

'

_'

一个字符

ALike'

C_'

%

任意长度的字符串

BLike'

CO_%'

[]

括号中所指定范围内的一个字符

CLike'

9W0[1-2]'

[^]

不在括号中所指定范围内的一个字符

DLike'

%[A-D][^1-2]'

六、插入数据

INSERT表名(列名)VALUES(插入的列值)

insertstuinfo(stuname,stuno,stuage,stuid,stuaddress)

values('

张三'

001,20,100,'

hello'

1、注意事项

A、每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验。

B、每个数据值的数据类型、精度和小数位数必须与相应的列匹配。

C、不能为标识列指定值,因为它的数字是自动增长的。

D、如果在设计表的时候就指定了某列不允许为空,则必须插入数据。

E、插入的数据项,要求符合检查约束的要求。

F、具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值。

2、插入多行数据

(1)对象表存在

INSERTINTO<

表名>

(列名)

SELECT<

列名>

FROM<

源表名>

INSERTINTOstuinfobak(stuname,stuno,stuage)

SELECTstuname,stuno,stuageFROMstuinfo

(Stuinfobak表必须在数据库中存在)

(2)对象表不存在

SELECT(列名)INTO<

SELECTstuname,stuno,stuageINTOstuinfobak1FROMstuinfo

(Stuinfobak1表必须在数据库中不存在)

(3)插入新的标识列

IDENTITY(数据类型,标识种子,标识增量)

SELECTIDENTITY(数据类型,标识种子,标识增长量)AS列名

INTO新表FROM原始表

SELECTStudents.SName,Students.SAddress,Students.SEmail,

IDENTITY(int,1,1)AsStudentID

INTOTongXunLuEXFROMStudents

(4)插入多行内容

(列名)

SELECT列内容UNION

……

七、更新数据行

UPDATE<

SET<

列名=更新值>

[WHERE<

更新条件>

]

UPDATEStudents

SETSAddress='

北京女子职业技术学校家政班'

WHERESAddress='

北京女子职业技术学校刺绣班'

UPDATEScores

SETScores=Scores+5

WHEREScores<

=95

八、删除数据行

1、删除指定的行

DELETEFROM<

[WHERE<

删除条件>

注意:

DELETEFROM不会只删单个字段,要删就是整行

2、删除所有记录

TRUNCATETABLE<

不能用于有外键约束引用的表。

删除后,表的结构、列、约束、索引不变。

九、查询

FROM<

查询条件表达式>

]

[ORDERBY<

排序的列名>

[ASC(升)或DESC(降)]]--默认为升序

1、查询全部的行和列

SELECT*FROMStudents

2、查询部分行

WHERE<

3、自定义命名查询结果中的列名

(1)使用AS来命名列

SELECT原表中列名AS查询结果中显示的列名

SELECTStunoAS学员编号,StuNameAS学员姓名,StuAddressAS学员地址

FROMstuinfo

WHERESAddresslike'

(2)合并两列数据,以规定格式输出查询结果

SELECT原表中列名+'

.'

+原表中列名AS查询结果中显示的列名

FROM表名

(3)使用=来命名列

SELECT查询结果中显示的列名=原表中列名

SELECT查询结果中显示的列名=原表中列名+'

+原表中列名

(4)查询某几列为空的行

SELECT列名A

FROM表名

WHERE条件列名BISNULL

显示结果:

B列为空的A列内容。

(5)显示结果中加入常量列

SELECT列A=SName,列B=SAddress,'

常量列内容'

AS常量列名称

FROMStudents

SELECT姓名=SName,地址=SAddress,'

河北新龙'

AS学校名称

(6)限制查询结果输出的行数

SELECTTOP5列名

WHERE条件

显示结果:

符合条件的前五行。

(7)返回百分之多少行

SELECTTOP20PERCENT列名

符合条件的行数的前20%行。

(8)升序排列(默认)ASC

SELECTStudentIDAs学员编号,(Score*0.9+5)As综合成绩

FROMScore

WHERE(Score*0.9+5)>

60

ORDERBYScore

(9)降序排列DESC

SELECTAu_Lname+'

+Au_fNameASEMP

From表AUnion

SELECTfName+'

+LNameASEMP

From表B

ORDERBYEMPDESC

混合查找两张表中的列,并按格式输出到新列中,并按新列排序输出。

(10)按多列排序

SELECTStudentIDAs学员编号,ScoreAs成绩

WHEREScore>

ORDERBYScore,studentID

先按Score排序,再按studentID排序。

十、模糊查询

1、LIKE

查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容。

SELECTStuNameAS姓名

FROMStuinfo

WHEREstunameLIKE'

徐%'

姓为“徐”的人的名字。

2、ISNULL

把某一字段中内容为空的记录查询出来。

SELECTStuNameAS姓名,StuAddressAS地址。

WHEREStuAddressISNULL

把地址栏为空的显示出来。

3、BETWEEN

把某一字段中内容在特定范围内的记录查询出来。

SELECTStuNo,Score

FROMStumarks

WHEREScoreBETWEEN60AND80

把分数80>

=Score>

=60的显示出来。

4、IN

把某一字段中内容与所列出的查询内容列表匹配的记录查询出来。

SELECTStuNameAS学员姓名,StuAddressAs地址

FROMStuinfo

WHEREStuAddressIN('

北京'

'

广州'

上海'

把地址在('

)里的显示出来。

十一、聚合函数

1、SUM(求和)

SELECTSUM(Score)

把符合条件的Score求和,然后显示结果。

2、AVG(求平均值)

SELECTAVG(Score)AS平均成绩

FromScore

WHEREScore>

=60

把Score>

=60的成绩求平均值,然后显示结果,显示的列名为“平均成绩”

3、MAX、MIN(求最大、最小值)

SELECTMAX(Score)AS最高分,MIN(Score)AS最低分

把Score>

=60中的最高分和最低分显示出来。

4、COUNT(计数)

SELECTCOUNT(*)AS及格人数

把Score列中,>

=60的个数统计出来,然后显示统计数目。

十二、分组查询

1、单列分组查询

SELECTCourseID,AVG(Score)AS课程平均成绩

GROUPBYCourseID

按CourseID组求Score的平均值,然后将CourseID和平均值显示出来。

2、多列分组

SELECTStudentIDAS学员编号,CourseIDAS内部测试,AVG(Score)AS平均成绩

GROUPBYStudentID,CourseID

显示所有学员的:

“学员编号”(StudentID),“内部测试”(CourseID),“平均成绩”(AVG(Score))。

如果同一CourseID组中出现了相同的StudentID,则显示出来的是这一CourseID组中相同的StudentID的平均成绩。

3、HAVING(追加条件)

GROUPBYStudentID,CourseID

HAVINGCOUNT(Score)>

1

显示补考学员的:

如果同一CourseID组中的同一StudentID组中记录Score的次数,如果次数>

1,则显示出来“学员编号”(StudentID),“内部测试”(CourseID),“平均成绩”(AVG(Score))。

4、条件比较顺序

WHERE子句从数据源中去掉不符合其搜索条件的数据。

GROUPBY子句搜集数据行到各个组中,统计函数为各个组计算统计值。

HAVING子句去掉不符合其组搜索条件的各组数据行。

WHERE———>

GROUPBY———>

HAVING

十三、多表联接查询

1、分类

(1)内联接(INNERJOIN)

(2)外联接

A、左外联结(LEFTJOIN)

B、右外联结(RIGHTJOIN)

C、完整外联结(FULLJOIN)

(3)交叉联接(CROSSJOIN)

2、多表内联结查询

(1)建立联接

SELECTS.SName,C.CourseID,C.Score

FromScoreASC

INNERJOINStudentsASS

ONC.StudentID=S.SCode

把Score表和Students表建立内联结,查询C.StudentID=S.SCode时,显示S.SName,C.CourseID,C.Score的内容。

(2)未建立联接

SELECTStudents.SName,Score.CourseID,Score.Score

FROMStudents,Score

WHEREStudents.SCode=Score.StudentID

同上。

(3)多表联接查询—三表联接

SELECTS.SNameAS姓名,CS.CourseNameAS课程,C.ScoreAS成绩

FROMStudentsASS

INNERJOINScoreASC

ON(S.SCode=C.StudentID)

INNERJOINCourseASCS

ON(CS.CourseID=C.CourseID)

(4)区别

建立联接的查询速度比没有建立的快得多。

3、多表外联接查询

(1)左外联接

(LEFTJOIN或LEFTOUTERJOIN)

FromStudentsASS

LEFTJOINScoreASC

Students为左表(leftjoin)Score为右表。

左表中有的,右表中没有的显示空值(NULL)。

(2)右外联接

(RIGHTJOIN或RIGHTOUTERJOIN)

SELECTTitles.Title_id,Titles.Title,Publishers.Pub_name

FROMtitles

RIGHTOUTERJOINPublishers

ONTitles.Pub_id=Publishers.Pub_id

与左外连接相反。

(3)完整外联接

(FULLJOIN或FULLOUTERJOIN)

左表和右表中的所有行。

当某行在另一个表中没有匹配行时,则另一个表的选择列为空值;

如果有匹配行,则显示结果包括左右表中的所有列值。

4、多表交叉联接查询

(CROSSJOIN)

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行一一组合,相当于两个表“相乘”。

十四、数据库用户

1、创建登录帐户

(1)添加Windows登录帐户

EXECsp_grantlogin'

jbtraining\S26301'

(域名\用户名)

(2)添加SQL登录帐户

EXECsp_addlogin'

zhangsan'

'

1234'

EXEC表示调用存储过程,存储过程类似C语言的函数。

内置的系统管理员帐户sa,密码默认为空,建议修改密码

2、创建数据库用户

USE库名

EXECsp_grantdbaccess'

登录帐户名'

数据库用户名'

其中,“数据库用户“为可选参数,默认为登录帐户,即数据库用户默认和登录帐户同名。

3、给用户分配权限

GRANT权限[ON表名]TO数据库用户

权限:

select、insert、update、delete、createtable……

4、系统内置的数据库用户

(1)dbo用户

A、表示数据库的所有者(DBOwner)

B、无法删除

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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