数据库学习

  • 主键(Primary Key):从候选键中,选中用来作为唯一标识的属性或属性组
  • 候选键(Candidate Key):一个或多个属性的集合,可以唯一确定实体的一个实例
  • 外键:另一表的主键,外键可以重复,可为空值
  • 可选键(Alternative Key):候选键没有选中的其他键
  1. 在关系数据模型中,实体集之间的联系表现为) ( 一对一、一对多、多对多 )。
  2. 如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么R的模式是( )
  3. 在关系数据库设计中,设计关系模式是( 逻辑设计阶段 )的任务。
    需求分析:在调查、分析的基础上明确用户对系统的数据、功能、性能需求,建建立数据字典;
    概念结构设计:设计概念模型,较著名的是E-R图;
    逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
    数据库物理设计:为所设计的数据库选择合适的存储结构和存取路径;
    数据库的实施:包括编程、测试和试运行;
    数据库运行与维护:系统的运行与数据库的日常维护。
  4. 不借助第三方工具,怎样查看SQL的执行计划?( oracle里是explain plan,mysql和postgresql里是explain
    EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句。 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称。
  5. 下列聚合函数中不忽略空值 (null) 的是( COUNT(*)
  6. 如下哪个不是数据库处理一个查询的步骤?( evaluation
1.客户端发送一条查询给服务器;
2.服务器先会检查查询缓存query ***,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;
3.服务器端进行SQL解析parsing、预处理transition,再由优化器optimization生成对应的执行计划;
4.根据优化器生成的执行计划,调用存储引擎的API来执行分布distribution查询;
5.将结果返回给客户端。
  1. 事务 ) 是DBMS的基本单位,它是用户定义的数据库操作系列,这些操作要么全部做要么全不做,是一个不可分割的工作单位。
    DBMS(Database Management System):数据库管理系统,基本单位是事务
  2. 关系模型中,一个关键字是 ( 可由一个或多个其值能惟一标识该关系模式中任何元组的属性组成 )。
  3. 数据库管理系统的所提供的功能有:
    1.数据定义
    DBMS提供数据定义语言DDL(Data Definition Language),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。
    2.数据操作
    DBMS提供数据操作语言DML(Data Manipulation Language),供用户实现对数据的追加、删除、更新、查询等操作。
    3.数据库的运行管理
    数据库的运行管理功能是DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能保证了数据库系统的正常运行。
    4.数据组织、存储与管理
    DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。
    5.数据库的保护
    数据库中的数据是信息社会的战略资源,所以数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。
    6.数据库的维护
    这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。
    7.通信
    DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。
  4. 主键与索引
    主键:唯一标识一条记录,不能重复,不允许为空;
    索引:该字段没有重复值但可以有一个空值
    主键用于保证数据完整性;索引用于提高查询排序的速度
    主键只能有一个;一个表可以有多个唯一索引
  5. 关系规范化中
    1.插入异常(应该插入的数据未被插入)
    如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库
    2.删除异常(不该删除的删除了)
    如果某个系的学生全部毕业了,则在删除该系学生信息的同时,这个系及其系主任的信息也丢掉了
    3.数据冗余 比如,每一个系的系主任姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。这将浪费很大的存储空间。
    4.更新异常 由于数据冗余,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。比如,某系更换系主任后,必须修改与该系学生有关的每一个元组。
  6. 数据库Oracle 9i
    最大保护(Maximum protection )
    这种模式能够保证在primary Database发生故障保证数据不丢失。在这种模式下,事务提交前,要保证Redo数据已经写入到Primary Database的Online Redologs,同时写入Standby Database的Standby Redologs,并确保至少在一个Standby Database中可用。如果Standby Database不可用,Primary Database将会shutdown。
    最高可用性(Maximum availability)
    这种模式在不影响Primary Database可用的前提下,提供最高级别的数据保护策略,这种模式也能够确保数据不丢失。事务提交之前,要保证Redo数据已经写入到Primary Database的Online Redologs,同时写入Standby Database的Standby Redologs,确保至少在一个Standby Database中可用。与最大保护模式不同的是,如果Standby Database出现故障导致不可用,Primary Database并不会被shutdown,而是自动转换为最高性能模式,等Standby Database恢复正常后,Primary Database又会自动切换到最高可用性模式。
    最大性能(Maximum performance)
    这是一种默认的保护模式。事务可以随时提交,当前Primary Database的Redo数据至少需要写入一个Standby Database,不过这种方式不会等待Standby Database是否写入的确认因此这种写入属于异步写入。
  7. 数据库锁
    InnoDB支持事务,支持行锁和表锁用的比较多,Myisam不支持事务,只支持表锁。
    InnoDB之所以可以锁行,是因为Innodb的主索引结构上,既存储了主键值,又直接存储了行数据,可以方便的锁住行数据,而MyIsam索引指向另一片数据文件,没有办法精确锁住数据段
    共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

SQL学习

使用了group by子句以后,SELECT 子句中的元素有严格的限制。
实际上,使用聚合函数时,SELECT 子句中只能存在以下三种元素:
1. 常数
2. 聚合函数
3. GROUP BY子句中指定的列名(也就是聚合键)
为什么规定这样的语法呢?
其实也很好理解,通过某个聚合键将表分组之后,结果中的一行数据就代表一组。比如说,本例中使用Date进行分组以后,一行就代表该日期对应的结果(注意group by 聚合后的结果一组只有一行记录)。问题就出在这里,聚合键Date和Win并不一定是一对一的。比如本例,当Date=2047-07-12时,有两行记录,到底对应哪一行的Win呢?计算机并不能判断,这个时候只能报错了。所以这里只能使用Sum。
当然,使用sum只是为了满足使用聚合函数的条件,同样的这里替换为count,max,min都是可以的,因为我们并不需要用到聚合函数的实际意义。

多表查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值