图6
下面的语句用来验证“sc”表中的实体完整性: insert into sc values('95002', '10',65) insert into sc values('95002', '10',90)
图7
2. 域完整性:
使用下面的语句验证“ssex”字段的域完整性:
insert into student values('95009','张匀','大',20,'CS', ‘42222919901012904X’)
3.参照完整性: 使用下面的语句“验证”sc表中的“sno”字段的域完整性(假设student表中没有学号为“95998”的学生记录):
insert into sc values('98998', '10',98)
四、实验任务:
1、建立课程的实体完整性, 和课程号cno的参照完整性;
2、对HRM数据库,练习建立三个表的主外键约束、唯一约束、取空值约束、用户自定义的约束(参考HRM数据库表定义图中说明);
3、建立salary表的Income字段限定在0-9999之间。
五、实验报告要求
1、写出与上述任务相对应的SQL语句
2、并记录在实验过程中遇到的问题、解决办法及心得体会。
3.2 数据库安全性管理
一、实验目的
? ? ? ?
掌握SQL Server身份验证模式。
掌握创建登录账户、数据库用户的方法。 掌握使用角色实现数据库安全性的方法。 掌握权限的分配。
二、实验内容
1、设置身份验证模式:Windows身份验证模式和混合模验证模式。 2、设置登录账户 3、设置数据库用户 4、设置数据库角色。 5、设置管理对象的权限
三、实验步骤
1.设置身份验证模式
? 依次单击开始->所有程序->SQL Server 2005->SQL Server Management Studio
启动SQL Server 2005数据库管理系统 ? 连接成功后,右键你的实例,选择\属性\
? 在\属性\窗口中, 转到\安全性)项,在\服务器身份验证\中设置为\
Server和Windows身份验证模式\, 确定,根据提示,应该重新启动sql服务 ? 然后执行下面的语句启用sa用户, 同时清除sa的密码(能成功登陆后再根据你的需
要设置)
EXEC sp_password null,null,'sa' ALTER LOGIN sa ENABLE
? 语句执行完成后, 再用sa连接你的实例, 应该就没有问题了. 2.设置登录账户
? 创建使用 Windows 身份验证 (SQL Server Management Studio) 的 SQL Server 登
录名
? ?在 SQL Server Management Studio 中,打开对象资源管理器并展开要在其中
创建新登录名的服务器实例的文件夹。
? ?右键单击“安全性”文件夹,指向“新建”,然后单击“登录名”。 ? ?在“常规”页上的“登录名”框中输入一个 Windows 用户名。 ? ?选择“Windows 身份验证”。 ? ?单击“确定”。
? 创建使用 SQL Server 身份验证 (SQL Server Management Studio) 的 SQL Server
登录名
? ?在 SQL Server Management Studio 中,打开对象资源管理器并展开要在其中
创建新登录名的服务器实例的文件夹。
? ?右键单击“安全性”文件夹,指向“新建”,然后单击“登录名”。
?在“常规”页上的“登录名”框中输入一个新登录名的名称。 ?选择“SQL Server 身份验证”。 ?输入登录名的密码。
?选择应当应用于新登录名的密码策略选项。通常,强制密码策略是更安全的选择。
? ?单击“确定”。
? 通过 Transact-SQL 创建使用 Windows 身份验证的 SQL Server 登录名
? ?在查询编辑器中,输入以下 Transact-SQL 命令:CREATE LOGIN Windows User> FROM WINDOWS; GO ? 通过 Transact-SQL 创建使用 SQL Server 身份验证的 SQL Server 登录名 ? ?在查询编辑器中,输入以下 Transact-SQL 命令:CREATE LOGIN name> WITH PASSWORD = ' 3.设置数据库用户 ? 创建数据库用户 ? 在 SQL Server Management Studio 中,打开对象资源管理器并展开要在其中 创建新登录名的服务器实例的文件夹。 ? 依次展开数据库,某个具体数据库,“用户” ? 右键单击用户,选择“新建用户” ? 输入用户名,选择登录名,确定 ? 通过 Transact-SQL 创建数据库用户(create user): create user dba for login dba with default_schema=dbo ? 并指定数据库用户“dba” 的默认 schema 是“dbo”。这意味着 用户“dba” 在执行“select * from t”,实际上执行的是 “select * from dbo.t”。 4设置数据库角色 ? 新建角色 ? 在 SQL Server Management Studio 中,打开对象资源管理器并展开要在其中 创建新登录名的服务器实例的文件夹。 ? 依次展开数据库,某个具体数据库,“角色” ? 右击选中新建角色 ? 通过 Transact-SQL新建角色:CREATE ROLE role_name ? 在对象资源管理器中设置数据库角色 ? 在 SQL Server Management Studio 中,打开对象资源管理器并展开要在其中 创建新登录名的服务器实例的文件夹。 ? 依次展开数据库,某个具体数据库,“用户” ? 选中某用户,右击“属性”,在展开的数据库用户属性对话框中进行设置 ? 通过 Transact-SQL设置数据库角色 ? 通过加入数据库角色,赋予数据库用户“dba”权限: exec sp_addrolemember 'db_owner', 'dba' ? 此时,dba 就可以全权管理数据库 mydb 中的对象了。 ? 如果想让 SQL Server 登陆帐户“dba”访问多个数据库,比如 mydb2。可以 让 sa 执行下面的语句: ? use mydb2 go create user dba for login dba with default_schema=dbo go exec sp_addrolemember 'db_owner', 'dba' go ? 此时,dba 就可以有两个数据库 mydb, mydb2 的管理权限了! ? ? ? ? 5.设置管理对象的权限 ? 在对象资源管理器中授权: ? 选中需要授权的登录名、用户名或角色名 ? 右键单击选择“属性”,在弹出的该对象的属性窗口中选择“安全对象”,进 行权限分配 ? 通过 Transact-SQL分配权限:通过GRANT和REVOKE语句 四、实验任务 1、创建角色ProgramerRole,拥有创建表,存储过程,视图权限,拥有对Salary表的查询、修改、插入权限 2、创建一个登录账号Testlogin 3、创建对应于这个登录账号的数据库用户TestUser 4、将用户TestUser添加到TestRole角色中 五、实验报告要求 1、写出与上述任务相对应的SQL语句 2、思考数据库服务器上的角色有哪些?权限类型有哪些? 3、并记录在实验过程中遇到的问题、解决办法及心得体会。