博客学习二
数据库知识点,掌握基础就行 一、数据库基础 参考博客: http://wenku.baidu.com/link?url=I44Yro6cGg75mllslomnLpSO0LmMjsChl5ld0fHV_BU2dMkY_BqaIVu8o08_Km4yYZ0DbaLLK6rotPBacKCTcVBK8cY4G8dOlCBccK1NEWy 1、数据抽象 概念模式(面向单个用户)、外模式(
数据库知识点,掌握基础就行
一、数据库基础
参考博客:
http://wenku.baidu.com/link?url=I44Yro6cGg75mllslomnLpSO0LmMjsChl5ld0fHV_BU2dMkY_BqaIVu8o08_Km4yYZ0DbaLLK6rotPBacKCTcVBK8cY4G8dOlCBccK1NEWy
1、数据抽象
概念模式(面向单个用户)、外模式(面向全局)、内模式(面向存储)
2、视图
从用户角度:是从一个特定角度来查看数据库中的数据
从数据库内部:由select语句组成的查询定义的虚拟表
从数据库外部:就是一张表,可进行一般操作
3、完整性
域完整性:保证数据库字段取值的合理性
实体完整性:关系的主关键字不能重复也不能去空值
参照完整性:定义建立关系之间联系的主关键字与外部关键字引用的约束条件
用户定义完整性:尸体完整性和参照完整性适用于任何关系型数据库系统,它主要是针对关系的主关键字和外部关键字取值必须有效而做出的约束
4、第三范式
(1)第一范式1NF:关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。
(2)第二范式2NF:如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R是属于第二范式的。
(3)第三范式3NF:如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R属于第三范式
5、索引
可以快速访问数据库表中的特定信息
通常,只有当经常查询索引中的数据时,才需要在表上创建索引。
索引将占用磁盘空间,并且降低添加、删除和更新的速度
最好限制索引数量
6、事务
数据库事务指作为单个逻辑工作单元执行的一系列操作
事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源
ACID
Automic原子性,对于数据修改,要么全执行,要么全不执行
Consistent一致性,必须使所有数据都保持一致状态。如,当开发用于转账的应用程序时,应避免在转账过程中任意移动小数点
Insulation隔离性,由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。可串行性。当事务可序列化时将获得最高的隔离级别。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量,防止数据丢失
Duration持久性,事务完成后,它对于系统的影响是永久性的
7、锁
并发的问题:
丢失更新、脏读、不可重复读
(1)共享锁(S)
S锁允许并发事务读取(SELECT)一个资源,其他事务不能修改数据,一旦已经读取数据,便立即释放资源上的S锁,除非将事务隔离级别设置为可重复读或者更高级别,或者在事务生产周期内用锁定提示保留S锁
(2)排它锁(X)
X锁防止并发事务对资源进行访问,其他事务不能读取或修改X锁锁定的数据
锁的粒度
锁粒度是被*目标的大小,*粒度小则并发性高,但开销大,*粒度大则并发性低,但开销小
两段锁协议
事务必须分两个阶段对数据项加解锁:
获得*、释放*
8、死锁
互相等待释放锁
死锁发生的四个必要条件:
(1)互斥条件:进程对所分配到的资源进行排他性使用
(2)请求和保持条件:程序拥有资源ABC等,同时申请其他资源,但是资源B正在被其他程序使用,程序阻塞,同时不释放ABC等
(3)不剥夺条件:程序获得资源后,除非自己释放,否则不被剥夺
(4)环路等待条件:资源需要环形链
处理死锁:
(1)预防死锁:破坏产生死锁的4个条件之一或多个
(2)避免死锁:不破坏产生死锁的4个条件之一,而是在资源的动态分配中,用某种方法去防止系统进入不安全状态
(3)检测死锁:采取适当措施,将已发生的死锁清除
(4)解除死锁:常用办法是撤销或挂起进程,以便回收资源,再把资源分配给已阻塞的进程,让其就绪,运行
9、存储过程
一组SQL语句集
系统存储过程:sp_开头,进行系统的各项设定,取得信息,相关管理工作
本地存储过程:用户创建的存储过程是由用户创建并完成某一特定功能的存储过程
临时存储过程:
(1)本地临时存储过程:#作为名称的第一个字符,创建用户才能执行
(2)全局临时存储过程:##作为开始,存储在tempdb数据库,任意用户都可以执行
远程存储过程:分布式查询和execute命令执行一个远程存储过程
扩展存储过程:xp_开头
创建存储过程:...
调用存储过程:exec sp_name [argument]
10、触发器
特殊的存储过程,由事件触发执行过程
触发器和普通存储过程的区别:触发器是当对某一个表进行操作时,系统会自动调用执行该表上对应的触发器
11、连接一般考等值连接
二、sql基础
参考博客:http://www.cnblogs.com/lixiangfa/archive/2011/09/15/2178033.html
courses表(cno,cname,credit)和enrolls表(sno,cno,grade)
1、create table table_name () CHAR INT NOT NULL UNIQUE
2、ALTER table table_name ADD\DROP COLUMN\ALTER COLUMN column_name
3、create INDEX index_name ON table_name(table_property)
DROP INDEX table_name index_name
4、select property from table_1 table_2 where table_1.property=table_2.property
5、select distinct property from table_name
6、select sno,sname from table_name where sno IN(select sno from table2_name where grade>80)
7、select property from table_name group by property HAVING COUNT(*)>=3
8、INSERT INTO table_name(property_1,property_2...)
VALUES(value_1,value_2...)
9、INSERT INTO table_name(sno,cno)
select sno,'c2' from table_name
10、
UPDATE enrolls
SET grade=60
where cno IN
(SELECT cno FROM courses WHERE cname='操作系统')
11、DELETE FROM table_name where sage>20
12、
create procedure procGetDepName
@sno nvarchar(10),
@DepartmentName nvarchar(20) output
as
begin
select @DepartmentName = DepartmentName
from Department d, Student s
where d.DepartmentID = s.DepartmentID and
s.sno = @sno
end
上一篇: PHP设计模式——策略模式_PHP教程
推荐阅读
-
Python数据分析实战项目-北京二手房数据分析
-
数据分析:pandas分析链家网二手房信息
-
东莞二手房数据分析
-
手机APP开发之MIT Appinventor详细实战教程(十一),地图API的调用与学习,第一部分
-
Python数据分析实战之二--某网站二手房信息(数据分析)
-
Scrapy 爬取二手房信息,进行可视化数据分析
-
Scrapy爬取二手房信息+可视化数据分析
-
Android深入理解Context(二)Activity和Service的Context创建过程
-
ASP.NET MVC3 学习笔记----HTML.Action()和HTML.RenderAction()
-
上海链家二手房交易数据分析