1、数据库系统:计算机引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成。二、 几种键的概念事实上,关系模型不允许表格包含有重复记录。所以,一个表格里字段或者列的值必须是唯一的。唯一性可以通过检查key(关键字)来确定,关键字可以由一个单列或者列的组合构成,这样的列叫做composite key(复合关键字)。关键字有很多不同的类型:studentNo(PK)ID(AK)namePhoneaddresscourseNo(FK)a) 超关键字(Super Key):又称超键或超码,是能够唯一标识关系中每个元组的一个或一组属性的集合。超关键字能够唯一标识关系中的每个元组,但超
2、关键字中可能包含多余属性,而人们一般对能够唯一标识元组的最小属性集合感兴趣,由此产生了候选关键字的概念。b) 候选关键字(Candidate Key):又称候选键或候选码,它本身是超关键字但其任何子集都不是超关键字。或者说候选关键字是能够唯一标识关系中每个元组的一个或一组最小属性的集合。一个关系中也可能会有多个候选关键字。c) 主关键字(Primary Key):又称主键或主码,是被选为唯一标识关系中各元组的候选关键字。d) 辅关键字(Alternate Key):又称辅键或辅码或备选键,是没有被选为主关键字的候选关键字。e) 外关键字(Foreign Key):又称外键或外码,设F为关系R中
3、的某个属性或属性组,F可能不是关系R的候选键,但如果F与关系S(关系S与R可以是同一个关系)的主键PKs相对应(F取值与PKs取值相一致),则称F是关系R的外键。 这里列出来的关键字的类型并不是相互排斥的;一个关键字可以同时被归入多个类。从定义上说,每个表格必须至少有一个主关键字。三、 数据完整性约束(1)实体完整性实体完整性约束要求基本关系的所有主关键字属性都不能为空,而不是主关键字整体不能为空。例如,对于学生选课关系(学号,课程号,成绩),显然,学号与课程号的组合“学号,课程号”为主键,按照实体完整性的要求,学号和课程号两个属性中的任何一个都不能出现空的现象。根据定义,主关键字是能唯一标识
4、元组的最小属性集合,这就意味着主关键字的任何子集都不能唯一标识元组。如果允许主关键字的某个属性为空,这就暗示了唯一标识元组并不需要所有主关键字属性,这与主关键字的定义相矛盾。这也说明了关系模型实体完整性的约束是合理的。(2)参照完整性如果一个关系中存在某个外关键字,则该外关键字属性的取值应该与它所引用的主关系中的对应属性取值一致,或者为空。其实我们前面在介绍外关键字概念的时候,已经说明了这个问题。换言之,关系模型的参照完整性约束是通过外关键字来体现的。(3)用户定义完整性任何关系数据库系统都应该支持实体完整性和参照完整性,除此之外,不同的数据库系统根据其应用环境和领域的不同,可能还需要一些特殊
5、的约束条件,用户定义完整性也称企业约束,就是为了满足这些特殊约束条件而定义的,它是让用户根据具体应用环境和领域来指定数据所需要满足的附件约束。用户定义完整性由数据库的用户根据数据库使用环境和领域所指定的附加规则。例如,学生关系模式Student(学号, 姓名, 身份证号, 年龄, 性别, 学院编号, 入学年份 )中,根据应用环境要求,还可能要求学号属性必须为8位数字,或者要求年龄不能超过30岁等等。这些约束条件都是用户根据具体应用环境而附加的规则。关系模型应该向用户提供定义这类完整性约束的机制和方法,并能够按照用户定义的完整性约束条件对数据进行检验。不过,各种具体DBMS对用户定义完整性的支持
6、程度可能因系统而异,有时需要应用程序和DBMS共同来保证用户定义完整性。四、 DDL和DML1.DDL(数据定义语言):对结构进行的操作。比如create,drop,alter等。2.DML(数据操纵语言):对具体的数据进行的操作。比如update,delete,insert等。五、 JOIN基本操作Join操作基本分为4大类:1. 连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括、=、和 select * from employees;NAME DEPARTMENT_ID SALARY Getz 10 3000Davis 20 1500 King 20
7、2200 30 5000Kochhar select * from departments; DEPARTMENT_ID DEPARTMENT_NAME Sales Marketing 30 Accounts 40 Administration-Inner join-等值连接:不需要同名属性,可以使用using或on子句来指定连接条件,包括其中的重复列。 select * from employees e inner join departments on .department_id=d.department_id;from employees,departments Where e.dep
8、artment_id= d.department_id;说明:内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件-Natural join- select * from employees natural join departments;自然连接是通过对参与表关系中所有同名的属性对取等(即相等比较)来完成的,故无须自己添加连接条件与外连接的区别在于对于无法匹配的记录外连接会虚拟一条与之匹配的记录来保全连接表中的所有记录,但自然连接不会-Left outer join- select * from employees e
9、left outer join departments d on e.department_id=d.department_id;-Right outer join- select * from employees right outer join departments using(department_id);-Full join- select * from employees full join departments using(department_id);1外连接必须使用on或using子句提供相应的连接条件2不能为using子句中所列举的列指定表别名,即使在group by和s
10、elect子句中也是如此3外连接规则:左连右补,右连左补,全连左右合并如:对表departments表进行右连接时,在两表完成笛卡儿积后再依据连接条件 using(department_id)来筛选两表中department_id值相同的记录,但对DEPARTMENT_ID=40,employees表中没有与之匹配的记录,按常理此DEPARTMENT_ID=40所对应的记录将被抛弃,但就是为了保全连接表(departments表)中的所有记录就必须在employees表中虚拟出一条与之匹配的记录来保全连接表的所有记录,当然这条虚拟的记录显示时值全为null。六、 聚集函数和Group By A
11、VG 函数返回数值列的平均值。NULL 值不包括在计算中。COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入);COUNT(*) 函数返回表中的记录数;COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目;FIRST() 函数返回指定的字段中第一个记录的值。(提示:可使用 ORDER BY 语句对记录进行排序。)MAX 函数返回一列中的最大值。(MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。SUM函数返回数值列的总数(总额)。GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。在 SQ
12、L 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。group by 有一个原则,就是 select 后面的所有列中,没有使用聚集函数的列,必须出现在 group by 后面。七、 数据库设计一般情况下,数据库设计包含三个主要阶段,它们分别是:概念设计、逻辑设计和物理设计。这三个设计阶段中的每个阶段将产生不同的结果模型,具有不同的用途和目的。1)概念设计概念设计是根据企业的目标,针对所设计系统中的数据需求建立模型的过程,它是数据库设计的第一个阶段,也是整个数据库设计的关键。在此阶段,通过对用户需求进行综合、归纳与抽象,形成一个独立于所有物理因素的模型,并且完全独立于实现细节,例如,数据库系统在实现中将采用的DBMS软件、应用程序结构、编程语言、硬件平台或其它任何实现上的考虑。概念设计的目的是充分挖掘系统对数据的需求,并进行归纳和抽象,在此基础上所建立的模型应该容易为设计人员和用户所理解,从而为设计人员和用户之间提供一个交流的桥梁,同时,该模型应该能够较准确表达用户需求,减少二义性。目前常用的模型是实体联系(Entity-Relationship,ER)模型,后
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1