数据仓库实践系列课程——数据库基础与SQL文思海辉课程说明©Pactera.Confidential.AllRightsReserved.201020304数据库基本概念关系代数SQL基础练习数据库基本概念数据(Data)•数据是承载信息的物理符号,也就是描述事物的符号记录。数据库(Database,简称DB)•数据库是指长期存储在计算机内,有组织的、可共享的数据集合。是数据管理的新手段和新技术。数据库系统(Databasesystem,简称DBS)•数据库系统是指在计算机系统中引入数据库后的系统,一般由计算机硬件、数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(DBA)和用户构成。•数据库管理系统是提供数据库管理的计算机系统软件。•数据库应用系统是实现某种具体信息管理功能的计算机应用的软件。硬件操作系统DBMS应用软件应用程序包数据库发展的历史1963年:美国Honeywell公司IDS(IntegratedDataStore)系统投入运行1965年:美火箭公司用IDS帮助设计阿波罗登月火箭1968年:IBM公司:层次IMS1969年:美CODASYL:网状DBTG标准1970年:IBM的E.F.Codd(EdgarFrankCodd)提出关系模型(1981)20世纪70年代以层次、网状为主流20世纪80年代关系系统逐渐代替层次与网状模型目前流行的数据库IBM公司的DB2、Netezza微软公司的SQLServer产品Oracle公司的Oracle、ExadataGreenplum公司的GPTD公司的Teradata数据模型与概念模型•模型是一种人们用来描述事物,认识事物的一种方法。数据库中的模型主要是对现实世界数据特征的抽象,通俗地讲就是对现实世界的模拟。模型•也称为信息模型,是按用户的观点来对数据和信息建模。是对信息世界的管理对象、属性及联系等信息的描述形式。是对现实世界真实全面的反映。概念模型•按计算机的观点对数据建模。数据模型是DBMS的核心和基础。数据模型数据模型与概念模型信息的三种描述现实世界事物个体特征事物间联系信息世界实体属性概念模型机器世界记录字段数据模型现实世界:即客观世界,产生最原始的数据。信息世界:是现实世界在人们头脑中反映并用文字或符号记载下来,是人对现实世界的认识抽象过程,经选择、命名、分类等抽象工作后进入信息世界。机器世界:用数据模型描述现实世界中的事物及其联系。概念模型示例:学生选修课程用矩形表示实体用椭圆表示实体的属性用无向边把实体与其属性连接起来用菱形表示实体间的联系实体与联系用线段连接并注明类型学生课程选修姓名学号系别课程号课程名学分成绩mn数据模型数据模型分类:非关系模型(层次、网状)、关系模型、面向对象模型非关系模型实体:记录属性:数据项(字段)联系:记录之间的联系非关系模型中数据结构的单位是基本层次联系。基本层次联系:两个记录以及它们之间的一对多(包括一对一)的联系。关系模型建立在数据概念的基础上,数据的逻辑结构是一张二维表,由行和列组成。关系模型学号姓名性别001王一男002李二男课程号课程名学分0001数据库20002C++2学号课程号成绩001000180001000274002000195002000288学生课程选修学生课程选修mn关系模型关系数据模型实体以及实体之间的联系都是用关系来表示的。关系:二维表(规范化的)元组:行属性:列(属性名唯一)主码:唯一确定一个元组的属性组。域:属性的取值范围。分量:元组中的一个属性值。关系模式:对关系的描述。关系名(属性名1,属性名2,…)课程说明©Pactera.Confidential.AllRightsReserved.1201020304数据库基本概念关系代数SQL基础练习关系代数笛卡尔积:给定一组域D1,D2…Dn(可以完全不同,也可以部分或全部相同),D1,D2…Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2…dn)|di∈Di,i=1,2,…,n}关系代数一、关系代数运算的三个要素1、运算对象:关系2、运算符号:集合运算符:∪、-、∩、×专门的关系运算符:σ、∏、÷、算术比较符:>、≥、<、≤、=、≠逻辑运算符:﹁、∧、∨3、运算结果:关系关系代数二、专门的关系运算1、选择选择又称为限制。它是在关系R中选择满足给定条件的诸元组。选择是从行的角度进行运算的。记作:σF(R)F:表示选择条件,是一个逻辑表达式。2、投影投影是从R中选择出若干个属性列组成一个新的关系。投影操作是从列的角度进行的运算。记作:∏A(R)A为R中的属性列。投影操作后,不仅取消了原有关系中的某些列,而且还可能取消某些元组。关系代数3、连接连接是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:RSAθB两种最为常用的连接:等值连接:θ为“=”的连接运算称为等值连接。自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。关系代数学号姓名性别001王一男002李二男学号课程号成绩001000180001000274002000195002000288学生选修学号姓名性别课程号成绩001王一男000180001王一男000274002李二男000195002李二男000288学生选修关系代数4、除运算:给定关系R(X,Y)和S(Y,Z),R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上的投影的集合。ABC343534132532322314BC123321A3RSR/S关系代数例1:查询姓名为“王一”的男生记录。σ姓名=“王一”∧性别=“男”(学生)例2:查询王一同学“0001”号课程成绩。∏成绩(σ姓名=“王一”(学生)σ课程号=“0001”(选修))例3:查询选修了全部课程的学生学号。∏学号,课程号(选修)÷∏课程号(课程)三、五种基本的关系运算并、差、笛卡尔积、选择和投影为基本的关系运算。其他三种运算:交、连接和除运算均可以用这5种运算来表达。关系数据库关系数据库,是建立在关系数据模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。关系数据库事务(Transaction):是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。多个事务可以并行执行一个事务的执行必须保证数据库的一致性在事务执行过程中允许暂时的不一致当事务成功执行后,数据库必须是一致的当事务成功提交后,对数据库的改变应该是持久的,即使以后系统出现故障关系数据库—事务事务的特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)事务的所有操作在数据库中要么全部正确反映,要么全部不反映事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一个事务的执行不能被其他事务干扰。即使事务并发也要感觉不到其它事务的存在一个事务成功完成后,它对数据库的改变是永久性的。关系数据库—事务事务的控制命令包括:COMMIT(事务提交)ROLLBACK(事务回退)SAVEPOINT(设置保留点)课程说明©Pactera.Confidential.AllRightsReserved.2401020304数据库基本概念关系代数SQL基础练习SQL简介•SQL(StructuredQueryLanguage)结构化查询语言是IBM公司SanJose实验室为SystemR而设计的查询语言,后被国际标准化组织(ISO)批准作为关系数据库语言的国际标准。•SQL目前遵循的是1999年标准,即SQL-99,最新的标准是SQL:2008(比SQL99主要增加XML,Windows函数,Merger语句等)。•各数据库厂家对SQL-99标准均有扩充,扩充部分不能完全保证数据库之间的兼容性。SQL简介SQL可以分为:•DCL:数据控制语言(DataControlLanguage)•DDL:数据定义语言(DataDefinitionLanguages)•DML:数据操作语言(DataManipulationLanguage)DCL数据定义语言•GRANT(授权)•REVOKE(废除、撤销)•SETROLE(设置角色状态)27©Pactera.Confidential.AllRightsReserved.DDL数据定义语言•CREATE(建立)•ALTER(修改)•DROP(删除)•TRUNCATE(截断)DDL数据定义语言语言描述约定•[]:表示可选项•{|}:表示选择项•CREATE:粗体表示关键字或必输项•Table_name:细体表示用户输入项•创建:蓝色表示说明DDL数据定义语言CREATE--创建用户•CREATEUSERuser_nameIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace_name][TEMPORARYTABLESPACEtablespace_name];创建user_name用户,密码为password,使用tablespace_name表空间,如果没有指定表空间,默认表空间为system表空间。Oracle10g有用户默认表空间设置。例:CREATEUSERtestIDENTIFIEDBYtest;DDL数据定义语言CREATE--创建数据表•CREATETABLEtable_name(Column1datatype[default][notnull][primarykey],[………,][constraintkey_nameprimarykey(column_list)[usingindextablespacetablespace_name]])[tablespacetablespace_name];Datatype是数据类型:varchar2(x),number(x,x),date,integer等。Notnull非空限制,如果不写表示可为空。Primarykey主键,可以紧跟在字段后,或在最后使用constraint。未指名表空间,数据表建立在用户默认的表空间中。例:CREATETALBEtest(aaINTEGER,bbDATE)CONSTRAINTkey_testPRIMARYKEY(aa);DDL数据定义语言CREATE--创建索引•CREATE[UNIQUE]INDEXindex_nameONtable_name(column_list)[tablespacetablespace_name];在table_name表上按照column_list建立索引,索引名为index_name,索引保存在tablespace_name表空间中。UNIQUE:唯一性索引。例:CREATEINDEXincex_testONtable_test(aa);索引在数据库中的概念和作用索引——是一种提高查找速度的机制建立索引,就是按某个关键字段的值,升序或降序排列,建立索引文件。索引那么,它是如何提高查找速度的呢?索引学号姓名性别年龄20060101张建男1820060201王欢女1720060102田静男1820060202鲜恒男1920060103田静女17学生表studentA、索引文件的内部构成索引学号记录号200601011200601023200601035200602012200602024以在学生表student中建立“学号”索引(升序)为例:学号姓名性别年龄20060101张建男1820060201王欢女1720060102田静男1820060202鲜恒男1920060103田静女17学生表student索引文件索引由二部分组成:索引关键字记录号(原表)学号记录号200601011200601023200601035200602012200602024索引文件