SQL关系数据库查询语言_第1页
SQL关系数据库查询语言_第2页
SQL关系数据库查询语言_第3页
SQL关系数据库查询语言_第4页
SQL关系数据库查询语言_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

VisualFoxPro

应用基础与面向对象

程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第1页!第8章SQL关系数据库查询语言8.4数据查询8.3数据更新8.2数据定义8.1SQL语言概述VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第2页!8.1SQL语言概述8.1.2SQL语言的功能8.1.1SQL语言的特点VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第3页!1.SQL的中英文名称是什么?

2.SQL的语言功能是什么?

----结构化查询语言----StructuredQueryLanguage数据查询:select数据定义:create、drop、alter数据操纵:insert、update、delete数据控制:grant、revokeSQL语言概述SQL关系数据库查询语言共109页,您现在浏览的是第4页!8.2数据定义8.2.4删除表8.2.3修改表结构8.2.2创建表8.2.1SQL语言基本数据类型VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第5页!8.2.2创建表使用CreateTable语句定义基本表。CreateTable<表名>(<字段名1><数据类型1>[<字段级完整性约束1>][,<字段名2>]<数据类型2>[<字段级完整性约束2>][,……][,<字段名n>]<数据类型n>[<字段级完整性约束n>][<表级完整性约束n>]);VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第6页!8.2.3修改表结构使用ALTERTABLE语句修改表的结构。AlterTable<表名>[Add<新字段名><数据类型>[<完整性约束>][,……]][Drop[[[Constraint]<约束名>]|[C0lumn<字段名>]][,……]][Alter<字段名><数据类型>[,……]];VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第7页!8.2.4删除表使用DROPTABLE语句删除表。

DropTable<表名>例:删除“人才管理”数据库中的“人才档案备份”表。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第8页!Eg1:用SQLCREATE命令建立“仓库”表createtable仓库(;

仓库号C(5)primarykey,;

面积N(20),;

城市C(20))SQL关系数据库查询语言共109页,您现在浏览的是第9页!格式:droptable

表名eg1:删除订货管理数据库中的仓库表droptable

仓库一、表的删除SQL关系数据库查询语言共109页,您现在浏览的是第10页!格式二:修改已有字段的类型和宽度altertable

表名;alter字段名类型(宽度)eg:将订购单表的订购单号字段的宽度由原来5改为6altertable

订购单;alter订购单号C(6)SQL关系数据库查询语言共109页,您现在浏览的是第11页!格式四:删除已有字段altertable

表名dropcolumn

字段名eg4:删除订购单1表中的金额字段altertable订购单1;dropcolumn金额SQL关系数据库查询语言共109页,您现在浏览的是第12页!格式六:删除有效性规则altertable

表名alter字段名dropcheckeg:删除总金额字段的有效性规则altertable

订购单1;alter

