实验八.docx

上传人:b****2 文档编号:23126692 上传时间:2023-05-08 格式:DOCX 页数:14 大小:490.19KB
下载 相关 举报
实验八.docx_第1页
第1页 / 共14页
实验八.docx_第2页
第2页 / 共14页
实验八.docx_第3页
第3页 / 共14页
实验八.docx_第4页
第4页 / 共14页
实验八.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验八.docx

《实验八.docx》由会员分享,可在线阅读,更多相关《实验八.docx(14页珍藏版)》请在冰豆网上搜索。

实验八.docx

实验八

实验八SQL语言

【实验目的】

1.掌握SQL语言的数据定义功能:

表的定义,表结构修改,删除,视图的定义

2.熟练掌握SQL语言的数据操作功能:

数据的插入,更新,删除。

3.熟练掌握数据的简单查询、连接查询、带特殊运算符的条件查询、排序查询、分组与计算查询、别名与多表查询、嵌套查询。

4.掌握查询结果的处理。

【实验内容】

1.数据定义。

(1)创建一个数据库rsgl(人事管理)

在命令窗口输入:

Createdatabasersgl

执行命令,创建一个regl数据库,如图8-1所示。

图8-1

(2)创建一个表bmsz(部门设置表),组成字段:

部门名称:

(C,20)、部门岗位人数(N,2)和部门实际人数(N,2)。

在命令窗口输入:

CREATETABLEbmsz(部门名称c(20)primarykey,部门岗位人数N

(2),部门实际人数N

(2))

LISTSTRUCTURE

执行上面两条命令,VisualFoxPro系统主窗口显示如图8-2所示

图8-2

以上命令用primarykey建立了主关键字。

用MODIFYDATABASErsgl命令打开数据库设计器,可以看到显示结果如图8-3所示。

图8-3数据库设计器中的bmsz表

注意:

在书写VisualFoxPro命令式所有的标点符号、括号、运算符等都必须在英文状态下输入,否则将显示“语法错误”。

(3)创建一个表zgqk(职工信息表)组成字段:

编号(C,10)、姓名(C,8)、性别(C,2)、学历(C,6)、部门(C,20)、住址(C,50)、出生日期(D)、简历(M)和照片(G)。

在命令窗口输入:

CREATETABLEzgqk(编号C(10)PRIMARYKEY,姓名C(8),学历C(10),性别C

(2)CHECK(性别="男"or性别="女")ERROR"性别只能是男或女"DEFAULT"男";

部门名称C(20),FOREIGNKEY部门名称TAG部门名称REFERENCESbmsz,住址C(50),出生日期D,简历M,照片G)

这将在当前打开的数据库(Rsgl)中建立zgqk表,其中用Check为性别字段建立了有效性规则(性别="男"or性别="女");用Error为该有效性设置了出错提示星星“性别只能是男或女”;用DEFAUIT子句为性别字段设置了默认值是“男”;另外还用子句“FOREIGNKEY部门名称tag部门名称REFERENCESbmsz”建立了zgqk表与bmsz表的联系,“FOREIGNKEY部门名称tag部门名称”在部门名称字段上建立一个普通索引,同时该字段也是连接字段;“REFERENCESbmsz”通过引用bmsz表的主索引“部门名称”与bmsz表建立关系。

如图8-4所示。

图8-4“数据库设计器”窗口

 

2.数据操作

(1)打开教师提供的zggz数据表。

在命令窗口中输入:

USEd:

\vf6\vfp98\cs\zggz.dbfEXCLUSIVE

执行以上命令后,右击数据库设计器中的zggz表,选择“浏览”选项,显示如图8-9所示。

图8-9插入的记录数据

注意:

命令中的文件位置“d:

\vf6\vfp98\cs\”为范例,实际操作中请根据实际情况进行设置。

(2)将zggz表中的所有记录的交通补足字段值更新为150.

在命令窗口中输入:

UPDATEzggzSET交通补足=150

