计算机软件技术基础_第1页
计算机软件技术基础_第2页
计算机软件技术基础_第3页
计算机软件技术基础_第4页
计算机软件技术基础_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件技术基础,数据库系统(3),第2页,4.3关系数据库语言SQL,关系数据库SQL(StructuredQueryLanguage)语言是关系数据库的标准语言,对关系模型的发展和商用DBMS的研制起着重要的作用。,SQL发展历史1986年10月,ANSI批准SQL作为关系数据库语言的美国标准,并公布了SQL的标准文本“数据库语言SQL”(简称SQL86),1987国际标准化组织ISO通过了这一标准;1989年公布了SQL89标准,增加了对完整性约束的支持;1992年公布了SQL92标准;1996年公布了SQL96标准;1999年公布了SQL99标准;2003年公布了SQL2003标准;SQL标准文本的修改和完善还在继续进行,第3页,SQL语言的特点,一体化语言:集成DDL、DML、DCL于一体,共有8个语句:SELECT、CREATE、ALTER、DROP、INSERT、DELETE、UPDATE、GRANT、REVOKE。两种使用方法,统一语法结构:自含式,嵌入式。高度非过程化:Dowhat?Nothowtodo?接近自然语言:语法简洁,易学、易用。面向集合的操作方式:一次一集合。,第4页,数据定义语句,数据定义语句定义数据库的模式,包括对基本表(table)、视图(view)和索引(index)等数据库对象的创建和撤销操作。数据类型:INTEGERSMALLINTDECIMAL(p,q)FLOATCHAR(n)VARCHAR(n)常用语句:CREATETABLEDROPTABLECREATEVIEWDROPVIEWCREATEINDEXDROPINDEX,第5页,语法:CREATETABLE表名(列名数据类型DEFAULT缺省值NOTNULL,列名数据类型DEFAULT缺省值NOTNULL,PRIMARYKEY(列名,列名),FOREIGNKEY(列名,列名)REFERENCES表名(列名,列名),CHECK(条件表达式)注:句法中表示该成分是可选项。,CREATETABLE语句,第6页,举例,设教学数据库有三个关系:STUDENT(sno,sname,ssex,sage,sdept)COURSE(cno,cname,credit)SC(sno,cno,grade)基本表STUDENT可用下列语句创建:CREATETABLESTUDENT(snoCHAR(4)NOTNULL,snameCHAR(8)NOTNULL,sageSMALLINT,ssexCHAR(1),sdeptCHAR(30),PRIMARYKEY(Sno);,主键约束,第7页,CREATETABLECOURSE(cnoCHAR(4)PRIMARYKEY,cnameCHAR(50)NOTNULL,creditSMALLINT);CREATETABLESC(snoCHAR(4)NOTNULL,cnoCHAR(4)NOTNULL,gradeSMALLINT,PRIMARYKEY(sno,cno),FOREIGNKEY(sno)REFERENCESSTUDENT(sno),FOREIGNKEY(cno)REFERENCESCOURSE(cno),CHECK(grade=0);,外键约束,自定义约束,第8页,DROPTABLE语句,语法:DROPTABLE表名CASCADE|RESTRICT注:撤消基本表后,基本表的定义、表中的数据、表上的索引、以及由此表导出的视图的定义都被删除。例:DROPTABLESC;DROPTABLECOURSE;DROPTABLESTUDENT;,第9页,数据查询语句,数据查询语句是SQL语言中最复杂的部分,允许用户以灵活的方式表达查询意图,并返回数据库中符合条件的数据。语法:SELECT目标表的列名或列表达式序列FROM基本表和(或)视图序列WHERE行条件表达式GROUPBY列名序列HAVING组条件表达式ORDERBY列名ASC|DESC注:SELECT语句中,WHERE子句称为行条件子句,GROUP子句称为分组子句,HAVING子句称为组条件子句,ORDER子句称为排序子句。,第10页,举例(简单查询),例1:查询全部学生的所有信息。SELECT*FROMSTUDENT;例2:查询全部被选课程的课程号。SELECTDISTINCTcnoFROMSC;例3:列出选修了课程号为C6的所有学生的学号和成绩,并按分数的降序排列。SELECTsno,gradeFROMSCWHEREcno=C6ORDERBYgradeDESC;,第11页,表达查询条件的谓词,比较谓词:,=,;例:cno=C6IN谓词:适合于离散有穷集合的查询;例:性别IN(男,女)LIKE谓词:适合于字符串的模糊查询(匹配符%_)例:书名LIKE数据库%NULL谓词:判断空值例:成绩ISNULLBETWEEN谓词:适合数值型字段,可以定义一个闭区间;例:成绩BETWEEN80AND90,第12页,举例(使用谓词查询),例4:查询信息系(IS)、数学系(MA)以及计算机系(CS)学生的姓名和性别。SELECTsname,ssexFROMSTUDENTWHEREsdeptIN(IS,MA,CS);例5:查询还没有分系的学生的学号和姓名。SELECTsno,snameFROMSTUDENTWHEREsdeptISNULL;例6:查询所有姓王的学生的姓名、学号和性别。SELECTsname,sno,ssexFROMSTUDENTWHEREsnameLIKE王%;,第13页,举例(使用谓词查询),例7:查询课程名以DB开头且倒数第3个字符为I的课程的所有信息。SELECT*FROMCOURSEWHEREcnameLIKEDB%I_;例8:查询年龄在20到23岁之间的学生姓名、系别和年龄。SELECTsname,sdept,sageFROMSTUDENTWHEREsageBETWEEN20AND23;,第14页,集函数和分组,集函数是面向一个集合的求值函数。SUM:求总和AVG:求平均值COUNT:求集合中元素的个数MAX:最大值MIN:最小值分组就是对查询的结果进行分类。GROUP子句可以按某些属性的值对查询结果进行分组。HAVING子句可以对分组后的结果作进一步的筛选。当查询语句中有GROUP子句时,集函数作用的对象是一个分组的结果,而不是整个查询的结果。,第15页,举例(分组查询),例9:查询每门课程的课程号和平均成绩。SELECTcno,AVG(grade)FROMSCGROUPBYcno;例10:查询选修了三门以上课程的学生学号。SELECTsnoFROMSCGROUPBYsnoHAVINGCOUNT(*)3;注:WHERE子句与HAVING子句的区别在于WHERE子句作用于基本表或视图,从中选择满足条件的元组;HAVING短语作用于组,从中选择满足条件的组。,第16页,连接查询,当查询的信息涉及到多个表中的数据时,要将这些表按某种条件连接起来。例10:求“数据结构”课程成绩大于85分的学生姓名和成绩,结果按成绩降序排列。SELECTSTUDENT.sname,gradeFROMSTUDENT,SC,COURSEWHERESTUDENT.sno=SC.snoANDSC.cno=COURSE.cnoANDCOURSE.cname=数据结构ANDSC.grade85ORDERBYgradeDESC;注:当不同的表中有同名属性时,属性名前要用表名限定。,第17页,数据操纵语句,数据操纵包括数据插入、数据删除和数据修改三种操作。数据插入元组值的插入语法:INSERTINTO基本表(列表)VALUES(元组值)作用:将一条元组值插入到表中。例1:往基本表SC中插入一个元组值INSERTINTOSCVALUES(S004,数据库,90);例2:往基本表SC中插入部分元组值INSERTINTOSC(sno,cno)VALUES(S004,物理);查询结果的插入句法:INSERTINTO基本表名(列名表)子查询作用:将子查询返回的结果数据集插入到表中。要求:查询语句的目标列必须与INTO子句匹配。,第18页,例3:将平均成绩大于80分的学生学号和平均成绩存入另一个基本表S_GRADE(Sno,Avg_grade)。INSERTINTOS_GRADE(Sno,Avg_grade)SELECTSno,AVG(grade)FROMSCGROUPBYsnoHAVINGAVG(grade)80;数据删除语法:DELETEFROM基本表WHERE条件表达式作用:从表中删除符合WHERE子句中删除条件的元组;若WHERE子句缺省,则表示要删除表中的所有元组。例4:删除学号为S001的学生信息。DELETEFROMSTUDENTWHEREsno=S001;,第19页,数据修改语法:UPDATE基本表名SET列名值表达式,列名值表达式WHERE条件表达式作用:修改指定表中满足WHERE子句条件的元组,若WHERE子句缺省,则表示对所有元组进行修改。例5:把所有学生的年龄加1。UPDATESTUDENTSETSage=Sage+1;例6:把课程号为C5的课程名改为“电子商务”。UPDATECOURSESETCname=电子商务WHERECno=C5;,第20页,视图,视图是从一个或几个基本表(或视图)导出的一个虚表。数据库中只存放视图的定义而不存放视图的数据,这些数据仍放在原来的基表中。当基表中的数据发生变化时从视图中查出的数据也随之改变了。视图一经定义就可以对其进行查询,但对视图的更新操作有一定的限制。视图的定义语法:CREATEVIEW视图名(列名,列名)AS子查询WITHCHECKOPTION,第21页,例1:建立计算机学院98级学生视图。CREATEVIEWCS_STUDENT(sno,sname)ASSELECTsno,snameFROMSTUDENTWHEREsdept=CSWITHCHECKOPTION;例2:建立计算机学院选修了5号课程的学生视图。CREATEVIEWCS_S1(sno,sname,grade)ASSELECTSTUDENT.sno,sname,gradeFROMSTUDENT,SCWHEREsdept=CSANDSTUDENT.sno=SC.snoANDcno=5;,第22页,视图的查询对视图的查询与对表的查询完全一样。例如:在计算机学院学生的视图CS_S1中找学习了5号课程且成绩为95分的学号、姓名。SELECTsno,snameFROMCS_S2WHEREgrade=95;视图的撤消语法:DROPVIEW视图名作用:从数据库中删除一个视图的定义信息。例如:撤消视图CS_S1。DROPVIEWCS_S1;,第23页,小结,数据库技术是一门用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论