总金额dropcheckSQL关系数据库查询语言共109页,您现在浏览的是第13页!8.3.1插入记录在SQL语言中,插入数据使用Insert语句。InsertInto<表名>[(<字段名1>[,<字段名2>,…])]Values([<常量1>[,<常量2>,…])例:给“人才管理”数据库中的“人才档案”表添加以下两组数据。(Bj10001,刘伟箭,男,08/23/60,大学,党员,汉族,9000,略,略)(Bj11002,刘简捷,男,12/31/58,大学,民主党派,蒙古族,6800,略,略)VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第14页!8.3.3删除记录在SQL语言中,删除表中数据可使用Delete语句。DeleteFrom<表名>[Where<条件表达式>]

例:删除“人才管理”数据库中的“人才档案”表中的数据,将所有的“学历”字段取值“大学”的数据进行逻辑删除。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第15页!Eg1:向score表中插入一条记录("1996468006","05",98)Eg2:向score表中插入一条记录("05",98)insertintoscore(课程编号,成绩);values("05",98)insertintoscore;values("1996468006","05",98)insertintoscore(学号,课程编号,成绩);values("1996468006“,"05",98)SQL关系数据库查询语言共109页,您现在浏览的是第16页!eg1:给score表中所有成绩加10分eg2:给score表中所有不及格的成绩加10分updatescoreset成绩=成绩+10updatescoreset成绩=成绩+10;where成绩<60SQL关系数据库查询语言共109页,您现在浏览的是第17页!格式:deletefrom

表名[where…]

说明:(1)当不使用where时,逻辑删除表中全部记录(2)物理删除:Pack逻辑删除三、删除记录SQL关系数据库查询语言共109页,您现在浏览的是第18页!eg2:物理删除student表中年龄为20的学生记录deletefromstudent;whereyear(date())-year(出生日期)=20packSQL关系数据库查询语言共109页,您现在浏览的是第19页!8.4.1Select语句Select语句能够完成单表查询、多表查询和嵌套查询等操作。Select[All|Distinct]<字段名>|<目标字段表达式>|<函数>[,……]From<表名或视图名>[[Left][Right]Join<表或查询>On<条件表达式>][Where<条件表达式>][GroupBy<字段名1>[Having<条件表达式>]][OrderBy<字段名2>[Asc][Desc]]VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第20页!8.4.1Select语句VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第21页!8.4.2基本查询2.检索表中指定的字段例:利用“人才档案”表中的数据创建一个查询,其结果包含“编号”、“姓名”、“性别”、“出生日期”、“学历”和“工资现状”6个字段的内容。即检索数据库表中指定的字段。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第22页!8.4.3条件查询1.检索表中满足指定条件的记录例:利用“人才档案”表中的数据创建一个查询,其结果包含“人才档案”表所有的字段的内容,而且只选择少数民族人才的记录。即检索数据库表中指定的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第23页!8.4.4嵌套查询1.用于相等(=)判断的子查询例:利用“求职期望”和“岗位类别”表中的数据创建一个查询,查找编号为“jl04002”求职的岗位类别的记录。即检索数据库中,其“父”表中某字段值与“子”表中某字段值相等的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第24页!8.4.4嵌套查询3.用于比较运算符的子查询例:利用“人才档案”和“求职期望”表中的数据创建一个查询,查找“希望工资”大于“学历”为“大学”的平均工资的相关记录。即检索数据库中,其“父”表中某字段值大于“子”表中某字段值的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第25页!8.4.4嵌套查询5.用于All的子查询例:利用“人才档案”和“求职期望”表中的数据创建一个查询,查找“希望工资”大于所有“人才档案”表中“编号”以“jl”开头的“工资现状”的任意个记录。即检索数据库中,其“父”表中某字段值大于所有“子”表中某字段值的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第26页!8.4.6排序查询例:利用“人才档案”表中的数据创建一个查询,“编号”、“姓名”、“性别”、“出生日期”、“工资现状”5个字段的内容,并选择工资现状超过7000元,少于4000元的记录,且查询结果按工资现状字段值升序排列。即检索数据库表中,按字段值升序排列查询结果。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第27页!8.4.7连接查询2.左连接例:利用“人才档案”表和“成就成果”表中的数据创建一个查询,其结果包含表“人才档案”中的“编号”、“姓名”2个字段和“成就成果”表中的“成果名称”、“成果类别”、“成果出处”3个字段,共5个字段的内容。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第28页!联接查询VFP提供的SELECT命令,在FROM子句中提供一种称之为连接的子句。连接分为内部连接和外部连接。外部连接又分为左外连接、右外连接和全外连接。格式:SELECT…FROM…;

[INNER|LEFT|RIGHT|FULL]JOIN—联接方式;ON左表.???=右表.???—联接条件;WHERE…VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第29页!【例8-24】列出98级学生的学号、笔试及其期末成绩。SELECTxsdb.学号,jsj.笔试,xsdb.计算机AS期末成绩FROMxsdb.DBF,jsj.DBF;WHERExsdb.学号=jsj.学号ANDLEFT(xsdb.学号,2)="98“如果采用内部连接方式,则命令:SELECTxsdb.学号,jsj.笔试,xsdb.计算机AS期末成绩;FROMxsdb.DBFINNERJOINjsj.DBFONxsdb.学号=jsj.学号;WHERELEFT(xsdb.学号,2)="98"VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第30页!【例8-25】左联接。SELECTxsdb.学号,笔试FROMxsdb.DBFLEFTjoinjsj.DBF;ONxsdb.学号=jsj.学号②右外连接也叫右连接(RightOuterJoin),其系统执行过程是右表的某条记录与左表的所有记录依次比较,若有满足连接条件的,则产生一个真实值记录;若都不满足,则产生一个含有NULL值的记录。接着,右表的下一记录与左表的所有记录依次比较字段值,重复上述过程,直到左表所有记录都比较完为止。连接结果的记录个数与右表的记录个数一致。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第31页!

select…from…where…字段名表名查询条件一、基本查询格式:SQL关系数据库查询语言共109页,您现在浏览的是第32页!注意:去掉重复元组distinct所有属性*,Select后多字段名之间SQL关系数据库查询语言共109页,您现在浏览的是第33页!Eg3:检索出选修了课程编号为“02”或“05”的,并且成绩大于80分的成绩信息。select*fromscore;where课程编号="02"or课程编号="05")and成绩>70SQL关系数据库查询语言共109页,您现在浏览的是第34页!2、单表条件查询:

(1)条件中,涉及到字符型字段值,加定界符(“”)(2)多个条件之间用and/or相连(3)一行书写不下,除最后一行,各行结尾加分号(;)注意SQL关系数据库查询语言共109页,您现在浏览的是第35页!Eg1:检索出成绩大于80分的学号、姓名、性别和成绩。

Eg2:检索选修了课程的学生信息。

selectdistinctstudent.*;fromstudent,score;wherestudent.学号=score.学号selectstudent.学号,姓名,性别,成绩;fromstudent,score;where成绩>80andstudent.学号=score.学号SQL关系数据库查询语言共109页,您现在浏览的是第36页!说明:From短语:后面接多个表时,两个表之间用逗号隔开。联接条件:两个表进行联接查询的前提是一定有相同的字段名。联接的方法:表名1.字段名=表名2.字段名如:“student.学号=score.学号”查询条件:成绩>80”为查询条件联接条件和查询条件用AND联接,并且都放在where短语中。Selects查询项,若为多个表的公共字段,则指明来源的表。格式为:表名.字段名作队selectstudent.学号,姓名,性别,成绩;fromstudent,score;where成绩>80andstudent.学号=score.学号SQL关系数据库查询语言共109页,您现在浏览的是第37页!Eg1:按学生的入学时间升序检索出全部学生信息。Eg2:检索学生信息,按学生的入学时间升序排序,如果入学时间相同则按学生的出生日期降序进行排序。

select*fromstudentorderby入学时间select*fromstudent;orderby入学时间asc,出生日期descSQL关系数据库查询语言共109页,您现在浏览的是第38页!1、确定范围Between…and…2、确定集合in3、部分匹配查询like字符串匹配运算4、不等于!=用在where子句中三、带特殊运算符的条件查询SQL关系数据库查询语言共109页,您现在浏览的是第39页!1、确定范围Eg1:查询入学时间在1997年1月1日至1999年12月30日之间的学生的信息。select*fromstudentwhere;入学时间between{^1997-01-01}and{^1999-12-30}select*fromstudentwhere;

入学时间>={^1997-01-01}and入学时间<={^1999-12-30}SQL关系数据库查询语言共109页,您现在浏览的是第40页!Eg2:查询没有选修课程编号为“04”或“03”并且成绩不及格的学生的学号、课程编号和成绩。

select*fromscore;where课程编号notin("04","03")and成绩<60

SQL关系数据库查询语言共109页,您现在浏览的是第41页!Eg1:查询所有姓“李”的学生的学号、姓名、性别、专业。Eg2:查询第二个汉字是“海”的学生的学号、姓名、性别、专业。

select学号,姓名,性别,专业fromstudent;where姓名like"李%"select学号,姓名,性别,专业fromstudent;where姓名like"_海%"SQL关系数据库查询语言共109页,您现在浏览的是第42页!1、简单的计算查询(用在select中,对查询结果中数值型字段值进行计算)注:

as新字段名:给结果指定字段别名(1)count(distinct字段名):统计数目

count(*):统计元组个数(2)sum(字段名):求总和(3)avg(字段名):求平均值(4)max(字段名):求最大值(5)min(字段名):求最小值四、计算与分组查询SQL关系数据库查询语言共109页,您现在浏览的是第43页!Eg3:求学号为1996468001的学生平均成绩。Eg4:求score表中的最高分和最低分。selectmax(成绩)as最高分,min(成绩)as最低分;fromscoreselectavg(成绩)as平均分fromscore;

where学号="1996468001"SQL关系数据库查询语言共109页,您现在浏览的是第44页!2、分组与计算查询格式:GROUPBY<字段名>[HAVING<分组条件表达式>]Eg1:检索出每个学生的学号、总分、平均分、最高分和最低分。select学号,sum(成绩)as总分,;avg(成绩)as平均分,;max(成绩)as最高分,;min(成绩)as最低分;fromscore;groupby学号SQL关系数据库查询语言共109页,您现在浏览的是第45页!Eg2:检索出“计算机科学与技术系”的每个学生的学号、姓名、总分、平均分、最高分和最低分。select

student.学号,姓名,;

sum(成绩)as总分,;

avg(成绩)as平均分,;

max(成绩)as最高分,;

min(成绩)as最低分;from

student,score;where

student.学号=score.学号and;

专业=“计算机科学与技术”;groupby

student.学号SQL关系数据库查询语言共109页,您现在浏览的是第46页!学号课程编号成绩XS0401C00296XS0401C00367XS0401C00775XS0402C00884XS0402C00782XS0402C00365XS0402C00989XS0403C01055学号平均分XS040181.2XS040280学号平均分XS040280XS040181.2select学号,avg(成绩)as平均成绩fromscore;groupby学号havingcount(*)>=3;orderby平均成绩SQL关系数据库查询语言共109页,您现在浏览的是第47页!Eg5:检索除“商务英语”专业之外的,选修课程在3门以上(含3门)的每个学生的学号、姓名和平均成绩,并按将结果按平均成绩降序排序,保存到表aa.dbf中select

student.学号,姓名,avg(成绩)as平均成绩;fromstudent,score;wherestudent.学号=score.学号and专业!=”商务英语”;groupbystudent.学号havingcount(*)>=3;orderby平均成绩

descintotableaaSQL关系数据库查询语言共109页,您现在浏览的是第48页!Eg7:检索出平均分在80分以上的每个学生的学号、总分和平均分,并将结果按学号升序排列,保存到表xx.dbf中。select学号,sum(成绩)as总分,;

avg(成绩)as平均分;fromscore;groupby学号havingavg(成绩)>=80;orderby学号intotablexxSQL关系数据库查询语言共109页,您现在浏览的是第49页!(查询结果出自一个表,条件涉及多个表)格式:

SELECT…FROM表1WHERE字段名in;

(SELECT字段名FROM表2WHERE…)五、嵌套查询SQL关系数据库查询语言共109页,您现在浏览的是第50页!格式:<字段名>ISNULL<字段名>ISNOTNULL六、利用空值查询SQL关系数据库查询语言共109页,您现在浏览的是第51页!1、显示部分结果2、将结果存放在临时文件中※3、将结果存放在永久表中七、查询中的特殊选项SQL关系数据库查询语言共109页,您现在浏览的是第52页!Eg1:显示成绩最低的两名学生成绩信息。Eg2:显示成绩最高的那40%的学生成绩信息select*top2fromscoreorderby成绩ascselect*top40percentfromscoreorderby成绩descSQL关系数据库查询语言共109页,您现在浏览的是第53页!3、将结果存放在临时文件中Eg1:将teacher表中的信息保存在临时文件“教师”中。select*fromteacherintocursor教师SQL关系数据库查询语言共109页,您现在浏览的是第54页!Eg1:将所有课程信息按学分降序保存永久表“课程”中。select*fromcourseorderby学分desc;intotable课程SQL关系数据库查询语言共109页,您现在浏览的是第55页!本章要点VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第56页!表4-1SQL语言的9个命令动词

SQL功能命令动词数据查询Select数据操作插入记录Insert更新记录Update删除记录Delete数据定义定义基本表或索引Create删除基本表或索引Drop修改基本表或索引AlterSQL关系数据库查询语言共109页,您现在浏览的是第57页!8.2.1SQL语言基本数据类型1.数值型Integer、Float(n)、Double、Numberic(p,q)

2.字符型Char(n)、Text/Memo、Binary3.日期、时间型Date、Time、DateTime4.逻辑型Boolean5.货币型Money6.OLE型GeneralVisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第58页!8.2.2创建表例:创建“人才档案”数据库的基本表,已知有:人才档案(编号,姓名,性别,出生日期,学历,政治面貌,民族,工资现状,工作简历,照片)VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第59页!8.2.3修改表结构例:修改“人才管理”数据库中已有表的结构,在“人才档案”表中增加一个“备注”字段。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第60页!格式:

createtable|dbf表名(

字段名1类型(宽度[,小数位数])[null|notnull][check规则|[error信息]][default表达式][primarykey|unique],字段名2…,[foreignkey表达式tag表达式references表名1])一、表的定义SQL关系数据库查询语言共109页,您现在浏览的是第61页!Eg2:用SQLCREATE命令建立“职工”表createtable职工

(;

仓库号C(5),;

职工号C(5)primarykey,;

工资Icheck(工资>=1000and工资<=5000);error"工资值的范围在1000-5000!";default1200,;foreignkey仓库号tag仓库号references仓库)SQL关系数据库查询语言共109页,您现在浏览的是第62页!格式一:添加新字段altertable

表名;add字段名类型(宽度)……

eg1:为订购单表增加一个货币类型的总金额字段altertable

订购单;add总金额Ycheck总金额>0;error“总金额应该大于0!”[check规则|[error信息]][default表达式][primarykey|unique]三、修改表结构SQL关系数据库查询语言共109页,您现在浏览的是第63页!格式三:更改字段名altertable

表名;renamecolumn

字段名to新字段名eg3:将订购单表的总金额字段名改为金额altertable订购单;renamecolumn总金额to金额SQL关系数据库查询语言共109页,您现在浏览的是第64页!格式五:修改或定义有效性规则altertable

表名alter

字段名setcheck…error…eg5:修改或定义总金额字段的有效性规则

altertable订购单1;alter总金额setcheck总金额>100;error“总金额应该大于100!”SQL关系数据库查询语言共109页,您现在浏览的是第65页!8.3数据更新8.3.3删除记录8.3.2更新记录8.3.1插入记录VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第66页!8.3.2更新记录在SQL语言中,更新数据表中的数据可使用Update语句。Update<表名>Set<字段名>=<表达式>[,<字段名>=<表达式>][,……][Where<条件表达式>]

例:更新“人才管理”数据库中的“人才档案”表中的数据,将所有的“政治面貌”字段取值为“党员”更新为“团员”。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第67页!格式1:insertinto表名;values(表达式1,表达式2,…,表达式n)格式2:insertinto表名(字段名1,字段名2,…);values(表达式1,表达式2,…)一、插入记录SQL关系数据库查询语言共109页,您现在浏览的是第68页!格式:update

表名;set

字段名1=表达式1,字段名2=表达式2….;[where…]说明:(1)当不使用where时,则更新全部记录二、更新记录SQL关系数据库查询语言共109页,您现在浏览的是第69页!Eg3:将course表中课程编号为“01”的课程的学分加2分。Eg4:将成绩大于70分的的所有课程的成绩提高10%。updatecourseset学分=学分+2where课程编号="01"updatescoreset成绩=成绩*1.1;Where成绩>70SQL关系数据库查询语言共109页,您现在浏览的是第70页!Eg1:将teacher表中职称为助教的教师信息删除。deletefromteacherwhere职称="助教"SQL关系数据库查询语言共109页,您现在浏览的是第71页!8.4数据查询 8.4.4嵌套查询8.4.3条件查询8.4.2基本查询8.4.1Select语句8.4.6排序查询8.4.7连接查询8.4.5分组查询VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第72页!8.4.1Select语句VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第73页!8.4.2基本查询1.检索表中所有的记录和字段例:利用“人才档案”表中的数据创建一个查询,其结果包含“人才档案”表所有字段。检索表中所有的记录和字段。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第74页!8.4.2基本查询3.检索表中指定的字段和产生新字段例:利用“人才档案”表中的数据创建一个查询,其结果包含“编号”、“姓名”、“性别”和“学历”,并增加一个“年龄”字段。即检索数据库表中指定的字段和产生新字段。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第75页!8.4.3条件查询2.检索表中指定的字段和指定的记录例:利用“人才档案”表中的数据创建一个查询,其结果包含“编号”、“姓名”、“性别”、“出生日期”、“工资现状”5个字段的内容,只选择“工资现状”超过7000元的记录。即检索数据库表中指定的字段和指定的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第76页!8.4.4嵌套查询2.用于In短语的子查询例:利用“专业特长”和“人才档案”表中的数据创建一个查询,查找“专业”与“计算机”相关的记录。即检索数据库中,其“父”表中某字段值与“子”表中某字段值其中一个相匹配的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第77页!8.4.4嵌套查询4.用于Any的子查询例:利用“求职期望”和“岗位类别”表中的数据创建一个查询,查找与“企业性质”为“全民”表中“岗位编号”相等的任意一个记录。即检索数据库中,其“父”表中某字段值等于“子”表中某字段值任意一个的记录。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第78页!8.4.5分组查询例:利用“人才档案”表中的数据创建一个查询,统计不同学历的人数。即对数据库表中数据进行分类统计。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第79页!8.4.7连接查询1.自然连接例:利用“人才档案”表和“专业特长”表中的数据创建一个查询,其结果包含“人才档案”表中的“编号”、“姓名”、“性别”、“出生日期”、“工资现状”、“政治面貌”6个字段和“专业特长”表中的“专业”、“专业年限”、“职称”、“外语水平”4个字段,共10个字段的内容。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第80页!8.4.7连接查询3.右连接例:利用“人才档案”表和“专业特长x”表中的数据创建一个查询,其结果包含“人才档案”表中的“编号”、“姓名”、“性别”、“出生日期”、“工资现状”、“政治面貌”6个字段和“专业特长x”表中的“专业”、“专业年限”、“职称”、“外语水平”4个字段,共10个字段的内容。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第81页!说明:INNERJOIN(内联接)等价于JOIN:两个表都要满足联接条件。LEFTJOIN(左联接)(*=):左表任意,右表满足联接条件,即受左表限制。RIGHTJOIN(右联接)(=*):右表任意,左表满足联接条件,即受右表限制。FULLJOIN(全联接)左右表都任意。(1)内部连接{InnerJoin)VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第82页!(2)外部连接(OuterJoin)①左外连接也叫左连接(LeftOuterJoin),其系统执行过程是左表的某条记录与右表的所有记录依次比较,若有满足连接条件的,则产生一个真实值记录;若都不满足,则产生一个含有NULL值的记录。接着,左表的下一记录与右表的所有记录依次比较字段值,重复上述过程,直到左表所有记录都比较完为止。连接结果的记录个数与左表的记录个数一致。VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第83页!【例8-26】右联接。SELECTxsdb.学号,笔试FROMxsdb.DBFRIGHTJOINjsj.DBF;ONxsdb.学号=jsj.学号③全外连接也叫完全连接(FullJoin),其系统执行过程是先按右连接比较字段值,然后按左连接比较字段值,重复记录不列入查询结果中。【例8-27】全联接。SELECTxsdb.学号,笔试FROMxsdb.DBFFULLJOINjsj.DBF;ONxsdb.学号=jsj.学号VisualFoxPro

应用基础与面向对象程序设计教程SQL关系数据库查询语言共109页,您现在浏览的是第84页!1、无条件查询:SELECT…FROM…Eg1:将student表中的专业信息检索出来。Eg2:将student表中的专业信息检索出来,并去掉重复元组。Eg3:从student表中检索出学生的学号、姓名、专业信息。Eg4:查询score表中的所有信息。方法一:方法二:

select专业fromstudent

selectdistinct专业fromstudentselect学号,姓名,专业fromstudentselect*fromscoreselect学号,课程编号,成绩fromscoreSQL关系数据库查询语言共109页,您现在浏览的是第85页!2、条件查询格式:SELECT…FROM…WHERE…Eg1:查询成绩大于80分的学号。Eg2:从score表中检索出选修了课程编号为“02”的,并且成绩大于80分的成绩信息。selectdistinct学号fromscore;where成绩>80select*fromscore;where课程编号="02"and成绩>80SQL关系数据库查询语言共109页,您现在浏览的是第86页!Eg4:从student表中检索出性别为“男”且入学时间为1996年9月7日的学生的学号、姓名、性别、专业和年龄信息。select学号,姓名,性别,专业,;year(date())-year(出生日期)as年龄;fromstudent;where入学时间={^1996-09-07}and性别=“男”SQL关系数据库查询语言共109页,您现在浏览的是第87页!3、多表联接查询:格式:SELECT…FROM表1,表2,…;

WHERE查询条件and连接条件<表名1>.<公共字段名>=<表名2>.<公共字段名>连接条件SQL关系数据库查询语言共109页,您现在浏览的是第88页!Eg3:检索学号为“199648101”的学生姓名以及所选修的课程名称和授课教师姓名。

select姓名,课程名称,教师姓名;fromstudent,course,score,teacher;wherestudent.学号=score.学号and;course.课程编号=score.课程编号and;course.教师编号=teacher.教师编号and;student.学号="1996468101"SQL关系数据库查询语言共109页,您现在浏览的是第89页!格式:ORDERBY<字段名>[ASC|DESC][,<字段名>]ASC|DESC]……select…from…[where…]orderby字段名1[asc|desc],