执行命令后浏览该表,如图8-10所示。

图8-10修改后的记录数据

(3)为zggz表中基本工资小于1500的职工增加10%的基本工资。

UPDATEzggzSET基本工资=基本工资*1.1WHERE基本工资<1500

图8-11带条件修改

说明:

一般用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可以更新多个字段;如果不适用WHERE子句,则更新全部记录。

(4)删除zggz表中编号为“10003”的记录。

在命令窗口中输入:

DELEFROMzggzWHERE编号="10003"

执行命令后浏览该表,如图8-12所示。

图8-12删除记录

注意:

在VisualFoxPro中SQLDELETE命令是逻辑删除记录。

如要物理删除记录,继续使用PACK命令。

 

4.单表查询

依照图8-13为表zgqk输入数据:

(1)显示zgqk(职工信息表)中的所有记录。

在命令窗口中输入:

SELECT*FROMzgqk

命令中的“*”表示输出显示所有字段,数据来源是zgqk表,表中的内容以浏览方式显示。

(2)显示zgqk(职工情况表)中的部门。

SELECTDISTINCT部门名称FROMzgqk

显示如图8-14所示。

图8-14显示无重复记录

其中DISTINCT表示显示无重复结果。

(3)显示zggz(职工工资表)中的所有记录,并将奖金一项加50元。

在命令窗口中输入:

SELECT编号,基本工资,津贴,奖金+50AS奖金,交通补足FROMzggz

执行命令后,屏幕显示如图8-15所示。

图8-15显示调整后的记录

(4)显示zgqk表中所有男职工的编号、姓名和性别字段值。

在命令窗口中输入:

SELECT编号,姓名,性别FROMzgqkWHERE性别="男"

执行命令后,屏幕显示如图8-16所示。

图8-16显示所有男职工记录

(5)显示zgqk表中出生日期在1970年1月1日和1979年12月31日之前的编号、姓名、出生日期。

在命令窗口中输入:

SELECT编号,姓名,出生日期FROMzgqk;

WHERE出生日期BETWEEN{1970-01-01}AND{1979-12-31}

执行命令后,屏幕显示如图8-17所示。

图8-17显示20世纪70年代的员工记录

注意:

在操作此命令前,需把“工具”菜单的“选项”命令中“常规”选项卡的“严格的日期格式”设置为0—关闭,否则讲出现报错信息,如图8-18所示。

图8-18提示设置严格日期格式

(6)显示zgqk表中姓李的职工的编号,姓名,部门名称,出生日期。

在命令窗口中输入:

SELECT编号,姓名,部门名称,出生日期FROMzgqk;

WHERE姓名LIKE"李%"

执行命令后,屏幕显示如图8-19所示。

图8-19显示姓李职工记录

说明:

LIKE为字符串匹配运算符,通配符“%”表示0个或多个字符,另外还有一个通配符“_”下划线表示一个字符。

(7)按出生日期降序显示zgqk表中的编号,姓名,出生日期。

在命令窗口中输入:

SELECT编号,姓名,出生日期FROMzgqk;

ORDERBY出生日期DESC

执行命令后,屏幕显示如图8-20所示。

图8-20降序排序查询

(8)按基本工资的升序显示zggz表中的编号,基本工资,津贴。

在命令窗口中输入:

SELECT编号,基本工资,津贴FROMzggzORDERBY基本工资ASC

执行命令后,屏幕显示如图8-21所示。

图8-21升序排序查询

(9)计算所有员工的基本工资总和。

(新加的不涉及分组的简单统计)

在命令窗口中输入:

SELECTSUM(基本工资)AS基本工资FROMzggz

执行命令后,屏幕显示如图8-22所示。

(10)统计各部门的人数

在命令窗口中输入:

SELECT部门名称,COUNT(部门名称)AS部门人数FROMzgqk;

GROUPBY部门名称

执行命令后,屏幕显示如图8-23所示。

图8-23统计查询

2多表查询

