资源描述
1.5关系数据库标准语言SQL,学习目标,理解SQL的特点和基本概念掌握基本表的定义、删除与修改理解SELECT语句的一般格式掌握单表查询操作掌握多表连接查询操作,SQL(StructuredQueryLanguage)简介:结构化查询语言,是一个通用的、功能极强的关系数据库标准语言。1974年由Boyce和Chamberlin提出,并在IBM公司研制的RDBMS原型SystemR上实现。1986年10月美国国家标准局ANSI批准为美国标准(SQL-86)。1987年国际标准化组织ISO通过了这一标准。随着数据库技术的发展而不断发展,最新标准SQL2003。,1.5关系数据库标准语言SQL,查询,SELECT语句的一般格式:SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;,示例学生-课程数据库,单表查询:仅涉及一个表的查询。选择表中的若干列:对应于关系代数的投影运算。查询指定列例1查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;例2查询全体学生的姓名、学号、系别。SELECTSname,Sno,SdeptFROMStudent;查询全部列例3查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;,查询经过计算的值例4查询全体学生的姓名及其出生年份。SELECTSname,2010-SageFROMStudent;例5查询全体学生的姓名、出生年份和系别,要求用小写字母表示所有系名。SELECTSname,2010-Sage,LOWER(Sdept)FROMStudent;选择表中的若干元组消除取值重复的行:两个原不相同的元组,投影到指定的某些列后,可能变成相同的行了,可以用DISTINCT取消它们。例6查询选修了课程的学生学号。SELECTSnoFROMSC;或SELECTALLSnoFROMSC;SELECTDISTINCTSnoFROMSC;,查询满足条件的元组:使用WHERE子句,其中的条件有:比较例7查询计算机科学系全体学生的名单。SELECTSnameFROMStudentWHERESdept=CS;,例8查询所有年龄在20岁以下的学生姓名及其年龄。SELECTSname,SageFROMStudentWHERESage20;例9查询考试成绩有不及格的学生学号。SELECTDISTINCTSnoFROMSCWHEREGrade80;,例38查询每个学生的学号、姓名、选修的课程名及成绩。SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno;,基本表的定义、修改与删除定义基本表:CREATETABLE(,);例1建立一个学生表Student。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(8)UNIQUE,SsexCHAR(2),SageINT,SdeptCHAR(20);,数据定义,例2建立一个课程表Course。CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditINT,FOREIGNKEY(Cpno)REFERENCESCourse(Cno);例3建立一个选课表SC。CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno);,数据类型:关系模型中每一个属性来自一个域,SQL中域的概念用数据类型来实现,SQL提供了以下常用数据类型:,修改基本表:ALTERTABLEADD完整性约束DROPALTERCOLUMN;例8向Student表增加“入学时间”列,类型为日期时间型。ALTERTABLEStudentADDS_entranceDATETIME;不论基本表中原来是否已有数据,新增加的列一律为空值。例9将年龄的数据类型改为整数。ALTERTABLEStudentALTERCOLUMNSageINT;例10增加课程名称必须取惟一值的约束条件。ALTERTABLECourseADDUNIQUE(Cname);删除基本表:DROPTABLE;CASCADE:表示删除表的同时相关的对象如视图也被删除。,
展开阅读全文