本文假定你已经安装好了达梦数据库DM8。
案例要求说明
在数据库中新建立三张表,存储在TBS表空间上,信息由TEST用户管理,密码Dameng123。为了数据安全,人力资源用户HR只能修改EMPLOYEES表中的:每个员工的编号(EMPLOYEEID),职位(TITLE)和工资(SALARY)信息。HR密码设定为Dameng23。
EMPLOYEES表用户存放所有员工的信息,表结构如下:
DEPARTMENTS表用于存放所有的部门信息,表结构如下:
PERSON表存放该公司所有雇员、供应商、客户的姓名信息,表结构如下:
实现步骤
1、连接数据库
调用manager图形化工具:
以SYSDBA用户名登陆,注意端口号和创建数据库时的一致性,默认值5236:
连接数据库成功后显示如下:
2、创建表空间TBS
打开表空间菜单,鼠标右键单击,选择“新建表空间”菜单:
进入新建表空间的对话框中,输入表空间名称:TBS,并添加两个表空间数据文件,设定相关的存储路径/大小等参数。
3、建立用户TEST
建立好了TBS之后,在“管理用户”中鼠标右键,新建用户。
在“新建用户”对话框中,输入相关的信息,创建TEST用户。注意选择表空间为TBS
4、创建数据表EMPLOYEES
切换连接数据库用户到TEST。在TEST用户下,1、创建数据库表EMPLOYEES。2、设定指向 PERSON.PERSONID 的外键。
create table EMPLOYEES
(
EMPLOYEEID INT not null, //非空 主键,自增列
NATIONALNO VARCHAR(18) not null, //非空 身份证号码
PERSONID INT not null, //非空 指向 PERSON.PERSONID 的外键
LOGINID VARCHAR(256) not null, //非空 用户登录 ID
TITLE VARCHAR(50) not null,// 非空 职位
MANAGERID INT, //空
BIRTHDATE DATE not null, //非空 出生日期
MARITALSTATUS CHAR(1) not null,// 非空 S=未婚 M=已婚
PHOTO IMAGE,// 空 照片
HAIRDATE DATE not null, //非空 入职时间
SALARY DEC(19,4) not null,// 非空 薪资(元)
primary key("EMPLOYEEID")
);
任务执行出错如下提示:
出现上述错误因为没有个TEST创建表的权限。重新回到SYSDBA账号下进行权限赋值。
重新回到TEST用户下,执行SQL语句:
5、创建数据表DEPARTMENTS
create table DEPARTMENT
(
DEPARTENTID INT not null,//非空 主键, 自增列
NAME VARCHAR(50) not null,//非空 部门名称
primary key("DEPARTENTID")
);
6、创建数据表PERSON
create table PERSON
(
PERSONID INT not null,//非空 主键, 自增列,聚集索引
NAME VARCHAR(50) not null,//非空 姓名
SEX CHAR(1) not null,//非空 M=男 F=女
EMAIL VARCHAR(50) ,// 空 电子邮件地址
PHONE VARCHAR(25),// 空 电话
primary key("PERSONID")
);
7、设定外键
EMPLOYEES表中,EMPLOYEES.PERSONID指向 PERSON.PERSONID 的外键:
完成后,刷新,可以看到如下结果:
8、建立用户HR
HR只能修改EMPLOYEES表中的:每个员工的编号(EMPLOYEEID),职位(TITLE)和工资(SALARY)信息。HR密码设定为Dameng23。
9、测试验证HR账号
第一步:先在Test账号下插入几条数据:
insert into PERSON (PERSONID,NAME,SEX)values ('88','maxiaoming','F');
insert into PERSON (PERSONID,NAME,SEX)values ('10','wuxueling','M');
insert into PERSON (PERSONID,NAME,SEX)values ('11','zhangsan','F');
insert into PERSON (PERSONID,NAME,SEX)values ('12','lisi','F');
insert into PERSON (PERSONID,NAME,SEX)values ('13','zhaoliu','F');
insert into PERSON (PERSONID,NAME,SEX)values ('14','Weiming','F');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1001','110112199709072789','88','1101','Master','1997-09-07','S','2008/5/30','12000');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1002','110112199809032789','10','1101','Master','1998-09-07','S','2008/5/30','15000');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1003','110112199909072789','11','1101','Master','1999-09-07','S','2008/5/30','18000');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1004','110112199609072789','12','1101','Master','1996-09-07','S','2008/5/30','19000');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1005','110112199509072789','13','1101','Master','1995-09-07','S','2008/5/30','20000');
insert into EMPLOYEES (EMPLOYEEID,NATIONALNO,PERSONID,LOGINID,TITLE,BIRTHDATE,MARITALSTATUS,HAIRDATE,SALARY) values ('1006','110112199409072789','14','1101','Master','1994-09-07','S','2008/5/30','22000');
执行查询语句:
select * from PERSON;
select * from EMPLOYEES;
结果如下图:
第二步:新建立一个数据库连接,HR用户名登陆,密码Dameng123,参考下图所示:
第三步:更新信息:
update TEST.EMPLOYEES set EMPLOYEEID='100-1' ,TITLE = 'DBA',SALARY ='24000' where EMPLOYEEID='1001';
上述SQL执行失败,提示没有Select权限。
再回到SYSDBA用户下进行权限Select的设置。:
重新执行Update语句:
最后执行提交操作。
到test用户下,执行select操作,可以看到数据已经更新: