vb经典教程第07章共八章
第7章 高级SQL编程
教学目标:
在各种应用软件中,数据库应用软件的数量相当巨大。作为一种优秀的开发工具,Visual Basic提供了相当强大的数据库访问能力,将Windows的各种先进特性与强大的数据库管理功能有机地结合在一起。
Visual Basic提供了一些工具,包括数据控件、数据绑定控件、数据访问对象(DAO)、远程数据对象和远程数据控件。
本章和下一章将对Visual Basic的数据库编程进行详细介绍。本章主要介绍一些数据库编程的基础知识。
SQL语言是关系型数据库管理系统(RDBMS)的标准语言,所有关系型数据库管理系统都对其提供了完整的支持,有些关系型数据库管理系统还对SQL语言进行了扩充。本章详细介绍SQL语言及其用法,并且在MS SQL Server2000(SP3)上完成所有的操作,同时还介绍了查询优化的相关技巧和一些SQL语言高级用法。本章的最后给出了在Visual Basic 6.0中使用SQL语句的方法和演示程序。
教学重点与难点:
数据定义语言 数据操纵语言 数据控制语言 其他高级SQL语言
使用Visual Basic 6.0开发数据库编辑程序
vb经典教程第07章共八章
298 Visual Basic 6.0 编程实用教程
7.1 概述
SQL语言是一种结构化的查询语言,全称是Structure Query Language,最早于1974年由Boyce和Chamberlain提出,1986年被ANSI定为关系型数据库的标准语言,后来被ISO采纳为国际标准。Transact-SQL(T-SQL)是Microsoft SQL Server(MS SQL Server)在SQL语言上的扩充,是MS SQL Server的核心。
7.1.1 SQL语言的分类
SQL语言主要包括3类,分别如下: ¾ 数据定义语言DDL(Data Definition Language),如create database、drop database、create table、drop table、alter table、create view、drop view、create index、drop index、create procedure、drop procedure、create trigger、drop trigger等,主要完成对数据库以及数据库中的表、视图、索引、存储过程、触发器等的创建和删除工作。
¾ 数据操纵语言DML(Data Manipulation Language),如select、insert、update、delete,主要完成数据的查询和存取等数据处理操作。
¾ 数据控制语言DCL(Data Control Language),如begin transaction 、commit transaction、rollback transaction、grant、revoke、deny,主要完成事务管理、数据的完整性、存取权限等控制操作。
7.1.2 SQL语言支持的数据类型
SQL语言支持多种标准数据类型,主要有: ¾ char(n)、varchar(n)、text:字符型,其中n表示其长度,范围是0~8000;text类型数据的最大长度为231-1,即2GB。
¾ nchar(n)、nvarchar(n)、ntext:宽字符型,其中n表示其长度,范围是0~4000;ntext类型数据的最大长度为230-1,即1GB。
¾ bigint、int、smallint、tinyint:整型数据,其中int也可以写为integer,占用字节数分别为8、4、2、1,数值表示范围分别为-263~267-1、-231~231-1、-215~215-1、0~255。
¾ bit:位数据,占用一个二进制位,表示0或者1。 ¾ float、real:近似数值型数据,数值表示范围分别为-1.79E+308~1.79E+308、-3.40E+38~-3.40E+38。
¾ decimal、numeric:精确数值型数据,数值表示范围是-1.00E38+1~1.00E38-1,两者功能完全相同。
¾ money、smallmoney:货币型数据,可以精确的表示货币数据到货币单位的千分之十,数值表示范围分别为-263~267-1、-214 748.3648~214 748.3647。
¾ datetime、smalldatetime:日期时间类型。 ¾ binary(n)、varbinary(n)、image:二进制数据类型,以二进制的形式存储数据,其中n表示其长度,范围是0~8000;image类型数据的最大长度为231-1,即2GB。
¾ null:空类型,没有任何数据内容。
vb经典教程第07章共八章
第7章 高级SQL编程 299
7.1.3 SQL语言支持的运算符
SQL语言通过各种运算符可以完成多种复杂的运算,它支持的运算符主要有: ¾ 算术运算符:+、-、*、/、%,分别表示加、减、乘、除、取余。 ¾ 位运算符:~、&、|、^,分别表示非、与、或、异或。 ¾ 比较运算符:=、<>、<、>、<=、>=,分别表示等于、不等于、小于、大于、小于等于、大于等于。
¾ 逻辑运算符:not、and、or、in、between and、like、all、any、exists,含义分别为:非、与、或、在集合内、在范围内、模式匹配、满足所有条件、满足其中至少一个条件、存在,其中exists在一定意义上等同于where子句。
注意:对于需要支持多种数据库系统或者有可能升级到其他数据库系统的应用程序来说,最好不要使用某种数据库系统对SQL语言的扩充部分(即非标准SQL),因为各种数据库系统往往是不兼容这些扩充的部分的。
1.7.4 SQL语言中的注释语句
注释是程序代码中不执行的文本字符串,用于说明代码或暂时禁用正在进行诊断的部分,使用注释对代码进行说明,可增加代码的可读性,并能够使代码更易于维护。
1.单行注释
单行注释使用--(双连字符)标识,从双连字符开始到行尾均为注释部分。该类型的注释语句可与要执行的代码处在同一行,也可另起一行。 例如下面的代码中使用了单行注释。
-- 对pubs库进行操作 use pubs
-- 显示Pubs库中authors表中的全部内容 select * from authors Go
其中,Use语句用于将当前数据库切换到指定的数据库,用户在登录到SQL Server时,通常被自动连接到 master 数据库。除非为每个用户的登录ID设置了各自的默认数据库。如果要操作master以外的数据库,每个用户都必须执行USE语句从 master 切换到另一个数据库。在切换数据库时,用户必须有那个数据库的安全帐户,该账号由数据库所有者提供。 GO命令不是 T-SQL 语句,而是可为osql和isql实用工具以及SQL查询分析器识别的命令。GO 命令标志批处理的结束,当实用工具在一行的前两个字节中读到字符 GO 时,则把从上一GO命令开始的所有代码作为一个批处理发送到服务器。
2.多行注释
多行注释使用/* ... */(正斜杠-星号对)标识,从开始注释对 (/*) 到结束注释对 (*/) 之
vb经典教程第07章共八章
300 Visual Basic 6.0 编程实用教程
间的全部内容均视为注释部分。该类型的注释可与要执行的代码处在同一行,也可另起一行,甚至可以在可执行代码内使用。对于多行注释,必须使用开始注释字符对 (/*) 开始注释,使用结束注释字符对 (*/) 结束注释。 下面的代码使用了多行注释:
/* 对pubs库进行操作
显示Pubs库中authors表中的全部内容 其中,GO命令标志批处理的结束 */ use pubs
select * from authors Go
在多行/* */注释不能跨越批处理,整个注释必须包含在一个批处理内。例如,在 SQL 查询分析器和 osql 实用工具中,如果Go出现在/*和*/分隔符之间的一行行首,则会将注释语句分成两部分,发送不匹配的注释分隔符,从而导致语法错误。
USE Northwind GO
SELECT * FROM Employees
/* 错误的多行注释 GO
这里GO命令将注释分成了两部分 */
SELECT * FROM Products GO
以上代码的执行结果如图7-1所示。
vb经典教程第07章共八章
第7
章 高级SQL编程 301
图7-1 错误的多行注释的执行结果
7.2 利用MS SQL Server学习SQL语言
MS SQL Server的核心是T-SQL,它是MS SQL Server在SQL语言基础上的扩展。MS SQL Server完全支持标准SQL语言。
利用MS SQL Server提供的企业管理器(SQL Server Enterprise Manager)和查询分析器(SQL Query Analyzer)可以方便、有效的学习SQL语言,下面主要对查询分析器进行简单的介绍,有关详细操作请参考相应资料。
查询分析器是MS SQL Server提供的一个强大的查询分析工具,可以执行SQL命令(语句)和脚本,及导出、导入SQL脚本文件,是MS SQL Server强大的数据处理功能的集中体现。在Windows任务栏上单击【开始】|【程序】|【Microsoft SQL Server】|【查询分析器】,启动查询分析器,主界面如图7-2所示。
通过查询分析器提供的菜单、快捷按钮,以及编辑区和提示区,可以完成需要的操作并且得到需要的结果。查询分析器经常执行的操作有:
¾ 创建查询和其他SQL脚本,并在SQL查询分析器中执行 ¾ 通过对象浏览器中预定义的脚本模板创建常用的数据库对象 ¾ 在参数未知的情况下执行存储过程 ¾ 调试存储过程 ¾ 显示执行计划、显示服务器跟踪、显示客户统计 ¾ 在数据库中搜索对象 ¾ 以文本或者表格的形式显示SQL语句执行结果 ¾ 分析SQL语句 ¾ 更改数据库(指当前的数据库) ¾ 装载SQL脚本、保存SQL脚本
vb经典教程第07章共八章
302 Visual Basic 6.0 编程实用教程
图7-2 查询分析器(SQL Query Analyzer)界面
在缺省情况下,所有的操作都是针对当前的数据库,要更改操作的数据库可以通过SQL查询分析器工具栏上的下拉列表框选择或者单击【查询】|【更改数据库】命令,在打开的对
话框中设置,如图7-3所示。
图7-3 更改数据库
单击工具栏上的【新建查询】按钮或者键入快捷键Ctrl + N,可以新建一个查询,在里面输入要执行的SQL语句,然后单击工具栏上的【执行查询】按钮,或者键入快捷键F5执行SQL语句。 查询分析器的另一个常用的功能是自动创建数据库的所有数据表结构(不包含数据表的内容),操作过程简单叙述为:首先通过企业管理器生成某个数据库(包含所有用户数据表)的脚本,然后在查询分析器中将脚本文件载入,再执行SQL语句即可自动创建数据库的所有用户数据表。
7.3 基本DDL语言
基本DDL语言完成对数据库的定义操作,主要包括create database语句、drop database
vb经典教程第07章共八章
第7章 高级SQL编程 303
语句、create table语句、drop table语句、create view语句、drop view语句和alter table语句,分别用来创建和删除数据库、创建和删除数据表或者创建和删除视图、对已有数据表的定义进行修改。
7.3.1 create database语句
create database语句用来创建一个新的数据库,基本语法格式为: create database Database_Name,其中Database Name是新建数据库的名称,注意不要与已有数据库重名,否则该SQL语句无法执行并会提示错误。
创建一个名称为FileManager的数据库的SQL语句为:
-- 创建名为FileManager的数据库 create database FileManager
注意:SQL语言不区分大小写,如create database FileManager与CREATE DATABASE FILEMANAGER完全相同,使用时请注意。
7.3.2 drop database语句
drop database语句用来将某个数据库删除,基本语法格式为:
drop database Database_Name,其中Database Name是需要删除的数据库的名称。 将名称为FileManager的数据库删除的SQL语句为:
-- 删除名为FileManager的数据库 drop database FileManager
7.3.3 create table语句
create table语句用来在当前数据库中创建一个新数据表,基本语法格式为:
create table Table_name ({
FieldName Datatype [primary key | unique] [,not null] [,auto increment] [,default Default_Value] })
其中Table_Name为新建数据表的名称,FieldName为字段名称,Datatype为字段的数据类型,可选项primary key用于表示该字段是主键、unique表示该字段不允许重复(字段值唯一)、not null表示该字段不允许为空、auto increment表示该字段是自动累计增加、default Default_Value为该字段指定默认值为Default_Value。
使用create table语句时,需要注意以下几个问题:
vb经典教程第07章共八章
304
¾
Visual Basic 6.0 编程实用教程
数据表名称不要与当前数据库中已有数据表名称重复。 ¾ 在一个数据表中,不可以出现名称相同的字段,而且不要与数据库系统的关键字、保留字相同,例如不要使用memo、text等作为字段名称。
¾ 如果需要创建的数据表已经存在,可以使用alter table语句对数据表进行修改,或者首先使用drop table语句将数据表删除,然后再创建该数据表。
¾ 如果字段定义为not null,在往数据表中写记录时,必须为该字段指定取值,否则会提示出错。
¾ 如果字段定义primary key或者unique,在往数据表中写记录时,必须为该字段指定不同的值,否则会提示错误。primary key和unique都具有强制唯一性,但是两者的使用还是有区别的,首先在允许空值的字段上,可以再定义unique约束,但是不能定义primary key,其次一个表可以有多个unique约束,但是只能定义一个primary key。
¾ 如果需要重新定义数据表,也可以在企业管理器中通过“设计表”功能实现。 创建一个名称为SysAdmin的数据表的SQL语句为:
create table SysAdmin( )
intID int primary key, strDm varchar(20) not null, strName varchar(50) not null, intEnable tinyint default 0, intOrder2 int,strDescription text, datRegister datetime, datLogin datetime, strKeyWord varchar(20) default 'sa'
其中字段intID为关键字,字段strDm不允许为空,字段strKeyWord和intEnable的默认值分别为sa和0。
创建一个名称为ImageInfo的数据表的SQL语句如下:
create table ImageInfo( )
intID int primary key, strDm varchar(20) not null, strName text, blobImage image, intEnable int default 0, intOrder2 int, datDate datetime, strDescription text, intAdminID int
vb经典教程第07章共八章
第7章 高级SQL编程 305
7.3.4 drop table语句
drop table语句用于删除当前数据库中指定的数据表,基本语法格式为:
drop table Table_Name,其中Table_Name为需要删除的数据表的名称,它必须是当前数据库中已经存在的数据表名称。
删除名称为SysAdmin的数据表的SQL语句为:
-- 删除表SysAdmin drop table SysAdmin
7.3.5 alter table语句
alter table语句用于通过更改、添加、删除列和约束,或者通过启用或禁用约束和触发器来对当前数据库中已有数据表的定义进行修改,基本语法格式为:
alter table Table_Name { [add FieldDefination] |[drop column FieldName] |[alter column FieldDefination] }
其中Table_Name是数据表名称,add子句表示在指定数据表中新增加字段,drop column子句表示删除指定字段,alter column子句表示对指定字段的定义进行修改。
在SysAdmin表中增加一个名称为strName2的宽度为30的字符类型字段的SQL语句为:
-- 增加一个字段
alter table SysAdmin add strName2 varchar(30)
将SysAdmin表中的名称为strName2的字段改为宽度为50的字符型字段的SQL语句为:
-- 更改列宽
alter table SysAdmin alter column strName2 varchar(50)
将SysAdmin表中名称为strName2的字段删除的SQL语句为:
-- 删除字段
alter table SysAdmin drop column strName2
vb经典教程第07章共八章
306 Visual Basic 6.0 编程实用教程
7.3.6 create view语句
视图是从一个或者多个基本数据表中导出的表,它是一个虚表,即视图所对应的数据并不实际存储在数据库中,数据库中只存储视图的定义。
创建视图的基本语法格式为:
create view View_Name as Select_Statement
如下SQL语句的作用是创建一个名称为AdminImage的视图,该视图的内容是用户名称及其图像代码:
create view AdminImage as
select t1.strName as strAdminName,t2.strDm as strImageDm from SysAdmin t1,ImageInfo t2 where t1.intID=t2.intAdminID
7.3.7 drop view语句
drop view语句用来删除一个视图,语法格式为:
drop view View_Name,其中View_Name是已经存在的视图名称。 如下的代码用于删除视图AdminImage:
-- 删除视图AdminImage drop view AdminImage
7.4 基本DML语言
基本DML语言主要完成对数据的查询、统计、分析和存取等数据处理功能,主要包括select语句、insert语句、delete语句、update语句,其中select语句是最常用的SQL语句,主要用来完成各种数据查询、统计分析等数据处理功能。
7.4.1 select语句
select语句的基本语法格式如下:
select [Options_Clause] Select_List from From_Clause [where Where_Clause] [group by Groupby_Clause] [order by Orderby_Clause]
vb经典教程第07章共八章
第7章 高级SQL编程 307
下面分别对select语句的各部分进行详细说明:
1.Options_Clause
Options_Clause是选择语句的一些选项,可以是top n | distinct | all,其中top n表示选择前n条记录,distinct表示只选择不重复的记录,既发现有重复的记录时自动过滤掉,all表示选择所有记录,包括重复记录。
选择图像数据表中的前4个图像数据的SQL语句为:
select top 4 * from ImageInfo
选择所有在数据库中已经添加图像的用户ID的SQL语句为:
-- 使用distinct过虑重复记录 select distinct intAdminID from ImageInfo
在该SQL语句中,使用了distinct关键字,返回结果中每个intAdminID只出现一次。 选择所有在数据库中已经添加图像的用户ID的SQL语句为(不过滤重复出现的用户ID):
select intAdminID from ImageInfo
或者是:
select all intAdminID from ImageInfo)
在该SQL语句的返回结果中每个intAdminID至少出现一次,请注意与上例的返回结果进行比较。
2.Select_List
当不需要返回数据表所有字段时,用Select_List指定返回的字段,当需要返回所有字段时,使用*,否则需要给出字段名称,当选择多个字段时,字段间使用逗号分开。可以用as关键字为返回字段指定新名称。
如果需要返回SysAdmin数据表的所有信息,可以使用如下SQL语句:
-- select语句返回所有字段 select *
vb经典教程第07章共八章
308
from SysAdmin
Visual Basic 6.0 编程实用教程
只返回SysAdmin数据表的strName字段的SQL语句为:
-- 指定select语句返回的字段 select strName from SysAdmin
返回SysAdmin数据表的strName字段,并且为其定义新名称AdminName,SQL语句可以写为:
-- 使用as关键字为字段定义新的名字 select strName as AdminName from SysAdmin
3.From_Clause
From_Clause字句用于指定select语句的选择范围,既在哪个或者哪些数据表中进行选择。如下面的例子中表示在SysAdmin数据表中进行选择。当需要在多个表中进行选择时,就要在From_Clause子句中将多个数据表的名称依次列出,中间用“,”隔开。
查询所有用户的图像,并且同时返回用户的名称,SQL语句如下:
select SysAdmin.strName,ImageInfo.* from SysAdmin,ImageInfo
where SysAdmin.intID=ImageInfo.intAdminID
当From_Clause子句中出现多个数据表时,可以为数据表指定新的名称,新名称紧跟在原名称之后并且以空格相隔。上例中的SQL语句可以简化为如下的形式:
select t1.strName,t2.*
from SysAdmin t1,ImageInfo t2 where t1.intID=t2.intAdminID
当多个数据表中有相同名称的字段时,必须指明是哪个数据表的字段,如下例所示。 SysAdmin数据表和ImageInfo数据表中都有名称为intID的字段,所以下面的SQL语句由于intID含义不明确而错误:
select intID
from SysAdmin t1,ImageInfo t2 where t1.intID=t2.intAdminID
vb经典教程第07章共八章
第7章 高级SQL编程 309
正确的写法应该是:
select t1.intID
from SysAdmin t1,ImageInfo t2 where t1.intID=t2.intAdminID
4.Where_Clause
Where_Clause子句的内容是返回结果的过滤条件,条件子句主要用比较运算符表示,当有多个条件时需要用逻辑运算符将多个条件连接起来,并且要根据具体情况灵活使用括号“()”来保证条件的正确性和可读性。
Select语句的条件可以是简单条件也可以是复杂条件,需要在实践中不断总结学习。 查询用户ID为1和2的所有有效(intEnable字段值为0)的图像的SQL语句为:
select * from ImageInfo
where (intAdminID=1 or intAdminID=2) and (intEnable=0)
该SQL语句的条件也可以用in运算符表示为:
select * from ImageInfo
where (intAdminID in(1,2)) and (intEnable=0)
注意运算符in后面的取值集合中的各个取值用逗号隔开,并且要符合数据类型的表示形式,如字符类型的数据的表示形式为strDm in(‘001’,’002’)。
5.Groupby_Clause
Groupby_Clause表示对查询到的记录进行分组,后跟字段名称,当需要按照多个字段进行分组时字段之间用逗号隔开。
统计各个用户的图像记录个数。要实现这个统计功能,必须按照用户进行分组,然后才能统计出各个用户的图像记录个数,所以SQL可以写为如下形式:
select intAdminID,count(*) as intCount from ImageInfo group by intAdminID
vb经典教程第07章共八章
310 Visual Basic 6.0 编程实用教程
6.Orderby_Clause
Orderby_Clause表示按照某各自段对返回结果进行排序,后跟字段名称,当需要按照多个字段进行分组时字段之间用逗号隔开。SQL语言支持两种排序方式:升序和降序,分别用关键字asc和desc表示,当不指明排序方式时,默认为升序排列。
查询用户ID为1的所有图像记录,并且按照intOrder2进行升序排列,SQL语句可以写为:
select * from ImageInfo
where intAdminID=1 order by intOrder2 asc
查询所有用户的图像记录,并且按照intAdminID和intOrder2进行升序排列,SQL语句如下:
select * from ImageInfo
order by intAdminID asc,intOrder2 asc
7.4.2 insert语句
当需要往数据表中写入新记录时,就要用到insert语句。Insert语句的基本语法格式如下:
insert into Table_Name [ ( Field_List ) ] values({ default | null | expression } [ ,...n] )
其中Table_Name是数据表名称,Field_List是数据表的字段列表,values后的括号内为对应字段的数据取值。通常insert语句有以下两种格式:
1.省略Field_List的格式
省略Field_List时,默认为针对当前数据表的所有字段,此时在values子句中必须为所有字段指定取值,并且要与数据表中的字段的先后顺序完全一致。
往数据表SysAdmin中写入纪录:ID为1,代码为001,名称为Admin,其他字段取值为默认值或者空,SQL语句为:
insert into SysAdmin
values(1,'001','Admin',default,1,null,null,null,default)
请读者注意,values子句中的数据取值的排列顺序要与数据表中的字段顺序完全相同,
vb经典教程第07章共八章
第7章 高级SQL编程 311
并且数据类型也要一致。
2.不省略Field_List的格式
如果不省略Field_List,也就是指明对哪些字段进行赋值,其余的字段如果在数据表定义时为其指定了默认值,那么该字段的取值就是默认值,否则为空(null)。注意数据表的关键字、不允许为空的字段必须出现在Field_List中。
往数据表SysAdmin中写入纪录:ID为2,代码为002,名称为Guest,密码为sa,SQL语句为:
insert into SysAdmin(intID,strDm,strName,strKeyWord) values(2,'002','Guest','sa')
采用这种格式的insert语句时,Field_List中字段的排列顺序要与values子句中的数值一一对应。
注意:为字符型字段赋值时,数据要用单引号括起来,并且要用英语模式下的单引号既“' '”,而不是汉语模式下的单引号“‘ ’”,否则系统无法识别数据而提示出错。
7.4.3 delete语句
delete语句用于将指定的记录从当前数据表中删除,基本语法格式如下:
delete from Table_Name [where Where_Clause]
其中Table_Name是数据表名称,Where_Clause子句表示按照一定条件有选择的删除记录,如果省略Where_Clause即将数据表中所有记录删除,也就是清空该数据表。
将用户ID为1的图像数据删除的SQL语句如下:
delete from ImageInfo where intAdminID=1
将所有图像数据删除(即清空ImageInfo数据表)的SQL语句为:
-- 删除表ImageInfo中的所有数据 detete from ImageInfo
请读者注意detete from ImageInfo与drop table ImageInfo的区别:前者是清空数据表中所有记录,但是表结构依然存在;后者是删除这张数据表,不仅删除了数据表的所有记录,而且删除了数据表的结构。
vb经典教程第07章共八章
312 Visual Basic 6.0 编程实用教程
7.4.4 update语句
update语句的作用是对某些记录的字段进行修改,基本语法格式为:
update Table_Name
set {Field_Name= { expression | default | null }[ ,...n ] [ where Where_Clause ]
其中TableName是数据表名称,Field_Name是字段名称,expression | default | null是为字段指定的新取值,Where_Clause条件子句表示只对符合条件的记录进行修改。
当需要对多个字段的值进行修改时,每个字段的取值紧跟在字段名称后面并且要用等号连接,多个字段之间用逗号分隔。
将用户Guest的密码(strKeyword字段)修改为“as”,同时将intEnable字段的取值修改为默认值。SQL语句可以写为:
update SysAdmin
set strKeyword='as', intEnable=default where strName='Guest'
当省略where子句时,update语句的作用范围是数据表中所有记录,此时要注意使用该语句的后果。如:
update ImageInfo set intEnable=default
执行这个SQL语句后,ImageInfo表中所有记录的intEnable字段的取值都被更改成了默认值。
7.5 基本DCL语言
基本DCL语言主要完成对数据的存取权限等控制操作,常用的语句主要包括grant语句、revoke语句、deny语句,含义分别为分配、收回和拒绝相应用户针对当前数据库的相应操作权限。
本节所有操作都以数据库FileManager的用户Guest为例,进行所有操作前需要首先在企业管理器中新建用户Guest:
(1)打开SQL Server 2000企业管理服器
(2)选中数据库FileManager后单击鼠标右键,在弹出菜单中选择【新建】|【数据库用户】,打开【数据库用户属性—新建用户】对话框,如图7-4所示。