实验二 数据库的创建与连接.docx
《实验二 数据库的创建与连接.docx》由会员分享,可在线阅读,更多相关《实验二 数据库的创建与连接.docx(22页珍藏版)》请在冰豆网上搜索。
实验二数据库的创建与连接
实验二数据库的创建与连接
一、目的和要求
1.掌握PowerBuilder数据库的创建与连接方法。
2.创建一个ASA数据库。
3.为数据库配置ODBC数据源和DBProfile(数据库描述),在PB环境中连接数据库
4.利用PB的数据库画板为数据库创建表、输入数据、查询数据
5.熟悉SQL语言,利用SQL语句建表、输入数据、查询数据、修改数据、删除数据
二、实验准备
1.启动Windows操作系统,如果在Windows操作系统的控制面板中没有安装ODBC32,必须进行ODBC安装。
2.进入PB集成环境,如果PB安装时没有安装AdaptiveServerAnywhere8.0数据库管理系统,选择安装ASA数据库
3.复习创建数据库的有关内容和SQL语言
三、实验内容
1.创建AdaptiveServerAnywhere数据库
创建ASA数据库的步骤如下:
●单击工具栏上的Database图标按钮
。
●在弹出的Database画板中,打开Object子窗口,展开“ODBODBC”项下的Utilities目录,如图2.1。
图2.1
●双击Utilities目录下的“CreateASADatabase”项,弹出“CreateAdapativeServerAnywhere”对话框,如图2.2。
●在“ASAVersion”中选择AdaptiveServerAnywhere8.0。
●单击“DatabaseName”列对应的按钮“…”,弹出“CreateLocalDatabase”对话框,如图2.3。
在对话框中选择目录D:
\mypbex,在文件名中输入“student.db”,单击“保存”按钮,返回“CreateAdapativeServerAnywhere”对话框。
图2.2
图2.3
●使用默认的用户UserID项“dba”和默认的Password项“sql”,如图2.2。
(注意:
如果修改了用户名和口令,一定要记住,否则以后连接不上数据库)
●在“UseTransaction”选项上,取消复选框的选中。
(如果不取消本选项,数据库就带有日志,以后使用时,数据库对应的目录不能改变)
●单击“OK”按钮,PB在D:
\mypbex目录下创建一个ASA数据库student.db,同时为数据库配置了一个同名的ODBC和DBProfile,并且已经连接到新建的数据库(可以看到数据库名前的图标上有一个绿色的小勾)。
(注意:
对于新建数据库,不需要再配置ODBC数据源和DBProfile)
2.在PB开发环境中连接其他数据库
前面创建ASA数据库时,系统自动为我们完成了创建ODBC、DBProfile和连接数据库的工作。
当我们要连接一个外部数据库,如Access数据库,SQLServer数据库、Sybase数据库或Oracle数据库,以及在其他计算机建立并拷贝到本机的ASA数据库,就需要完成配置ODBC数据源、DBProfile和连接数据库的操作。
(1)配置ODBC数据源
配置ODBC数据源的步骤如下:
●在PB数据库画板的Objects子窗口中,双击ODBODBC项下的Utilities项的“ODBCAdministrator”项,弹出“ODBC数据源管理器”对话框,如图2.4。
图2.4
●选择用户DSN标签页,单击“添加”按钮,弹出“创建新数据源”对话框,如图2.5。
图2.5
●在“创建新数据源”的对话框中提供了一个系统支持的数据库驱动程序列表框,选择合适的驱动程序。
本例选择“AdaptiveServer8.0”,单击“完成”按钮,将弹出“ODBCConfigurationforAdaptiveServerAnywhere8.0”对话框。
如图2.6。
图2.6
●在ODBC标签页的“DataSourceName”项中输入要配置的ODBC数据源名,如mydatabase。
●选中Login标签页,输入UserID和Password。
,如图2.7,对ASA数据库,缺省UserID为“DBA”,Password为“SQL”。
●选中Database标签页,在“Databasefile”项中输入数据库文件名(带路径)或者单击“Browse”按钮选择数据库名。
如图2.7
图2.7
●单击“确定”返回到“ODBC数据源管理器”对话框。
注意:
不同的数据库类型在选择数据库的操作上会有所不同
●这时可以看到新建的数据源“mydatabase”已经加入到数据源列表中,单击“确定”按钮,完成ODBC数据源的配置。
(2)配置DBProfile
配置DBProfile的步骤如下:
●在PB数据库画板的Objects子窗口中,选择“ODBODBC”项,单击鼠标右键,选择“NewProfile…”菜单项,弹出“DatabaseProfileSetup-ODBC”对话框,如图2.8所示。
图2.8
●选择“Connection”标签页,在“ProfileName”项中输入DBProfile名,这里为mydb_pro;在“DataSource”下拉列表中,单击“”按钮,选择ODBC数据源,这里选择mydatabase。
●单击“OK”按钮,完成DBProfile的配置。
这时在“ODBODBC”目录下可看到数据库新配置的DBProfile“mydb_pro”。
●要重新配置,可以选中“mydn_pro”,单击鼠标右键,再弹出菜单中选择“Properties”,重新弹出“DatabaseProfileSetup-ODBC”对话框,修改配置
(3)在PB环境连接数据库
在PB环境连接数据库步骤如下:
●在PB数据库画板的Objects子窗口中,选择“ODBODBC”项。
●在“ODBODBC”项下列出了所有可以连接的数据库的DBProfile,选中要连接的DBProfile,如“mydb_pro”。
●单击鼠标右键,在菜单中选择“Connect”连接数据库。
如果需要断开与数据库的连接,可以在弹出菜单中选择“Disconnect”菜单项。
对于连接成功的数据库,会在相应的DBProfile前面的图标上打上“”标记。
3.使用PB的数据库画板创建表
(1)需要创建的数据库表如表2.1至2.7所示
注意:
创建好数据库表的数据库文件最好用U盘拷贝出去,以备以后开发程序时使用
表2.1部门表(表名:
department)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
Dep_id
部门ID
Char
4
No
name
部门名称
Varchar
30
No
Introduction
部门简介
Varchar
100
yes
表2.2专业表(表名:
major)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
major_id
专业ID
Char
6
No
name
专业名称
Varchar
30
No
Dep_id
所属部门
Char
4
No
Introduction
专业简介
Varchar
100
yes
学生表(表名:
student)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
Student_id
学生ID
Char
11
No
name
姓名
Varchar
10
No
Sex
性别
Char
2
No
birthday
生日
date
No
grade
年级
char
4
No
nation
民族
Varchar
20
No
background
政治面貌
varchar
10
yes
Major
专业
char
15
no
native
籍贯
varchar
16
yes
address
地址
varchar
50
yes
表2.4教师表(表名:
teacher)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
teacher_id
教师ID
Char
6
No
name
姓名
Varchar
10
No
post
职称
Varchar
10
yes
Major_id
专业
char
6
no
表2.5课程表(表名:
course)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
course_id
课程ID
Char
6
No
name
课程名称
Varchar
40
No
Period
开课学期
Integer
No
Credit
学分
Unsignedsmallint
No
Kind
类型
varchar
10
No
Major_id
专业
char
6
No
表2.6课程安排表(表名:
arrange)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
Course_id
课程ID
Char
6
No
Teacher_id
教师ID
char
6
No
Year
年度
char
9
no
Term
学期
char
1
No
表2.7成绩表(表名:
grade)
字段名
意义
数据类型
宽度
Null
主键(primarykey)
Student_id
课程ID
Char
6
No
Course_id
教师ID
char
6
No
Year
年度
char
9
no
Term
学期
char
1
No
grade
成绩
decimal
(4,1)
yes
credit
学分
Unsignedsmallint
yes
(2)创建表
创建表2.1到表2.7的所有表,并使用给出的表名作为数据库表名。
在数据库中创建表的步骤如下:
●在Database画板的Objects子窗口中,首先连接数据库“mydb_pro”。
●展开“mydb_pro”数据库目录,选中“Tables”,单击鼠标右键,在弹出式菜单中单击“NewTables…”,出现表设计子窗口,如图2.9所示。
图2.9
●在表设计子窗口中,分别输入每个字段的名称ColumnName,选择数据类型,数据宽度,小数位宽度,是否允许为空以及默认值。
如student表中的student_id字段,ColumnName为student_id,数据类选择Char,字段宽度输入6,是否为空选择为No。
输入完一个字段后,按Tab键,会产生另一个字段,继续输入,直到一个表的所有字段录完。
●在输入表中的所有字段后,单击工具栏的“Save”图标按钮,弹出“CreateNewTable”对话框,如图2.10。
在TableName中输入表名(最好不要用汉字,而且首字母不要用数字),单击“OK”按钮保存新表。
图2.10
(3)建立主键
数据库表的主键用于唯一的标识表中的一条记录,插入的数据主键不能相同。
只有为表建立主键后才能进行数据的录入操作。
为数据库表建立主键的方法如下:
●按照表2.1到2.7确定在Database画板的Objects子窗口中,展开要操作的数据库目录,然后展开Tables目录,选择需要建立主键的表,并展开,选择“PrimaryKey”,按鼠标右键,在菜单中单击“NewPrimaryKey”菜单,弹出Primarykey窗口。
●的主键字段选中对应字段的复选框,
●单击工具栏的“Save”图标按钮,保存设置结果
4.使用PB的数据库画板管理数据
在PB的数据库画板中可以直接对数据库表进行数据操作,包括数据的输入、查询、修改、删除等。
(1)查询数据
查询数据的步骤如下:
●在Database画板的Objects子窗口中,展开数据库目录,展开Tables目录,选择要查询数据的表格,单击鼠标右键,光标移到“EditData”菜单项,弹出下一级菜单,有三个菜单项“Grid…”、“Tabular…”、“Freeform…”,分别对应三种显示风格,任选一项,该表数据出现在“Output”子窗口中。
(2)输入数据
输入数据的步骤如下:
●先完成查询数据的步骤
●如图2.11,单击工具栏“插入”图标,插入一条空记录
●按字段名输入数据,注意数据的宽度和格式
●单击工具栏“保存”图标,保存记录。
(3)修改数据
修改数据的步骤如下:
●先完成查询数据的步骤
●将鼠标移到需要修改的记录上,修改对应字段的数据
●单击工具栏“保存”图标,保存记录。
(4)删除数据
修改数据的步骤如下:
●先完成查询数据的步骤
●将鼠标移到需要删除的记录上,修改对应字段的数据
●单击工具栏“删除”图标,删除记录。
●单击工具栏“保存”图标,保存数据。
5.使用SQL语句创建表
通过PB创建表的过程非常麻烦,而且不可重用,简单的方法是通过SQL语句实现创建表的过程。
建表的语句如下:
//建Department表
Createtabledepartment(
Dep_idchar(4)notnullprimarykey,
Namevarchar(10)notnull,
Introductionvarchar(100)
);
//建major表
Createtablemajor(
Major_idchar(6)notnullprimarykey,
Namevarchar(30)notnull,
Dep_idchar(4)notnull,
Introductionvarchar(100)
);
//建student表
Createtablestudent(
Student_idchar(10)notnullprimarykey,
Namevarchar(10)notnull,
Sexchar
(1)notnull,
Birthdaydatenotnull,
Gradechar(4)notnull,
Nationvarchar(20)notnull,
Backgroundvarchar(10),
Major_idchar(6)notnull,
Nativevarchar(16),
Addressvarchar(50)
);
//建teacher表
Createtableteacher(
Teacher_idchar(6)notnullprimarykey,
Namevarchar(10)notnull,
Postvarchar(10),
Major_idchar(6)notnull
);
//建course表
Createtablecourse(
Course_idchar(6)notnullprimarykey,
Namevarchar(40)notnull,
Periodintegernotnull,
Creditunsignedsmallintnotnull,
Kindvarchar(10)notnull,
Major_idchar(6)notnull
);
//建Arrange表
Createtablearrange(
Course_idchar(6)notnull,
Teacher_idchar(6)notnull,
Yearchar(9)notnull,
Termchar
(1)notnull,
Primarykey(course_id,teacher_id)
);
//建Grade表
Createtablegrade(
Student_idchar(6)notnull,
Course_idchar(6)notnull,
Yearchar(9)notnull,
Termchar
(1)notnull,
Gradedecimal(4,1),
Creditunsignedsmallint,
Primarykey(student_id,course_id,year,term)
);
通过SQL语句建表的步骤如下:
●进入Database画板
●连接数据库
●单击菜单View|InteractiveSQL,打开一个ISQLSession窗口
●在窗口中输入建表SQL语句。
注意:
SQL语句可以拷贝、粘贴,并且同时执行多条SQL语句。
●单击工具栏中的图标
,执行SQL语句。
注意:
在执行建表SQL语句之前,应先将原存在的同名表删除,否则SQL语句执行会报错。
另外要看表建立是否成功,需要重新连接数据库(先断开,再重新连接)。
6.使用SQL语句管理数据
使用SQL语句能够完成所有的数据操作,包括增、删、改和查询操作。
使用Sql语句完成查询操作比PB数据库画板要灵活,PB数据库画板只能针对单表查询,而且是整表检索数据,而使用SQL语句可以只查询表中的某些字段和符合条件的部分记录,可实现多表联合查询。
(1)插入语句
语法:
INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]
VALUES(<常量1>[,常量2>]…);
示例:
向department表中插入一条记录:
Insertintodepartment
Values(‘0001’,’计算机系’,’计算机系有计算机应用和计算机硬件等本科专业’);
如果部分可以为空的字段不赋值,则需要把赋值的列指示出来,如:
Insertintodepartment(dep_id,name)
Values(‘0002’,’通信工程系’);
(2)修改语句
语法:
UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>]…
[WHERE<条件>];
示例:
将ID号为0002的记录的名称改为“电子系”
Updatedepartment
Setname=’电子系’
Wheredep_id=’0002’;
如果不加条件,将对所有记录进行修改,如:
Updatedepartment
Setintroduction=’’;
将所有记录的部分介绍置为空。
(3)删除语句
语法:
DELETEFROM<表名>[WHERE<条件>];
示例:
删除ID号为’0002’的记录
Deletefromdepartmentwheredep_id=’0002’;
如果不加条件将删除所有记录,如:
Deletefromdepartment;
(4)查询语句
语法:
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
在做查询语句前,最好先往表中插入一些数据:
//向department表中插入输入
//清空表department
Deletefromdepartment;
//插入数据
Insertintodepartment(dep_id,name)
Values(‘0001’,’计算机系’);
Insertintodepartment(dep_id,name)
Values(‘0002’,’通信工程系’);
Insertintodepartment(dep_id,name)
Values(‘0003’,’信息科学系’);
Insertintodepartment(dep_id,name)
Values(‘0004’,’数学系’);
//清空Major表
Deletefrommajor;
//插入数据
Insertintomajor(major_id,name,dep_id)
Values(‘000101’,’计算机硬件’,’0001’);
Insertintomajor(major_id,name,dep_id)
Values(‘000102’,’计算机应用’,’0001’);
Insertintomajor(major_id,name,dep_id)
Values(‘000201’,’通信工程’,’0002’);
Insertintomajor(major_id,name,dep_id)
Values(‘000202’,’自动化’,’0002’);
Insertintomajor(major_id,name,dep_id)
Values(‘000301’,’信号分析’,’0003’);
Insertintomajor(major_id,name,dep_id)
Values(‘000302’,’信号处理’,’0003’);
Insertintomajor(major_id,name,dep_id)
Values(‘000401’,’应用数学’,’0004’);
Insertintomajor(major_id,name,dep_id)
Values(‘000402’,’密码’,’0004’);
//清空学生表
Deletefromstudent;
//向学生表插入记录
Insertintostudent
Values(‘2005010001’,’李京’,’1’,’1985/02/05’,’2005’,’汉族’,’团员’,’000101’,’甘肃兰州’,’甘肃兰州’);
Insertintostudent
Values(‘2005010002’,’刘洋’,’1’,’1985/03/06’,’2005’,’汉族’,’团员’,’000101’,’江西南昌’,’江西南昌’);
Insertintostudent
Values(‘2005010003’,’刘军’,’1’,’1984/01/03’,’2005’,’回族’,’党员’,’000102’,’江苏镇江’,’江苏镇江’);
Insertintostudent
Values(‘2006020001’,’韩云’,’2’,’1985/07/03’,’2006’,’汉族’,’党员’,’00