资源描述:
《关系数据库标准语言SQL重点.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、关系数据库标准语言SQL7/30/20211要点SQL语言简介SQL语言及其使用方式独立式SQL嵌入式SQL7/30/202123.1SQL概述StructuredQueryLanguage,1974年提出关系数据库的国际标准语言:大多数数据库均用SQL作为共同的数据存取语言和标准接口,实现不同数据库系统之间的互操作目前仍被不断扩充介于关系代数和关系演算之间,三者可相互转换7/30/20213SQL的特点综合统一:集DDL、DML、DCL功能于一体,可独立完成数据库生命周期中的全部活动,语言风格统一
2、高度非过程化:用户只需提出“做什么”,而无需指明“怎么做”面向集合的操作方式:操作对象、查询结果、更新数据均可以是元组的集合提供两种使用方式:自含式、嵌入式语言简捷,易学易用SQL功能关键动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE7/30/20214SQL语言的基本概念SQL支持关系数据库的三级模式结构存储文件:组成关系数据库的内模式,对用户透明基表(BaseTable):组成关系数据库的模式,一
3、个关系对应一个基表,一或多个基表对应一个存储文件视图(View):组成关系数据库的外模式,从一个或多个基表中导出,不独立存储在数据库中SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式7/30/202153.2数据定义SQL的数据定义语言(DDL)操作对象操作方式创建删除修改基表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEX7/30/20216定义基表数据类型:不同的
4、数据库系统有自己的数据类型规定,但一般都包括INTEGER,FLOAT,CHAR(n),VARCHAR(n)等完整性约束条件列级完整性约束条件:涉及表的某一列如对数据类型的约束,对数据格式的约束,对取值范围或集合的约束,对空值NULL(空值,不知道或不能用的值)的约束,对取值的唯一性UNIQUE约束,对列的排序说明等表级完整性约束条件:涉及表的一个或多个列如订货关系中规定发货量不得超过订货量CREATETABLE<表名>(<列名><数据类型>[列级完整性约束][,<列名><数据类型>[列级完整性约束
5、]]…[,<表级完整性约束>]);7/30/20217SQL支持的数据类型SMALLINT半字长的整数INT全字长的整数FLOAT浮点数CHAR(n)长度为n的定长字符串VARCHAR(n)最大长度为n的变长字符串DEC(p,q)十进制数,共p位,小数点后有q位DATE日期型,格式YYYY-MM-DDTIME时间型,格式为HH.MM.SSTIMESTAMP日-时戳(日期加时间)7/30/20218完整性约束CREATETABLE的完整性约束NOTNULL属性值禁止为空UNIQUE取值唯一PRIMAR
6、YKEY(A1,...,An)主码--若干属性列CHECK(P)P为条件表达式7/30/20219例:建立学生管理的相关基表CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINTEGER,SdeptCHAR(15));CREATETABLESC(SnoCHAR(5)NOTNULLUNIQUE,CnoCHAR(8)NOTNULLUNIQUE,GradeINTEGER);CREATETABLEC
7、ourse(CnoCHAR(8)NOTNULLUNIQUE,CnameCHAR(20),CpnoINTEGER,CcreditINTEGER);7/30/202110例:建立图书管理的相关基表CREATETABLEBorrows(CardNoINTEGERNOTNULLUNIQUE,NameCHAR(10),DeptCHAR(20));CREATETABLEBooks(BookNoINTEGERNOTNULLUNIQUE,SortNoCHAR(10),TitleCHAR(30),AuthorCHAR
8、(12),PriceFLOAT,LoanNoINTEGER);CREATETABLELoans(CardNoINTEGERNOTNULLUNIQUE,BookNoINTEGERNOTNULLUNIQUE,TitleCHAR(30),DateCHAR(10));7/30/202111例:完整性约束CREATETABLEbranch(branch-namechar(15)notnull,branch-citychar(30),assetsinteger);CREATETA