《【教学课件】第4章数据库及应用程序开发-关系数据库标准语言SQL.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章数据库及应用程序开发-关系数据库标准语言SQL.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章数据库及应用程序开发关系数据库标准语言关系数据库标准语言SQL西安交通大学西安交通大学西安交通大学西安交通大学计算机教学实验中心计算机教学实验中心计算机教学实验中心计算机教学实验中心软件开发技术基础软件开发技术基础软件开发技术基础软件开发技术基础1关系数据库标准语言关系数据库标准语言SQLn结构化查询语言(SQL,StructuredQueryLanguage)是关系数据库的标准语言。它的主要功能包括:n数据定义:DataDefinationLanguage(DDL)n数据查询:DataQueryn数据操纵:DataManipulationLanguage(DML)n数据控制:DataC
2、ontrolLanguage(DCL)2(2)SQL特点n综合统一综合统一:集数据定义语言(:集数据定义语言(DDL)、)、数据操纵语言(数据操纵语言(DML)和数据控制语言和数据控制语言DCL于一体,综合管理功能于一身。于一体,综合管理功能于一身。n高度非过程化高度非过程化:用户只需提出:用户只需提出“做什么做什么”,而不需指明,而不需指明“怎么做怎么做”。n面向集合的操作方式面向集合的操作方式:用户查询、修改、:用户查询、修改、的数据不是一条记录,而是记录的集合。的数据不是一条记录,而是记录的集合。3SQL特点(2)n以同一语法结构提供两种使用方式以同一语法结构提供两种使用方式:用户可:用
3、户可以从键盘使用以从键盘使用SQL命令,也可以将命令,也可以将SQL语句语句嵌入其他高级语言中。嵌入其他高级语言中。(PHP VC示例示例)n语言简洁、易于使用语言简洁、易于使用:语句很少,:语句很少,数据定义:数据定义:CTEATE DROP ALTER数据操纵:数据操纵:INSERT UPDATE DELETE数据查询:数据查询:SELECT数据控制:数据控制:GRANT REVOTE可以对基本表和视图进行查询可以对基本表和视图进行查询4关系数据库的三级模式结构5nSQL(StructuredQueryLanguage)n1建立表nCREATETABLEtable_name(column_
4、namedata-typeconsraint,)6建立表nCREATETABLEemployee(eidCHAR(6),nameVARCHAR(8)NOTNULL,ageNUMERIC(3,0),countryVARCHAR(10)NULL)/NUMERIC(3,0)-NUMERIC7建立表nCREATETABLEemployeen(eidCHAR(6)NOTNULLPRIMARYKEY,nnameVARCHAR(8)NOTNULL,nageNUMERIC(3,0),ncountryVARCHAR(10)NULLn)ndroptableemployee3删除数据表8 SQL SERVER中常用
5、的数据类型中常用的数据类型n学号、身份证号等,使用字符型数据92插入记录nINSERT INTO 表名(列名表)VALUES(值表)INSERT INTO employee(eid,name,age,country)VALUES(3018,zhang,28,China)10nINSERTINTOemployeeVALUES(3056,wang,35,USA)nINSERTINTOemployee(eid,name,country)VALUES(4025,li,Russia)2、插入记录113、修改记录nUPDATE表名SET字段名=表达式WHERE条件nUPDATEemployeeSETnam
6、e=LiMingWHEREeid=402512nUPDATEemployeeSETname=ZhangLi,age=36,country=USAWHEREeid=3056n可以修改多个字段的值。如果不带WHERE修改所有的记录。134、删除记录nDELETE表名WHERE条件nDELETEemployeeWHEREeid=3018145、查询记录nSELECT表达式FROM表名表WHERE条件GROUPBY字段名表HAVING条件ORDERBY字段名表15(1)举例nSELECTpub_id,pub_name,countryFROMpublishersnSELECT*FROMpublisher
7、s16(2)删除重复的行DISTICTnSELECTcity,stateFROMauthersnSELECTDISTICTcity,stateFROMauthers17(3)计算表达式nnSELECTtitle_id,type,price,price_price*0.3FROMtitlennSELECTau_lname+.+au_fname,city+.+stateFROMauthors18(4)筛选条件n(a)条件:n比较=!=nprice45.3ncountry=Chinan逻辑运算nNOTANDORCountry=ChinaANDage3519(b)举例nSELECT title_id,
8、type,price,price-price*0.3FROMtitlesWHEREprice-price*0.318nSELECTpub_id,pub_nameFROMpublishersWHEREcountry=USAANDstate=CA20(c)LIKEn列名NOTLIKE模式n%:任意字符串,_:任意一个字符nnSELECTau_lname+.+au_fname,city+.+stateFROMauthorsWHEREau_fnameLIKED%21nSELECTau_lname+.+au_fname,city+.+stateFROMauthorsWHEREau_idLIKE72_-%
9、222324其他的条件查询25(5)结果排序nORDERBY字段表n通常返回的结果是随机排列的。nSELECTstor_name,cityFROMstoresORDERBYstore_name26nSELECTstor_name,cityFROMstoresORDERBYstore_nameDESCnnSELECTstor_name,cityFROMstoresORDERBYstore_nameASC27nSELECTstor_name,cityFROMstoresORDERBYstor_name,cityn用多个列排列。nnSELECTstor_name,cityFROMstoresORDE
10、RBYstaten用不出现的列。28(6)统计函数 29nSELECTAVG(price)FROMtitlesnnSELECTMAX(price)FROMtitlesWHEREtype=business30nSELECTAVG(qty),SUM(qty),COUNT(DISTICTstor_id)FROMsalesnnSELECTCOUNT(*)FROMpublishersWHEREstate=CA31(7)结果分组nGROUPBY分组列名表nSELECTtype,AVG(price),SUM(price),COUNT(*)FROMtitlesWHERE type in (business,m
11、od_cook,trad_cook)GROUPBYtype32SELECTtype,pub_id,AVG(price),SUM(price),COUNT(*)FROMtitlesWHERE type in (business,mod_cook,trad_cook)GROUPBYtype,pub_id33nGROUPBY分组列名表HAVING条件n对GROUP的分组结果再进一步筛选。nSELECTtype,AVG(price),SUM(price),COUNT(*)FROMtitlesWHEREprice$10GROUPBYtype使用HAVING34nSELECTtype,AVG(price)
12、,SUM(price),COUNT(*)nFROMtitlesnWHEREprice$10nGROUPBYtypenHAVINGAVG(price)$20使用HAVING35(8)多表查询n(a)笛卡尔乘积nSELECTtitle_id,au_fnameFROMtitles,authorsnnSELECTtitles.title_id,titles.title,titleauthor.au_idFROMtitles,titleauthor36(b)别名nSELECTt.title_id,t.title,ta.au_idFROMtitlest,titleauthortannSELECTt.tit
13、le_id,t.title,ta.au_idFROMtitlest,titleauthortaWHEREt.title_id=ta.title_id37(c)筛选nSELECTt.title_id,a.au_idFROMtitlest,titleauthorta,authorsaWHEREt.title_id=ta.title_idandta.au_id=a.au_id386视图n(1)视图的定义nSQL建立视图的语句格式为:nCREATE VIEW(,)AS 39nCREATEVIEWau_viewASSELECTau_id,au_fname,au_lnameFROMauthorsnCREA
14、TEVIEWauthor_titleASSELECTt.title_id,a.au_idFROMtitlest,titleauthorta,authorsaWHEREt.title_id=ta.title_idandta.au_id=a.au_id40(2)视图查询nSELECT*nFROMau_viewnSELECTt.title_id,a.au_idnFROMtitlest,titleauthorta,authorsanWHEREt.title_id=ta.title_idandta.au_id=a.au_id41(3)删除视图nDROPVIEW视图名nnDROPVIEWa_authors
15、427、索引n索引可以极大地提高查询的速度n索引可以建在一列或几列上n有ASC(升序)和DESC(降序)n(1)索引类型n按照存储位置:聚集索引和非聚集索引。n按照关键字值是否唯一:唯一索引和非唯一所以。43(2)建立索引nCREATE UNIQUE CLUSTERED|NOCLUSTEREDINDEX索引名ON表名(列名表)nCREATEUNIQUEINDEXid_indexONauthors(au_id)44nCREATEINDEXid_indexONauthors(au_fnameDESC,au_id)nCREATECLUSTEREDINDEXid_indexONauthors(au_f
16、nameDESC,au_id)45(3)删除索引nDROPINDEX表名.索引名nnDROPINDEXauthors.id_index468、数据控制n数据控制也称为数据保护n通过对数据库用户的使用权限加以限制而保证数据安全的重要措施。nSQL语言提供一定的数据控制功能,能在一定程度上保证数据库中数据的完全性和完整性,并提供了一定的并发控制及恢复能力。nSQL的数据控制语句包括授权(Grant)、收权(Revoke)和拒绝访问(Deny)三种,其权限的设置对象可以是数据库用户或用户组。47(1)授权nGRANT语句向用户授予操作权限nGRANT,ONTO,|PUBLICWITHGRANTOPTION;n/PUBLIC,即全体用户。n/WITHGRANTOPTION获得权限的用户可以再授予别的用户。48数据控制对象与权限49nGRANTSELECTONTABLEteacherTOU1;nGRANTUPDATE(Sno),SELECTONTABLEstudentTOU2,U3;50(2)收回权限nREVOKE,ONFROM,;nREVOKEUPDATE(Sno)ONTABLEstudentFROMU2;nREVOKESELECTONTABLEteacherFROMU1;51