关系代数:
1.选择(select)运算,用小写sigma(σ)表示
例子:
找出关系instructor中属于物理系的所有教师
σdept_name=”Physics”(instructor)
找出工资额大于90000美元的所有教师
σsalary>90000(instructor)
2.投影(project)运算,用大写pi(π)表示
例子:
列出所有教师的ID、name和salary,而不关系dept_name。
πID, name, salary(instructor)
找出物理系所有教师的名字
πname(σdept_name=”Physics”(instructor))
3.并(union)运算,用∪表示
例子:
找出开设在2009年秋季学期或者2010年春季学期或者这二者皆开的所有课程的集合。
σcourse_id(σsemester=”Fall”∧year=2009(section))∪σcourse_id(σsemester=”Spring”∧year=2010(section))
4.集合差(set-difference)运算,表达式r-s包含所有在r中而不在s中的元组的关系
例子:
找出所有开设在2009年秋季学期但是在2010年春季学期不开的课程。
σcourse_id(σsemester=”Fall”∧year=2009(section))-σcourse_id(σsemester=”Spring”∧year=2010(section))
5.笛卡尔积(Cartesian-product)运算,关系r1和r2的笛卡尔积写作r1×r2
例子:
找出物理系中的所有教师,以及他们所教授的所有课程。
σdept_name=”Physics”(instructor×teaches)
投影得到需要的教师名字列和corse_id列
πname, course_id(σinstructor.ID=teaches.ID(σdept_name=”Physics”(instructor×teaches)))
6.更名(rename)运算,用小写rho(ρ)表示
例子:
πinstructor.salary (σinstructor.salary 范式: 1.第一范式: 强调的是列的原子性,即列不能够再分成其他几列。 例子: 原:【联系人】(姓名,性别,电话) 改:【联系人】(姓名,性别,公司电话,家用电话) 2.第二范式: 一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键 例子: 原:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName) 拆分: 【OrderDetail】(OrderID,ProductID,Discount,Quantity) 【Product】(ProductID,UnitPrice,ProductName) 3.第三范式: 任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖] 例子: 原:【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity) 拆分:【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity) E-R图: 候选键:可以作为key属性的最简形态(缺一不可)可以存在多个候选键 主键:候选键中选出一个最主要的key属性 ,用来唯一确定实体 超码:所有能成为key属性的属性及其集合(可以有冗余属性,可能删掉其中一两个属性还是能成为关键属性) 外键:另外一个实体集的主键,用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段,与另外一个表格里相连的字段。这些相连的字段就是外键。 超码 > 候选键> 主键 超码唯一标识实体,候选码为超码的最简形态(缺一个就不可以唯一标识实体) 1、实体 实际问题中客观存在的并且可以相互区别的事物称为实体。实体是现实世界中的对象,可以具体到人,事,物。可以是学生,教师,图书馆的书籍。 2、属性 实体所具有的某一个特性称为属性,在E-R图中属性用来描述实体。比如:可以用“姓名”“姓名”“出生日期”来描述人。 3、实体集 具有相同属性的实体的集合称为实体集。例如:全体学生就是一个实体集,(983573,李刚,男,1999/12/12)是学生实体集中的一个实体。 4、键 在描述实体集的所有属性中,可以唯一标识每个实体的属性称为键。键也是属于实体的属性,作为键的属性取值必须唯一且不能“空置”。 5、实体型 具有相同的特征和性质的实体一定有相同的属性,用实体名及其属性名集合来抽象和刻画同类实体称为实体型,其表示格式为:实体名(属性1,属性2,……) 6、联系 世界上任何事物都不是孤立存在的,事物内部和事物之间都有联系的,实体之间的联系通常有3种类型:一对一联系,一对多联系,多对多联系。 实体(方框表示),联系(菱形表示),属性(椭圆表示),联系(直线表示) T-SQL: 什么是t-sql,SQL SERVER专用标准结构化查询语言增强版,新的预存程序、系统资料表、函数、资料型别、陈述式以及现存陈述式中的选项 全局变量由系统定义和维护,以两个@@开头,用户不能定义全局变量 局部变量,作用范围在begin到end语句块之间,declare语句专门用于定义局部变量 用户变量,基于会话变量实现的, 可以暂存值,以"@"开始,赋值:(可以使用set或select) 数据库系统原理变量的含义及其属性? 关系模型的优点? (1).关系模型是建立在严格的数学概念基础之上 (2).关系模型的概念单一,统一用关系来表示实体和实体之间的联系,关系模型的数据结构简单清晰,用户易懂易用 (3).存取路径对用户透明,具有更高的数据独立性,更好的安全保密性,简化了数据库开发建立的工作 简述用户定义数据完整性约束? 用户定义的完整性约束是是针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应满足的要求.关系模型提供定义和检查这类完整性规则的机制,统一由系统来处理,不再有应用程序来完成这项工作 简述实体完整性约束? 简述参照完整性约束? 简述外模式/模式映像及其如何保证数据的逻辑独立性? 简述sql的调用及其目的? sql调用包括sql例程和调用规则 主要目的:提高sql的灵活性,提高sql的有效性,提高sql的共享性,使sql具有更多的高级语言的特性 简述封锁级别的内容? 读未提交.读已提交.不可重复读.可串行化 0级封锁:封锁的事务不重复写其他非0封锁事务的未提交的更新数据 1级封锁:被封锁的事务不允许重写未提交的更新数据 2级封锁:被封锁的事务既不重写也不读未提交的更新数据 3级封锁:被封锁的事务不读未提交的更新数据,也不写任何未提交的数据 简述数据操纵语言的功能及主要sql语句? 用于操纵数据库中的各种对象,特别是检验和修改数据 主要sql:select检索数据,insert插入数据,update修改数据 简述使用游标的注意事项及作用? 游标只能用于存储过程或存储函数中,可以定义多个游标,但是在begin-end中名字必须唯一,游标不是select语句,而是select检索出来的结果集,作用是sql语句处理的是记录集合,而主语言一次只能处理一个记录,因此需要使用游标机制,把集合操作转换成单记录方式处理 简述事务概念和特征? 概念:事务是由用户定义的一个数据操作序列,这些操作作为一个完整的工作单元,要么全部执行要么全不执行,是不可分割的工作单位 特征:原子性,一致性,隔离性,持久性 数据库并发问题? 丢失更新,脏数据,不可重复读 什么是封锁的粒度? 封锁对象的大小 数据库可恢复性的定义? (1).数据库的转储和恢复 (2).数据库安全性,完整性控制 (3).数据库性能监督,分析和改进 (4).数据库的重组织和重改造 触发器的概念和作用? 通过事件进行触发而被执行的,(1) 强化约束(Enforce restriction) 触发器能够实现比CHECK 语句更为复杂的约束。(2) 跟踪变化Auditing changes触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。 (3) 级联运行(Cascaded operation)。触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。 (4) 存储过程的调用(Stored procedure invocation)。 存储过程的概念和优点? 一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译 优点,存储过程可以重复使用,提高代码复用性,减少网络io,提高安全性 数据模型的分类? 概念数据模型,结构数据模型