1、本文所以内容来自 著名高校课件和学生笔记(校园里面经常见到有人高价买笔记)
2、任课教师不会提供参考文献,所以只能对作者表示感谢,如果引用了您的作品,可以用回复方式补充参考文献。
3、我不对文章无关问题进行解答,文章内容也比较难,我也很难解答您遇到的问题,如果发现BUG可以用回复方式帮我修正。
4、本课 数据库原理与应用
,适用于数据库原理与应用
本课其他部分的导航条见页面底部
优秀课件笔记之数据库复习资料
一、Transact-SQL的数据定义功能
1. 建表:
create table <表名> (
<列名> <数据类型> [列级完整性约束条件 ]
[ , <列名> <数据类型> [列级完整性约束条件 ]][,… n]
[,<表级完整性约束条件>] [,… n] )
2. 建视图
create view <视图名>[(<列名组>)]
[with encryption]
as <子查询>
[with check option]
l 其中with encryption选项表示对视图定义进行加密,使用户不能通过系统存储过程sp_helptext察看视图定义。
l With check option 选项说明在对视图执行数据更新操作时,必须符合select 子句中设置的条件。
3. 建存储过程
create procedure <存储过程名>
[@ <参数名> <参数类型> [output]…]
as <SQL语句组>
存储过程的调用语句:
exec <存储过程名> [ [@<参数名> = ] 参数 ]
二、Transact-SQL的数据操纵功能
select <查询列>
[ into <新表名>]
[ from <数据源>]
[ where <元组条件表达式>]
[group by <分组条件>] [having <组选择条件>]
[order by <排序条件>]
l select子句,功能是确定结果列。语法为:
select [ all | distinct ] [top <数值> [percent] ] <查询列组>
其中查询列可以表示为三种:
1) <表或视图>. *
2) <列名或表达式> [as] <列别名>
3) <列别名>=<列名或表达式>
注意列别名是用来代替在结果集中的列名或表达式,别名可以在order by 子句中出现,但不能在where、group by或having子句中出现。
l into子句用于创建一个表,并将查询结果添加到该表中。如果创建的是临时表,则在表名前加“#”字符。
l from 子句用于指定查询的数据源表,一般为必选字句。可以是<表名> as <表别名>,<视图名> as <视图别名>,嵌套的select语句,连接表。例如
select sage
from
(select sdept ,sage
from student ) as a
l 其中连接表的格式为:
<数据源> <连接类型> <数据源> on <连接条件>
其中<连接类型>格式为:
[inner | { {left | right | full} [outer] } ] join
inner为内连接,它返回所有连接匹配的行。内连接是连接类型的缺省值。
Left[outer]为左外连接,其结果集中不但包括了内连接返回的行,还包括了左边表中不满足连接条件的行。那些不满足连接条件的行所对应的右边表的列将会显示null值。
Right[outer]为右外连接。右外连接的结果集中不但包括了内连接返回的行,还包括了右边表中不满足连接条件的行。那些不满足连接条件的行所对应的左边表的列将会显示null值。
Full[outer]为完全外连接。完全外连接的结果集中不但包括了内连接返回的行,同时也包括左边表和右边表中的所有不满足条件的行,但是与其对应的右边表或左边表的列将会显示null值。
交叉连接为不设连接条件,即对两个表进行笛卡尔积运算。其结果是返回两个表的交叉匹配结果。
l Where子句:
用于指定查询条件。
l Group by 子句:
用于对结果集分组。分组会影响到统计函数的结果。如果有group by子句,则按组进行数据统计,否则,对全部数据统计。
l Having 子句:
用于指定分组或汇总筛选条件。
l Order by子句:
用于指定排序项和排序要求,其语法为:
order by <排序项> [asc | desc][ , … n ]
like操作符使用的通配符:% _ [ ] [^ ]
如’[A, B, C]%’表示开头第一个字符为A~C字符的字符串;’[^A-C]%’表示开头第一个字符不是A~C字符的字符串。
三、数据更新操作
(1)数据插入语句:
insert [into ] <表或视图名>[(<列组>)]
values<值列>|<select 语句>
(2)修改数据
update <表或视图名>
set <列名>={<表达式>}[, … n]
[ where <条件>]
(3)删除数据
delete [from] <表名>
[where <条件>]
条件可以基于其它表中的数据:
delete [from] <表名>
from <表名> <连接类型> join <表名> on <连接条件>
[where <条件>]