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