《数据库原理》第五次 数据库完整性约束的实现与验证

本系列传送门:

  1. 实验二 SQL Server SSMS工具创建和管理数据库及数据表
  2. 实验三 SQL Server SSMS工具添加数据
  3. 实验四 SQL的数据定义语句
  4. 实验五 数据库完整性约束的实现与验证
  5. 实验六 SQL数据查询实验
  6. 实验六(2) SQL数据查询—连接查询
  7. 实验七 SQL的数据更新和视图
  8. 实验八 T_SQL编程
  9. 实验九 存储过程和触发器
  10. 实验十 索引和数据库的安全性

1. 本实验的数据来源

请参考 实验四 SQL的数据定义语句

https://blog.csdn.net/okfang616/article/details/124090402

2. 实验目的

1、 掌握SQL定义实体完整性、参照完整性、用户自定义完整性的方法
2、 加深理解并通过实践操作验证RDBMS针对实体完整性、参照完整性、用户自定义完整性的违约处理机制。
3、 掌握规则和默认值的SQL定义语句

3. 实验内容

1. 在实验四的基础上,重新创建以下三个表:

会员表:member(memno,memname,address,telephone,username,userpwd),主码为memno,属性memname不能取空值

create table member (
	memno int primary key,
	memname varchar(30) not null,
	address varchar(50),
	telephone varchar(15),
	username varchar(30),
	userpwd varchar(30)
)

员工表:employee(empno,empname,depno,sex,telephone,username,userpwd),主码为empno,depno参照部门表department的主码属性depno

create table employee (
	empno int primary key ,
	empname varchar(30),
	depno int,
	sex varchar(4),
	telephone varchar(15),
	username varchar(30),
	userpwd varchar(30)
	foreign key (depno) references department(depno)
)

部门表:department(depno,depname,manager,deptotal),主码为depno,属性depname不能取空值

create table department (
	depno int primary key,
	depname varchar(30) not null,
	manager int,
	deptotal int
)
2、 为employee表的empname属性添加不能取空值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
alter table employee alter column empname varchar(30) not null
3、 为department表的manager属性增加参照完整性约束,要求该属性参照员工表employee的主码属性empno,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
alter table department add foreign key(manager) references employee(empno)
4、 为订单表orders增加主码约束,主码为orderno, 并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
alter table orders add primary key(orderno)
5、 为会员表member属性列username添加取唯一值的约束,约束名为UK1,删除约束,并举例实践验证增加约束前后DBMS的违约处理机制,写出具体的实验数据、步骤和结果
alter table member add constraint UK1 unique(username)
alter table member drop constraint UK1
6、 为员工表employee的属性列username增加取唯一值的约束,并举例实践验证DBMS的违约处理机制,写出具体的实验数据、步骤和结果
alter table employee add unique(username)
7、 创建一个性别只能取“男”或“女”的规则并把其绑定到员工表employee的属性sex上
alter table employee add check (sex in ('男','女'))
8、 定义一个默认值,并绑定在员工表employee的userpwd属性上,要求userpwd属性的默认取“123456”
alter table employee
add constraint userpwd_default
default '123456' for userpwd
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 1. 编写正确的查询语句:确保查询语句中的关键字、表名、字段名、运算符等都正确无误。 2. 检查数据类型:确保查询语句中的数据类型与数据库中的数据类型相匹配。 3. 使用函数和聚合:确保查询语句中使用的函数和聚合函数正确无误。 4. 使用索引:对于大型数据库,使用索引可以提高查询速度,确保查询语句中使用的索引正确无误。 5. 数据库优化:定期进行数据库维护和优化,包括清理垃圾数据、压缩数据库、优化查询等。 6. 数据备份:定期进行数据库备份,确保数据的安全性和完整性。 7. 使用数据库管理工具:使用数据库管理工具可以简化查询语句的编写,提高准确性。 ### 回答2: 确保数据库查询语的准确性可以采取以下几个方法: 1. 编写正确的查询语句:在编写查询语句时要确保语法正确,遵循数据库查询语言的规范。可以使用数据库管理系统提供的文档或者在线教程来学习正确的查询语句编写方法。 2. 对数据库进行适当的设计与规范:在设计数据库时,要考虑到数据的完整性和一致性,设置主键、外键以及其他约束条件,以确保数据库中的数据是有意义且正确的。此外,可以使用数据库管理系统提供的工具或者编写触发器、存储过程等来对数据进行有效的校验和验证。 3. 建立索引:在数据库中建立合适的索引,可以提高查询速度并减少查询错误的可能性。索引可以根据查询的字段和条件进行创建,可以是单字段索引或者联合索引。但要注意索引的数量和大小,过多或过大的索引会影响数据库的性能。 4. 测试与调试:在执行数据库查询前,可以先进行测试和调试。可以使用一些数据库管理系统提供的工具或者第三方的调试工具,多进行检查和验证,确认查询语句的准确性和结果的正确性。 5. 定期维护和优化:数据库查询的准确性也需要持续的维护和优化。例如,定期备份和恢复数据库,清理和整理数据库中的无效数据,进行性能优化等。定期维护可以保证查询语句的准确性和数据库的可靠性。 总之,确保数据库查询语的准确性需要编写正确的查询语句,设计合理的数据库结构,建立适当的索引,进行测试和调试,并定期进行维护和优化。同时,也要持续学习和熟悉数据库管理系统的使用,掌握数据库查询的技巧和方法。这样才能保证数据库查询的准确性和效率。 ### 回答3: 为了确保数据库查询语句的准确性,我们可以采取以下几种方法: 1. 编写正确的查询语句:首先,我们需要确保编写的查询语句是正确的,包括正确的语法、正确的表名和列名、正确的条件等。我们可以使用数据库管理工具或者编程语言提供的接口来编写和执行查询语句。 2. 使用参数化查询:为了防止SQL注入攻击并确保查询结果的准确性,我们应该使用参数化查询。参数化查询是通过将用户输入的数据作为参数传递给查询语句,而不是直接拼接字符串的方式来执行查询。这样可以防止恶意用户修改查询语句或者通过注入恶意代码来破坏数据库完整性。 3. 对数据进行验证和清理:在执行查询之前,我们应该对用户输入的数据进行验证和清理,以确保输入的数据格式正确且安全。例如,可以使用正则表达式验证数字、日期等特定格式的数据,过滤非法字符或者转义特殊字符等。 4. 设置适当的权限和访问控制:为了确保数据库查询的准确性和安全性,我们应该设置适当的权限和访问控制。只给予用户执行必要查询的权限,限制用户对数据库的操作范围,避免误操作或者非法访问。 5. 定期备份数据库:为了应对数据库查询中可能出现的错误或者数据丢失情况,我们应该定期备份数据库。这样在出现问题时,可以及时恢复数据库到之前的状态,保证查询结果的准确性。 总之,确保数据库查询语句的准确性需要从查询语句的编写准确性、参数化查询、数据验证和清理、权限和访问控制以及定期备份等多个方面综合考虑和操作,以确保数据库查询结果的准确性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

okfang616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值