计算机软件技术与基础关系模型,计算机软件技术基础

计算机软件技术基础,数据库系统(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*FROMCOURSEWHEREcnameLIKE’DB%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.grade>85ORDERBYgradeDESC;注:当不同的表中有同名属性时,属性名前要用表名限定。,第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=‘CS’WITHCHECKOPTION;例2:建立计算机学院选修了5号课程的学生视图。CREATEVIEWCS_S1(sno,sname,grade)ASSELECTSTUDENT.sno,sname,gradeFROMSTUDENT,SCWHEREsdept=’CS’ANDSTUDENT.sno=SC.snoANDcno=’5’;,第22页,视图的查询对视图的查询与对表的查询完全一样。例如:在计算机学院学生的视图CS_S1中找学习了5号课程且成绩为95分的学号、姓名。SELECTsno,snameFROMCS_S2WHEREgrade=95;视图的撤消语法:DROPVIEW视图名作用:从数据库中删除一个视图的定义信息。例如:撤消视图CS_S1。DROPVIEWCS_S1;,第23页,小结,数据库技术是一门用于数据处理的综合性软件技术。数据库方法的特点:数据统一管理,数据共享,可控冗余,数据独立性,数据完整性,数据一致性,数据安全性数据库系统的组成:数据库,软件,硬件,用户DBMS的主要功能:DDL,DML,数据库运行管理,数据库建立和维护数据库系统的体系结构:三级模式(模式,内模式,外模式)+二级映像(如何保证数据独立性)数据模型:E-R模型(实体和三类联系),三种经典数据模型(层次模型,网状模型,关系模型)SQL语言:数据定义、数据查询及数据操纵语句的使用,本章结束,

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值