《管理信息系统》上机(1130)
数据库的设计与实施
实验环境:个人计算机,WindowsXP操作系统,VisualFoxPro6.0数据库管理软件。
SQL简介:结构化查询语言(StructuredQueryLanguage),简称SQL,由命令、子句、运算符和函数等基本元素构成,通过这些元素组成语句对数据库进行操作。其功能包括数据定义、操纵、查询、控制、管理等方面,是一个应用范围很广、功能极强的关系数据库语言。现已成为关系数据库的标准语言。
实验内容:
1、设置适当文件夹为默认目录。
2、创建“学籍管理”数据库。
3、SQL表结构数据定义的命令关键字是createtable。
1)在VFP命令窗口中输入如下SQL命令,创建“学生情况”数据库表,并观察效果。
createtable学生情况(学号c(6)primarykey,姓名c(8),入学成绩n(5,1)check(入学成绩>=0and入学成绩<=600)error“入学成绩:0——600”)
注释:c表示字符型,括号里数字是数据宽度,“学号”是主键,用primarykey说明,用check为“入学成绩”说明有效性规则,用error说明了出错提示信息。
2)在VFP命令窗口中输入如下SQL命令,建立“学生成绩”数据库表。
createtable学生成绩(学号c(6),姓名c(8),语文n(3,0),数学n(3,0),总分n(5,1)default100,foreignkey学号tag学号references学生情况)
注释:n表示数值型,括号里第一个数是数据宽度,第二个数是小数位数。用default为“总分”属性值说明了默认值(100),用“foreignkey学号”在该表的“学号”属性上建立了一个普通索引,同时说明该属性是联接属性,通过引用“学生情况”表的主键“学号”(学号tag学号references学生情况)与“学生情况”表建立联系。
4、SQL表结构数据更新命令关键字是altertable
1)在VFP命令窗口中输入如下SQL命令,为“学生情况”表增加一个“性别”属性。
altertable学生情况add性别c(2)check性别=”男”or性别=”女”error“性别只能为男或女”
2)在VFP命令窗口中输入如下SQL命令,将“学生成绩”表的“总分”属性的宽度由原来的5改为6。
altertable学生成绩alter总分n(6,1)
3)在VFP命令窗口中输入如下SQL命令,修改“学生情况”表的“入学成绩”的有效性规则为200分到600分。
altertable学生情况alter入学成绩setcheck(入学成绩>=200and入学成绩<=600)error“入学成绩:200——600”
4)在VFP命令窗口中输入如下SQL命令,删除“学生情况”表的“入学成绩”的有效性规则。
altertable学生情况alter入学成绩dropcheck
5)在VFP命令窗口中输入如下SQL命令,将“学生成绩”表的“语文”属性名改为“英语”。
altertable学生成绩renamecolumn语文to英语
6)在VFP命令窗口中输入如下SQL命令,删除“学生成绩”表中“英语”属性。
altertable学生成绩dropcolumn英语
7)在VFP命令窗口中输入如下SQL命令,将“学生成绩”表的“姓名”定义为侯选索引(侯选键),索引名是xm。
altertable学生成绩addunique姓名tagxm
8)在VFP命令窗口中输入如下SQL命令,删除“学生成绩”表的侯选索引xm。
altertable学生成绩dropuniquetagxm
5、创建“图书管理”数据库,并用SQL的CREATETABLE命令在该数据库中创建如下3个表结构(提示:日期型数据类型符号是D)。
Createtablebook(索书号c(10),书名c(18),作者c(10),图书登记号c(10),出版社c(10),价格n(10,2))
6、试用SQL的ALTERTABLE命令对以上3个表做如下修改:
1)将book表的出版社字段的宽度更新为18;
Altertablebookalter出版社c(18)
2)设置book表的价格字段的有效规则是:价格大于0;
Altertablebookalter价格setcheck(价格>0)
3)在borrows表中,创建以借书证号为索引表达式,索引名为jszh的主索引;
Altertableborrowsaddprimarykey借书证号tagjszh
4)为loans表增加一个“超期罚款”字段,数据类型为数值型,宽度为5,小数位数为1。
Altertableloansadd超期罚款n(5,1)
7、SQL数据插入操作命令是:
INSERTINTO数据表字段名列表VALUES(数据列表)
功能:将新记录插入指定表中,分别用数据列表中的常量对字段名列表中的字段赋值。若省略字段名列表,则新插入的记录必须在每个字段上均有值。
试用此命令分别给3个表添加如下记录。
Insertintoloansvalue(“02001”,”T00201”,{^2011-3-20},0.0)
8、SQL表记录更新命令是:
UPDATE数据表SET字段名=表达式WHERE条件表达式
功能:对表中的一条或多条记录的某些字段值进行修改。
试用此命令对以上3表做如下更新:
1)对borrows表中系名字段值做如下替换:将所有“信息系”替换为“信管系”;
Updateborrowsset系名=”信管系”where系名=”信息系”
2)将book表中所有科学出版社出版图书的价格字段值增加2;
Updatebookset价格=价格+2where出版社=”科学”
3)假设每本书借期为60天,超过1天罚款1角,试计算并填充loans表中超期罚款字段值。(提示:VFP的date()函数返回当前系统日期。)
Updateloansset超期罚款=0.1(date()-借书日期-60)wheredate()-借书日期>60
9、删除数据表的SQL命令是:droptable表名,试用此命令删除“学籍管理”数据库中的2个表。
10、SQL查询
简单查询命令语句:
SELECT字段表达式列表FROM表列表WHERE条件表达式
功能:根据WHERE子句的条件表达式,从FROM子句指定的表中找出满足条件的记录,再按照SELECT子句中的目标字段表达式,选出记录中的属性值形成查询结果表。
1)从book表中查询图书信息。
selectfrombook
注:其中SELECT子句中的表示表中所有列。
2)查询所有学生的借书证号和姓名。
Select借书证号,姓名fromborrows
3)查询借书日期在2011年3月20日到2011年5月1日之间(含)的借书信息。
selectfromloanswhere借书日期between{^2011-3-20}and{^2011-5-1}
注:SQL比较运算符有:
算术运算符:>>==<<=<>(不等于)
(not)betweenand:判断值是否在指定值之间。
(not)like:进行模式匹配,表达式中可使用通配符,%表示任意字符串,_表示任一字符。
(not)in:判断值是否在指定列表集合中。
4)查询最便宜图书价格。
Selectmin(价格)frombook
注:SQL常用统计函数如下:
Avg:用来计算指定字段中的值的平均数。
Count:用来计算所选择记录的个数。
Sum:用来计算指定字段中值的总和。
Max:用来计算指定字段中的最大值。
Min:用来计算指定字段中的最小值。
5)统计图书的总数。
Selectcount()frombook
6)查询图书名以“教程”结束的图书名和出版社。
select书名,出版社frombookwhere书名like“%教程”
7)查询所有计算机系学生的借书证号和姓名。
select借书证号,姓名fromborrowswhere系名=”计算机系”
8)查询借书证号为“01001”的学生借书册数。
Selectcount()fromloanswhere借书证号=”01001”
9)查询科学出版社出版图书的平均价格。
selectavg(价格)frombookwhere出版社=”科学”
10)查询图书登记号为“T00201”的图书超期罚款总额。
selectsum(超期罚款)fromloanswhere图书登记号=”T00201”
11)查询“信管系”所有姓“田”同学的借书证号。
select借书证号fromborrowswhere系名=”信管系”and姓名like”田%”
|
|