资源描述:
《SQL概述 数据定义 查询 更新 视图 数据控制 嵌入式SQL.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQL概述数据定义查询更新视图数据控制嵌入式SQL关系数据库标准语言SQL第3章2021/7/301数据库原理●SQL的发展及现状1974年,由Boyce和Chamberlin提出。1975-1979,IBM公司SanJoseResearchLab研制了关系数据库管理系统原型SystemR并实现了这种语言。1986年美国国家标准局(ANSI)的数据库委员会X3H2批准SQL作为关系数据库语言的美国标准(SQL-86)。ANSI不断修改和完善SQL标准,公布了SQL-89、SQL-92(SQL2)、SQL-99(SQL3)大
2、部分DBMS产品都支持SQL,成为操作数据库的标准语言2021/7/302数据库原理3.1SQL概述3.1.1SQL的特点SQL是一种介于关系代数和关系演算之间的结构化查询语言。综合统一集DDL、DML、DCL的功能于一体,可以独立完成数据库生命周期中的全部活动。高度非过程化无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。面向集合的操作方式操作对象、查找结果、插入、删除、更新操作的对象可以是元组集合。以同一种语法结构提供两种使用方式可独立的用于联机交互的使用方式,用户可在终端键入SQL命令对数据库进
3、行操作;SQL语句可嵌入到高级语言程序中,供程序员设计程序时使用。语言简单,易学易用核心功能只有9个动词。2021/7/303数据库原理数据查询(DataQuery)SQL语言数据操纵(DataManipulation)数据定义(DataDefinition)数据控制(DataControl)SQL功能数据查询数据定义数据操纵数据控制动词SELECTCREATE,DROP,ALTERINSERT,UPDATE,DELETEGRANT,REVOKE表3.1SQL语言的动词2021/7/304数据库原理SQL用户基本表1视图1
4、视图2基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式图3.1SQL对关系数据库模型的支持3.1.2SQL语言的基本概念2021/7/305数据库原理基本概念:用户可以用SQL语言对视图(View)和基本表(BaseTable)进行查询等操作,在用户观点里,视图和表一样,都是关系。视图是从一个或多个基本表中导出的表,本身不存储在数据库中,只有其定义,可以将其理解为一个虚表。基本表是本身独立存在的表,每个基本表对应一个存储文件,一个表可以带若干索引,存储文件及索引组成了关系数据库的内模式。2021/7/306数据
5、库原理3.2数据定义操作对象表视图索引操作方式创建CREATETABLE删除DROPTABLE修改ALTERTABLECREATEINDEXDROPINDEXCREATEVIEWDROPVIEW表3.2SQL的数据定义语句视图是基于基本表的虚表,索引是依附于基本表的,因此,SQL通常不提供修改视图定义和索引定义的操作。(删除后重建;Oracle允许直接修改视图定义)2021/7/307数据库原理3.2.1定义、删除与修改基本表定义基本表格式:CREATETABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列
6、名><数据类型>[列级完整性约束条件]]……[,<表级完整性约束条件>]);建立一个新表,表中无记录2021/7/308数据库原理CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,/*列级完整性约束条件SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));例1:建立学生表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性构成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。2021
7、/7/309数据库原理CREATETABLES(S#CHAR(6)NOTNULL,/*学号SNAMECHAR(8)NOTNULL,/*姓名SAGESMALLINT,/*年龄SDCHAR(10),/*系名SEXCHAR(2)DEFAULT'男'/*性别CHECK((SEX='男')OR(SEX='女')),PRIMARYKEY(S#));例2:建立学生S、课程C、选课SC三个表S表:2021/7/3010数据库原理CREATETABLEC(C#CHAR(6)NOTNULL,/*课程号CNAMECHAR(30)NOTNULL,
8、/*课程名TNAMECHAR(8),/*教师姓名PC#CHAR(6),/*先行课PRIMARYKEY(C#));例2:建立学生S、课程C、选课SC三个表C表:2021/7/3011数据库原理CREATETABLESC(S#CHAR(6)NOTNULL,/*学号C#CHAR(6)NOTNULL,/*课程号