1
--
执行插入语句返回刚刚生成的自动编号
2
insert into TblClass output inserted.ClsId values(
'
大一一班
'
,
'
11
'
,
18
)
3
4
------------CASE函数用法------------
5
--
相当于switch 注意then后面的数据类型要一样
6
select
*
from
Tblscore
7
select
8
tScoreid,
9
tenglish,
10
评分=
11
case
12
when tenglish>=
95
then
'
优秀
'
13
when tenglish>=
90
then
'
良好
'
14
when tenglish>
80
then
'
优
'
15
when tenglish
is
null
then
'
101
'
16
else
'
乔布斯
'
17
end
18
from
TblScore
19
20
--
等值判断
21
select
22
tScoreid,
23
tenglish,
24
评分=
25
case
tenglish
26
when
95
then
'
优秀
'
27
when
90
then
'
良好
'
28
when
80
then
'
优
'
29
when
null
then
'
101
'
30
else
'
乔布斯
'
31
end
32
from
TblScore
33
34
35
36
--
聚集索引(聚簇索引):
37
-------
当数据实际的存储顺序,与索引的顺序一致就把该索引叫聚集索引
38
--
非聚集索引(非聚簇索引)
39
-------
当索引中数据的顺序与,数据实际存储的顺序不一致的时候,该索引叫非聚集索引。
40
=======非聚集索引=============
41
--
在表Sales.SalesPerson中给SalesQuota, SalesYTD这两列创建非聚集索引
42
CREATE NONCLUSTERED INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson (SalesQuota, SalesYTD); GO
43
====创建唯一非聚集索引=============
44
CREATE UNIQUE INDEX AK_UnitMeasure_Name ON Production.UnitMeasure(Name); GO
45
=======创建聚集索引=================
46
CREATE TABLE t1 (a
int
, b
int
, c AS a/
b);
47
--
创建唯一的聚集索引
48
CREATE UNIQUE CLUSTERED INDEX Idx1 ON t1(c); INSERT INTO t1 VALUES (
1
,
0
);
49
--
删除索引
50
drop index T8.IX_T8_tage
51
52
53
54
----------------子查询--------------------
55
--
把一个查询结果作为另一个查询的查询源
56
57
select
*
from
58
(
select
fname,fage,fgender
from
MyStudent
59
where
fage between
18
and
24
and fgender=
'
女
'
)
as
tbl
60
where
fname like
'
赵%
'
61
62
--
把另外一个查询的结果作为当前查询的where条件来使用。
63
64
65
select
*
from
tblstudent
where
tsclassid=
66
(
select
tclassid
from
tblclass
where
tclassname=
'
高二二班
'
)
67
68
---exists-----
69
--
如果exists包含了的查询,能查到结果,就返回true,否则返回false
70
if
(exists(
select
*
from
tblstudent
where
tsid<>
1
))
71
begin
72
print
'
有数据
'
73
end
74
else
75
begin
76
print
'
无查询结果
'
77
end
78
79
80
--查询所有
'
高二二班
'
与
'
高二一班
'
的学生的信息
81
--子查询中=、!=、<、<=、>、>=
之后只能返回单个值,如果多个值就报错了。
82
83
--
这个写法是错误的
84
select
*
from
tblstudent
where
tsclassid=
85
(
86
select
tclassid
from
tblclass
where
tclassname=
'
高二二班
'
or tclassname=
'
高二一班
'
87
)
88
---
这个写法是正确的
89
select
*
from
tblstudent
where
tsclassid
in
90
(
91
select
tclassid
from
tblclass
where
tclassname=
'
高二二班
'
or tclassname=
'
高二一班
'
92
)
93
94
95
------------------分页----------------
96
------
desc 降序排序从高到底 asc升序排序(默认)
97
98
-------第一种分页----------------
99
-----
每页5条数据,找第二页
100
select
top
5
*
from
tblstudent
where
tsid not
in
101
(
102
select
top((
2
-
1
)*
5
) tsid
from
tblstudent order by tsid
103
) order by tsid
104
105
---第二种分页--
106
select
*
from
107
(
108
select
*, row_number() over(order by tsid)
as
number
from
tblstudent
109
)
as
T
110
where
T.number between
6
and
10
111
112
113
114
--
开窗函数与聚合函数一起使用,可以让聚合函数对每一条数据都计算一次。
115
select
* ,count(*) over()
as
'
总条数
'
from
tblstudent
116
117
118
--------------连接join-----------------
119
--
案例3:查询学生姓名、年龄、班级及成绩
120
select
121
ts.tsname
as
'
学生姓名
'
,
122
ts.tsage
as
'
年龄
'
,
123
tc.tclassname
'
班级
'
,
124
tb.tenglish
'
英语成绩
'
,
125
tb.tmath
'
数学成绩
'
126
127
from
tblstudent
as
ts
128
inner join tblscore
as
tb on ts.tsid=
tb.tsid
129
inner join tblclass
as
tc on tc.tclassid=
ts.tsclassid
130
131
132
--
请查询出所有没有参加考试(在成绩表中不存在的学生)的学生的姓名。
133
select
ts.tsname
134
from
tblstudent
as
ts
135
left join tblscore
as
tb on ts.tsid=
tb.tsid
136
where
tb.tenglish
is
null
and tb.tmath
is
null