字段名2[asc|desc]…二、排序查询:SQL关系数据库查询语言共109页,您现在浏览的是第90页!1)orderby对最终结果进行排序,位置在最后2)asc/desc在排序的字段名后,默认为升序3)按多列排序时,各字段名之间用“,”相隔注意SQL关系数据库查询语言共109页,您现在浏览的是第91页!1、确定范围格式:BETWEEN……AND……

表示在…和…之间包含界值NOTBETWEEN……AND……

表示不在…和…之间注意SQL关系数据库查询语言共109页,您现在浏览的是第92页!2、确定集合格式:字段名[NOT]IN(表达式1,表达式2,…)Eg1:查询选修了课程编号为“02”或“05”或“04”,并且成绩在80分以上的学生的学号、课程编号和成绩。select

学号,课程编号,成绩;fromscore;where

课程编号in("02","04","05")and成绩>=80

SQL关系数据库查询语言共109页,您现在浏览的是第93页!3、部分匹配查询格式:字段名like字符串常量通配符:%:0个或多个字符

_:一个字符SQL关系数据库查询语言共109页,您现在浏览的是第94页!4、不等于(!=)Eg1:查询家庭住址在哈尔滨并且不是学计算机科学与技术专业的学生的信息。

select*fromstudent;where家庭住址="哈尔滨"and专业!="计算机科学与技术"SQL关系数据库查询语言共109页,您现在浏览的是第95页!Eg1:统计授课教师的数目。Eg2:统计student表中有多少个学生记录。selectcount(distinct教师编号)as人数fromcourseselectcount(*)as人数fromstudentSQL关系数据库查询语言共109页,您现在浏览的是第96页!①用在select后②count(*):计算关系中所含元组个数③as新字段名:给计算结果指定字段名注意SQL关系数据库查询语言共109页,您现在浏览的是第97页!学号课程编号成绩XS0401C00296XS0402C00884XS0401C00367XS0403C01055XS0402C00782XS0402C00365XS0402C00989XS0401C00775学号课程编号成绩XS0401C00296XS0401C00367XS0401C00775XS0402C00884XS0402C00782XS0402C00365XS0402C00989XS0403C01055学号总分平均分最高分最低分XS040116381.29667XS0402320808965XS040355555555SQL关系数据库查询语言共109页,您现在浏览的是第98页!学号课程编号成绩XS0401C00296XS0402C00884XS0401C00367XS0403C01055XS04

温馨提示

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

评论

0/150

提交评论