SQL数据库基础入门知识 (3)

聚集索引:表中各行的物理顺序和键值的逻辑(索引)顺序相同(每个表只能有一个)(不允许空值)(选用以范围查询的列)(频繁更新的列和非唯一的列通常不选用聚集索引)(避免非常多或非常宽的键上创建聚集索引)(create table 和 alter table 创建主键会默认创建聚集索引)

非聚集索引:除聚集索引的索引 可以有多个 但要小于249个()(指针指向位于索引页中指针对应的物理数据)(页级别上不包含全部数据)

唯一索引:允许空值: 只能有一个(不允许两行具有相同的索引值)(实施实体完整性)(在创建主键约束和唯一性约束时自动创建)

非聚集索引创建原则:索引不是越多越好 (当选择用在非聚集索引的列时,要查找在where join order by 子句中频繁引用的那些列)(一个索引最多可以使用16个列 所有索引键列组合起来不超过900字节)

经常插入操作的表上, 使用Fillfactor(填充因子)建索引减少页拆分

unique 唯一索引

clustered 聚集索引

nonclustered 非聚集索引

ix_ 代指索引

多列用 , 分隔 desc 降序 不加为升序

fillfactor = 填充因子 (百分比)

split(拆分)

视图

(封装)放在from子句中(可以当作表来用)

视图的作用:

1,可以筛选表中的行

2,防止未经许可的用户访问敏感数据

3,降低数据库的复杂度

4,将多个物理数据库抽象为一个逻辑数据库

create view (name) as (select语句) go

Exec sp_helptext ‘视图名称’;

encryption(加密)

可更新视图

insert update delete 等操作只能引用一个表中的列, 不允许直接修改基础表 只允许修改视图

可更新视图中不能包含聚合函数, select语句中不能使用group by 或 having子句, insert update delete 语句更新 发生变化的数据只能来自一个表, 必须包含基表的必填列, 视图不满足以上条件 可以只用 instead of触发器更新

第七章 事务

--创建银行信息表

if object_id(\'Account\') is not null drop table Account;

go

create table Account

(

AccountId char(4) primary key,

Name varchar(20) not null,

Balance decimal(18, 2) not null

);

go

alter table Account add constraint CK_Account_Balance check (Balance >= 2);

insert into Account values

(\'0001\', \'zhangsan\', 2),

(\'0002\', \'zhangsi\', 20000);

select * from Account;

begin transaction

begin try

update Account set Balance = Balance + 20000 where AccountId = \'0001\';

update Account set Balance = Balance - 20000 where AccountId = \'0002\';

commit transaction;

end try

begin catch

rollback transaction

end catch

每条查询语句自成一个事务(transaction)

事务是作为单个逻辑工作单元执行的一系列操作, 是一个不可分割的工作逻辑单元

事务的属性:

原子性(Atomicity)必须是原子工作单元 不可分

一致性(Consistency)事务完成时, 数据处于一致状态

隔离性(Isolation)并发的事务时彼此隔离的 互不影响

永久性(Durability)事务完成就永久保存

begin transaction 开始事务

commit transaction 提交事务

rollback transaction 回滚事务

save tran 创建事务保存点(rollback把事务保存点之后的操作回滚 (回到事务保存点))

自动提交事务: 每条单独的T-SQL语句作为一个事务成功自动提交 错误自动回滚

显示事务: Begin transaction 指定事务的开始

隐性事务:set implicit transactions on 语句

事务的嵌套(父事务, 子事务)父事务回滚的时候以提交的子事务也会回滚

锁 是事务获取的一种控制资源 (保护数据资源, 防止其他食物对数据进行冲突或不兼容的访问)

数据并发访问时怎么保证数据的安全性

排它锁:修改数据时 事务会为所依赖的数据资源请求排它锁, 一旦授予, 事务将一直持有排它锁, 直至事务完成

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxgwz.html