Readonly 只读 变量的值不允许被改变(一旦申明就不能改变她的值,除非在静态构造函数)
Const 常量 必须要是一个恒定的值
实体
字段的数据的类型 对应的是数据库的字段类型
属性的名字对应的是数据库的字段的名字
SelectValue可以设置
CommanBehavier.CloseConnnection 随着reader 关闭而reader所依赖的Connnection关闭
子查询就是在一个结果集中再去查询 在内存上的结果集上面
如果子查询跟在from后面 要给这个结果集取一个别名
Math.Ceiling(11.2) 天花板函数 如果有小数 取整+1 12
事件源 就是这个这个事件是谁触发的 封装在object sender里面
1 --left join 2 ----左边的表的列全部会显示出来 如果右边的表没有对应就 3 ---显示null 4 5 ----右连接 right join 6 ----右边的表的列全部会显示出来 如果左边的表没有对应就 7 ---显示null 8 -----cross join 交叉连接 笛卡儿积3*3 不写连接条件 9 10 -----视图的本质就是一条SQL语句 11 ----视图是一张虚拟的表 真正的数据是存在与视图相关的表中 12 ---视图的作用 减少代码的复杂度 13 14 ------------------------------------- 15 -----视图删除--如果涉及多个表的操作 就会失败--- 16 --如果只有一个表 就可以删除 17 18 ------------------------------- 19 20 ----视图修改---如果会影响多个基表就会失败,如果只影响 21 ----一个表 就可以修改成功 22 --------------------------------- 23 24 ----------视图插入--- 25 ---视图插入如果新增会影响多个基表 则新增会失败 26 ---如果视图的列在于数据表中的列相匹配并且视 27 ---图中没有出现的列,允许为null,或者默认值 新增成功 28 29 30 --------------------------------- 31 -----视图中只能存储查询语句 查询的结果集只有一个 32 33 34 35 ---------------------------------------------------------- 36 37 -----局部变量 38 ---------声明一个局部变量-----只在一个处理批次有效(go关键字) 39 declare @rowCount int 40 declare @max int 41 ----赋值 42 set @rowCount=12 43 select @rowCount=13 44 select @rowCount 45 -------- 46 select @rowCount=Count(*),@max=Max(StudentNo) from Student 47 select @rowCount,@max 48 -----通过select赋值的时候 如果有多个列 会赋最后一个的值 49 select @max=StudentNo from Student 50 select @rowCount,@max 51 52 --------全局变量 53 ---全局变量是有系统的来定义的和维护 以@@开头 54 declare @@test int ---也是局部变量 只不过是以@test命名的变量 55 -------几个重要的全局变量 56 select @@VERSION 57 select @@IDENTITY 58 insert into Grade values('jdiadio') 59 select @@IDENTITY 60 select @@ROWCOUNT ---1 61 insert into Grade values('dsfs') 62 insert into Grade values('fsfs') 63 select @@ROWCOUNT ---1 64 select @@ERROR------这能保存上一条语句的错误, 65 ---如果是在一个批次是保存该批次的错误,否则就是全局的错误 66 67 ----------事务----- 68 declare @myerror int 69 begin transaction 70 -----在roolback或者commit之前的对数据库的操作会看作一个整体 71 update Grade set GradeName='事务' 72 set @myerror+=@@ERROR 73 update Grade set GradeName=null 74 set @myerror+=@@ERROR 75 if @myerror<=0 76 begin 77 print'没错误' 78 commit transaction----对数据库操作确认 79 end 80 else 81 begin 82 print '有错误' 83 rollback transaction------对数据库的操作回滚(只是对数据的操作回滚,其他操作不变) 84 end 85 86 87 88 -------------每一种错误都有一个消息号 没有错误消息号就是0 89 90 ---C#版的事务 SqlTransaction 91 ----开启事务之前必须要打开 92 -----要将sql事务对象传给命令对象 93 94 95 96 97 ----------------存储过程 98 --相当于C#中德方法 封装了一段业务逻辑代码 99 100 ---创建存储 101 ----以下是一个没有返回值 没有参数的存储过程 102 go 103 create proc myproc 104 As 105 begin 106 select * from Student 107 end 108 109 ---修改 110 go 111 Alter proc myproc 112 AS 113 begin 114 select top 10 * from Student 115 end 116 ---调用存储过程 117 exec myproc 118 119 ------创建带参数的存储过程 120 go 121 create proc myProcWithI 122 ( 123 @name nvarchar(20) 124 ) 125 AS 126 begin 127 select top 10 * from Student where StudentName=@name 128 end 129 ---传参数的时候 如果传递的是变量 执行存储过程的时候 必须要加上exec 130 declare @myName nvarchar(20)='花木兰女' 131 --myProcWithI '花木兰'---不报错 132 ----myProcWithI @myName---报错 133 exec myProcWithI @myName 134 135 go 136 create proc myProcWithIAny 137 ( 138 @name nvarchar(20),---用逗号隔开 139 @GradeId int=1---可以给默认值 140 ) 141 AS 142 begin 143 select top 10 * from Student where StudentName=@name and GradeId=@GradeId 144 end 145 ---调用的时候 传递的参数 类型 顺序要一致 146 declare @myNames nvarchar(20)='花木兰女' 147 --myProcWithI '花木兰'---不报错 148 ----myProcWithI @myName---报错 149 ---显示传递参数 150 exec myProcWithIAny @name='花木兰女',@GradeId=1 151 152 --------- 153 exec myProcWithIAny @myNames,2 154 exec myProcWithIAny '花木兰女',default 155 156 ------带输出参数的存储过程 --ref out 157 go 158 create proc myProcWithIOut 159 ( 160 @rowCount int OutPut ---用output关键字标明这个参数是一个输出参数 161 ) 162 AS 163 begin 164 select top 10 * from Student 165 select @rowCount=Count(*) from Student 166 end 167 168 declare @myRowCount int ---默认值是null 169 exec myProcWithIOut @myRowCount output 170 select @myRowCount 171 172 ----带返回值的存储过程 173 go 174 create proc up_testForRet 175 @StudentNo int=12 176 AS 177 begin 178 select * from Student where StudentNo=@StudentNo 179 return 10 180 end 181 declare @you int 182 exec @you=up_testForRet 183 select @you 184 185 ---------触发器 186 ----触发器是基于表的 187 ----触发器是特殊的存储过程 自动调用 不能带参数 188 go 189 create trigger tg_test on Grade 190 after insert ---只能insert update delete 但是select是不允许 191 AS 192 begin 193 select * from Grade 194 end 195 insert into Grade values('sadad') 196 197 198 ----instead of-------代替原来的操作--------------------------- 199 go 200 create trigger tg_test2 on Grade 201 instead of insert ---只能insert update delete 但是select是不允许 202 AS 203 begin 204 select * from Grade 205 end 206 insert into Grade values('errrrr') 207 208 ------------------------------------------------ 209 ---------触发器里面有两个表 210 ---inserted 表存的是新数据 211 ---deleteed 表存的是久数据 212 go 213 create trigger tg_test3 on Grade 214 after insert ---只能insert update delete 但是select是不允许 215 AS 216 begin 217 select * from inserted 218 select * from deleted 219 end 220 insert into Grade values('sadad') 221 -------------------------------- 222 go 223 create trigger tg_test4 on Grade 224 after insert,update,delete ---只能insert update delete 但是select是不允许 225 AS 226 begin 227 select * from inserted 228 select * from deleted 229 end 230 insert into Grade values('sadad') 231 232 -------触发器可以用来数据备份 方法:表拷贝 233 ----update(列名) 判断指定的列是否被更新 234 go 235 create trigger tg_test5 on Grade 236 after update ---只能insert update delete 但是select是不允许 237 AS 238 begin 239 if(update(GradeName)) 240 select * from inserted 241 select * from deleted 242 end 243 go 244 create trigger tg_test6 on Grade 245 for update ---for也行 246 AS 247 begin 248 if(update(GradeName)) 249 select * from inserted 250 select * from deleted 251 end 252 ------------前面是DML 253 ------------------DDL 254 255 256 -------------索引页可以提高查询效率 但是会降低 增删改的效率 257 258 259 ---------------填充因:为索引页预留的空间 可以自己设定 260 ---在右键 选择要设定的索引 “填充规范”里面 里面填的是百分数---- 261 ----- 262 ------------------------------------ 263 -----聚集索引 物理数据表上的排序的依据(索引) 可以设定 右键 选择要设定的索引 设定为聚集索引 是 264 -----一个表中聚集索引自能 265 -----非聚集索引 逻辑索引 266 267 --------局部临时表 : 只能在当前连接中 表存在系统数据库的tempdb中 268 -----一旦连接关闭 就没法访问 269 create table #tableTemp 270 ( 271 id int identity(1,1), 272 nname nvarchar(20) 273 ) 274 select * from #tableTemp 275 --------希望结果集临时存储 276 ------------全局临时表 可以在所有的连接中访问 但是 277 ----一旦创建这个临时表的连接关闭 就没法访问 278 create table ##tableTemps 279 ( 280 id int identity(1,1), 281 nname nvarchar(20) 282 ) 283 284 select * from ##tableTemps 285 -----表变量 但存储数据很少 286 declare @table table(co1 int,col2 varchar)