资源描述:
《SQL的数据查询6.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQL的数据查询天津师范大学 刘洋一个问题2006年6月,举世瞩目的第18届世界杯在德国举行,某网站为了方便球迷查询,在自己的网站上设立了世界杯信息查询系统。该系统的一部分要求为:一名球员可以参加多场比赛,每场比赛有多名球员参加。概念模型——ER图球员姓名代表国号码年龄位置比赛编号甲方乙方类型进球数出场时间参加mn概念模型→关系数据模型球员关系player(nation,number,name,age,position)主码:(nation,number)概念模型→关系数据模型想一想,如果只是number作为主码可以吗?概念模型→关系数据模型不可以,因
2、为不同国家队中有相同的号码概念模型→关系数据模型比赛关系match(matchid,match_a,match_b,matchtype)主码:matchid概念模型→关系数据模型player(nation,number,name,age,position)match(matchid,match_a,match_b,matchtype)matchidnation,numberjoin(,,)time,goalPlayer的主码match的主码join自己的属性参加关系join的主码SQL语言SQL功能动词数据查询数据定义数据更新数据控制SELECTCREA
3、TE,DROP,ALTERINSERT,UPDATE,DELETEGRANT,REVOKECREATE使用SQL语言创建基本表player(nation,number,name,age,position)Createtableplayer--球员表{nationchar(20),--代表国numberint--号码namechar(20),--姓名ageint,--年龄positionchar(10)--位置–定义主码}check(numberbetween1to23),check(positionin(‘守门员’,’后卫’,’中场’,’前锋’)),pr
4、imarykey(nation,number),使用SQL语言创建基本表match(matchid,match_a,match_b,matchtype)Createtablematch--比赛表{matchidintprimarykey,--比赛编号(主码)match_achar(20),--比赛甲方match_bchar(20),--比赛乙方matchtypechar(10)check(matchtypein(‘小组赛’,’淘汰赛’))–比赛类型}使用SQL语言创建基本表Createtablejoin--参加表{nationchar(20),--代表国
5、numberint,--号码matchidint,--比赛编号timeint,--出场时间goalint--进球数primarykey(nation,number,matchtype)–定义主码–定义外码–定义外码}join(nation,number,matchid,time,goal)foreignkey(nation,number)referenceplayer(nation,number)foreignkey(matchid)referencematch(matchid)SQL语言SQL功能动词数据查询数据定义数据更新数据控制SELECTCREA
6、TE,DROP,ALTERINSERT,UPDATE,DELETEGRANT,REVOKESELECTSelect语句的基本句法select-From-Where句型ΠA1,…An(σF(R1×…×Rm))FromR1,…,RmWhereFSelectA1,…,An这里R1、…、Rn为关系,F是公式,A1、…、An为属性。R1×…×RmσFΠA1,…An使用SQL语言查询世界杯数据库中有三个基本表(关系):player(nation,number,name,position)nationnumbernameposition德国13巴拉克 中场法国12
7、亨利 前锋德国1莱曼 守门员巴西6卡洛斯 后卫使用SQL语言查询match(matchid,match_a,match_b)matchidmatch_amatch_bA1德国 哥斯达黎加A3德国 波兰G2法国 瑞士F2巴西 克罗地亚使用SQL语言查询join(nation,number,matchid,goal)nationnumbermatchidgoal德国13A11德国13A31德国1A10法国12G23巴西6F20德国1A30使用SQL语言查询1、检索参加比赛场次为A1的球员的代表队以及身披号码nationnumbe
8、rmatchid…德国13A1…德国13A3…德国1A1…德国1A3…法国12G