(1)查询并显示每个职工的编号,姓名,职称,基本工资。

在命令窗口中输入:

SELECTzgqk.编号,zgqk.姓名,zgqk.职称,zgqk.出生日期,zggz.基本工资;

FROMzgqk,zggz;

WHEREzgqk.编号=zggz.编号

执行命令后,屏幕显示如图8-24所示。

图8-24连接查询职工工资

说明:

在联接操作中,要使用别名做前缀。

如在减少命令的FROM之后有两个以上关系,那么这几个关系之间肯定有一种联系,否则无法构成检索表达式,当FROM之后的多个关系中含有相同的属性名时,其相同属性名的值应相等,并且必须用关系前缀直接指明属性所属的关系,如zgqk.编号,“.”前面是关系名,后面是属性名。

(2)查询技术部门的所有职工的姓名、职称,部门名称,基本工资。

在命令窗口中输入:

SELECTa.编号,姓名,职称,部门名称,基本工资;

FROMzgqka,zggzb;

WHEREa.编号=b.编号ANDa.部门名称="技术部"

执行命令后,屏幕显示如图8-25所示。

图8-25连接查询技术部门的职工基本工资情况

说明:

SQL语序在FROM短语中为关系名定义别名来简化长表名,格式为:

<关系名><别名>,当属性名不同时可以省略关系名。

(3)显示技术部门的男职工的基本工资

在命令窗口中输入:

SELECT姓名,性别,部门名称,基本工资;

FROMzgqk,zggz;

WHEREzgqk.编号=zggz.编号AND部门名称="技术部"

执行命令后,屏幕显示如图8-26所示。

图8-26连接筛选查询

(4)显示基本工资在1300至1600之间的职工的姓名,职称和基本工资。

在命令窗口中输入:

SELECT姓名,职称,基本工资;

FROMzgqk,zggz;

WHEREzgqk.编号=zggz.编号AND基本工资BETWEEN1300AND1600

执行命令后,屏幕显示如图8-27所示。

图8-27BETWEEN在查询中的应用

【实验练习】

1.打开实验八下的“学生管理”数据库,要求如下:

(数据库会发给学生)

1)插入一条记录到学生选课表中,学号为“99222”,姓名为“张三”,出生日期为1991年1月2日。

2)将“99003”选修“102”课程的成绩修改为85分。

3)删除学时数低于50的课程。

4)查询“学生选课”表的全部记录。

5)查询“学生情况”表所有记录的学号、姓名、性别。

6)查询在1980年1月1日以后出生的女生信息。

7)查询学生选修课程的学号、姓名、课程号、成绩。

8)查询选修大学物理的学号、成绩。

9)查询所有成绩的平均分、最高分、最低分。

10)查询每个人的总分。

11)查询被两个人以上选修的课程的平均分。

2.数据定义(选做)

1)创建一个zggl(职工管理系统)的数据库,在其中创建以下数据表。

2)创建一个表zggz(职工工资表),组成字段:

编号(C,10)、基本工资(N,6)、津贴(N,4)、奖金(N,4)和纳税(N,4)。

3)创建一个表rcxq(人才需求表),组成字段:

部门名称(C,20)、人数(N,2)、学历(C,6)和岗位(C,10)。

4)创建一个表zgyj(职工业绩表),组成字段:

序号(C,6)、姓名(C,8)、项目名称(C,20)、类别(C,10)、量化(N,2)和项目简介(M)。

5)将zggz表中的“纳税”字段改为“交通补足”。

6)为rcxq表增加一个“年龄”字段(数值类型),同时为之定义字段级有效性规则:

年龄大于30,小于50。

7)修改或定义rcxq表“年龄”字段的有效性规则

8)删除表rcxq表“年龄”字段的有效性规则。

9)删除rcxq表的“年龄”字段

10)删除rcxq表

【实验思考】

1.SQL的9个命令动词是哪些,其功能分别是什么?

2.插入,更新和删除记录如何用SQL实现?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1