ASP.NET-第六天-数据库知识
第六天
练习:
索引:
聚集索引和非聚集索引;索引就是为了快速查找
为了更好的在索引中增加数据,有了“填充因子”;在创建表的时候就已经为填充因子,分配了空间的大小;
创建索引:(不唯一的,非聚集索引)
对于经常用到的列创建索引,增加整体性能;
删除索引: drop index 表名。索引名
select * from tt5
--创建一个非聚集唯一索引
create unique nonclustered index IX_TT5_userid on tt5(userid)
--创建一个聚集非唯一索引
create clustered index IX_TT5_username on tt5(username)
--创建一个聚集唯一索引
create unique clustered index IX_TT5_userage on tt5(userage)
在一个表中,只能创建一个聚集索引
子查询
把一个查询结果放到另一个查询中使用,就是子查询;
独立子查询,子查询的内容可以独立运行;
子查询,多个条件: 不在用等号,而是用的in
等同于 相关子查询:
Select * from Tblstudent
如果查询到结果,exists 返回true,如果没有查询到结果,则返回false;
对查询的数据进行分页:
分页前首先排序,如果不排序,则每次取出来的数据顺序都是不固定的,所以要排序
1.查询第一页的数据
2.第18页的数据
新的分页查询方法: 使用 了系统提供的方法
表的连接
在tblstudent表中没有班级名称,但是有班级编号,这是就要来接tblclass中的班级编号找到班级名称;使用inner join 后面就要使用on;inner join是内连接
后面的现在也可以使用where,但是最好不要
笛卡尔积(连接两个表中的所有行,然后在进行筛选)
外连接
左外连接
显示left join 左边的表中的所有数据,如果对应的在右边的表中有匹配的数据,则显示该数据,否则显示null;
为null的数据都改成“缺考”
视图的查询中,每一列都要有别名;
创建视图:Create view 试图名 as 查询内容
更改表中的内容,视图中的内容跟着改变; 最好不要对视图中的查询进行排序操作;如果有需要,则在排序的order by 前面加上top ;
局部变量 先声明再赋值;
Declare @变量 类型
为变量赋值可以使用set 还可以使用select
Set和select的区别:
1.语法不同:
2.如果查询的结果不止一个值,使用set,就会报错
通过select,只返回最后的一个值;
变量在使用之前要赋值,否则就是null,如果是null的话,与任何数据类型运算都是null
全局变量
@@Error 如果上一条sql语句执行出错了,那么变量中就会有一个对应的错误号,如果没有出错,则变量中始终未0;
If- else
使用Begin end 来代替VS中的{};
事务:
sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行
开始事务:BEGIN TRANSACTION
事务提交:COMMIT TRANSACTION
事务回滚:ROLLBACK TRANSACTION
判断某条语句执行是否出错:
全局变量@@ERROR;
@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计;
例:SET @errorSum=@errorSum+@@error
事务的ACID特性:
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务