|
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
|
|