京东旗下的企业网站有哪些,中文外贸网站建设,php网站开发框架搭建,人才网站建站1.如何保持数据库的完整性#xff0c;一致性
最好的方法#xff1a;数据库约束#xff08;check,unique,主键#xff0c;外键#xff0c;默认#xff0c;非空#xff09;
其次是#xff1a;用触发器
最后#xff1a;才是自己些业务逻辑#xff0c;这个效率低
2.事…1.如何保持数据库的完整性一致性
最好的方法数据库约束check,unique,主键外键默认非空
其次是用触发器
最后才是自己些业务逻辑这个效率低
2.事务
有点类似于存储过程也是把一大串的sql语句整合在一起然后通过commit 调用事务名。
他的优势在于在于要么全部成功如果失败的话会回滚不会出现一部分成功一部分失败这种情况。很好地维护了数据库的完整性和一致性。事务有这么几个特性原子性一致性隔离性持久性
3.介绍一下数据库的锁
锁的类型有三种
共享锁 S Lock
排它锁 X Lock
更新锁 U Lock
X Lock(仅允许一个事务进行读写)
-- 隐式加锁示例 BEGIN TRANSACTION;
-- 对某一行加排他锁X Lock UPDATE Employees SET Salary Salary 1000 WHERE EmployeeID 1;
-- 提交事务释放锁 COMMIT TRANSACTION;
执行 UPDATE 时SQL Server 会自动对 EmployeeID 1 的行加排他锁X Lock直到事务提交或回滚。
S Lock(允许多个事务一起读但禁止写
-- 显式加共享锁S Lock BEGIN TRANSACTION;
SELECT * FROM Employees WITH (HOLDLOCK, ROWLOCK) WHERE DepartmentID 10;
-- 提交事务释放锁 COMMIT TRANSACTION; HOLDLOCK保持共享锁直到事务结束。 ROWLOCK指定行级锁。
U Lock(初始为共享锁更新时升级为排它锁
-- 设置锁超时为 5 秒 SET LOCK_TIMEOUT 5000;
BEGIN TRANSACTION;
-- 尝试加锁如果 5 秒内未获得锁则抛出错误 SELECT * FROM Employees WITH (UPDLOCK, ROWLOCK) WHERE EmployeeID 1;
COMMIT TRANSACTION; UPDLOCK加更新锁U Lock防止其他事务修改数据。
BEGIN TRANSACTION;
-- 加更新锁U Lock SELECT * FROM Employees WITH (UPDLOCK) WHERE EmployeeID 1;
-- 检查数据后决定更新 UPDATE Employees SET Salary Salary 1000 WHERE EmployeeID 1;
COMMIT TRANSACTION; 在 SELECT 语句中WITH (UPDLOCK) 提示会对 EmployeeID 1 的行加更新锁U Lock。 此时其他事务可以读取该行加共享锁但不能加更新锁或排他锁。 当执行 UPDATE 语句时更新锁会升级为排他锁X Lock其他事务将无法访问该行直到当前事务完成。
4.介绍一下索引
索引英文名index功能就类似于书籍的索引通过索引目录可以更快地定位。
5.介绍一下视图和游标
视图是一种虚拟表有时候为了方便查询会将一张表或多张的表数据作个临时的整合。视图的作用就是把临时整合的结果放在视图里这样查询这个整合结果的时候直接查询视图名即可。理论上可以对视图进行增加删除修改但是条件很苛刻建议从原表进行增删改
游标顾名思义游动的标记。比如有一张订单表里面有订单总额这个字段这时候要实现总额超过1000的状态字段显示高小于等于1000的显示低。游标起到的作用就是遍历查询结果加上对应的高低状态。
游标的缺点就是服务器开销大。
6.介绍一下存储过程
将一大串的sql语句整合在一起。exec 调用存储过程名。有点速度快流量消耗少加密性好防止sql注入
7.触发器介绍一下
triger。对某张表执行某项操作的时候如果该操作有对应的触发操作执行该操作后就会执行触发器里定义的操作行为。
有点就是减少了客户端的操作步骤也算是起到了数据约束的作用