资源描述:
《数据定义3.3 查询3.4 数据更新3.5 视图3.6 数据控制3.7 嵌入.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL第三章关系数据库标准语言SQL3.1SQL概述SQL是关系数据库的标准语言1974年由Boyce和Chamberlin提出1986年10月,美国国家标准局(ANSI)公布第一个标准SQL-86,1987年国际标准化组织(ISO)也通过了这一标准1989年ANSI再次公布标准SQL-891992年ANSI再次公布标准SQL-921999年公布标准SQL-99(SQL3)2003年公布标准SQL-2003SQL-2006SQL-2008SQL语言的组成:数据定义(DDL)定义数据库的模式,如基本表、
2、视图、索引、完整性规则描述数据操纵(DML)查询、插入、删除和修改数据控制(DCL)授权、完整性规则描述、事务并发控制等嵌入式SQL(ESQL)在宿主语言中使用SQL的规则SQL语言的特点:综合统一:集DDL、DML、DCL语言功能于一体,语言风格统一高度非过程化:存取路径透明面向集合的操作方法:操作结果,操作对象以统一语法结构提供两种使用方式:自含式,嵌入式语言简洁,易学易用,共使用11个关键词DDL:create,drop,alterDML:select,insert,delete,updateDCL:grant,revoke,commit,rollback3.2数据定义关系数据库的定
3、义包括对基本表、视图和索引的定义关键词:create,drop,alter1.定义基本表CREATETABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]…][,<表级完整性约束条件>]);3.2.1定义、删除与修改基本表常用完整性约束主码约束:PRIMARYKEY参照完整性约束:FOREIGNKEY…REFERENCES唯一性约束:UNIQUE非空值约束:NOTNULL取值约束:CHECK例:创建学生表Student(Sno,Sname,Ssex,Sage,Sdept)CREATETABLEStudent(SnoCHAR(5)PRIM
4、ARYKEY,SnameCHAR(20)NOTNULLUNIQUE,SsexCHAR(2)CHECK(SsexIN(‘男’,‘女’)),SageSMALLINT,SdeptCHAR(15));例:创建课程表Course(Cno,Cname,Cpno,Ccredit)CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40)NOTNULL,CpnoCHAR(4),CcreditSMALLINT,FOREIGNKEY(Cpno)REFERENCESCourse(Cno));例:创建学生选课表SC(Sno,Cno,Grade)CREATETABLES
5、C(SnoCHAR(5)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINTCHECK(Grade>=0ANDGrade<=100),PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno));2.修改基本表ALTERTABLE<表名>[ADD<新列名><数据类型>[完整性约束]][ALTERCOLUMN<列名><数据类型>][DROP<完整性约束名>];例:ALTERTABLEStudentADDScomeDATE;ALTERTAB
6、LEStudentALTERCOLUMNSageINT;ALTERTABLEStudentDROPUNIQUE(Sname);3.删除基本表DROPTABLE<表名>;例:删除Student表DROPTABLEStudent;1.建立索引CREATE[UNIQUE][CLUSTERED]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);次序:ASC(缺省)
7、DESCUNIQUE:每个索引值只对应唯一记录CLUSTERED:物理记录顺序与索引项顺序一致例:CREATECLUSTEREDINDEXStudeptONStudent(Dept);3.2.2建立与
8、删除索引例:为Student表按学号升序建立唯一索引CREATEUNIQUEINDEXStusnoONStudent(Sno);例:为Course表按课程号升序建立唯一索引CREATEUNIQUEINDEXCoucnoONCourse(Cno);例:为SC表按学号升序和课程号降序建立唯一索引CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);2.删除索引DROPINDEX<索引名>;例:删