99问答网
所有问题
sql数据库设计高手进!!
当我设计一个数据库后,它里面有两个表,这两个表之间是有关系的,其中一个表的外键是另一个表的主键,当我在外键的那个表插入数据时,它会提示出错,这是为什么呀?各位高手是否可以解释一下呢?谢谢了.
举报该问题
推荐答案 2006-12-13
在外键表中插入时,在外键的那个字段必须是主键表中主键字段已经存在的内容,否则就会出错
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。
(1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语句格式为:
CREATE TABLE〔<数据库名>.〕<表名>
(<列名> 数据类型 〔缺省值〕 〔NOT NULL / NULL〕
〔,<列名> 数据类型 〔缺省值〕 〔NOT NULL / NULL〕〕......
〔,UNIQUE (列名〔,列名〕......)〕
〔,PRIMARY KEY(列名)〕
〔,FOREIGN KEY(列名〔,列名〕......)REFERENCE <表名>(列名〔,列名〕......)〕
〔,CHECK(条件)〕 〔其它参数〕)
其中,〈数据库名〉.〕指出将新建立的表存放于该数据库中;
新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);
列名为用户自定义的易于理解的名称,列名中不能使用空格;
数据类型为上面所介绍的几种标准数据类型;
〔NOT NULL/NULL〕指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是“不知道”或“无意义”的值,值得注意的是数据“0”和空格都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用NOT NULL;
〔,UNIQUE〕将列按照其规定的顺序进行排列,如不指定排列顺序,则按列的定义顺序排列;
〔PRIMARY KEY〕用于指定表的主键(即关系中的主属性),实体完整性约束条件规定:主键必须是唯一的,非空的;
〔,FOREIGN KEY (列名〔,列名〕......) REFERENCE<表名>(列名〔,列名〕......)〕是用于指定外键参照完整性约束条件,FOREIGN KEY指定相关列为外键,其参照对象为另外一个表的指定列,即使用REFERENCE引入的外表中的列,当不指定外表列名时,系统将默认其列名与参照键的列名相同,要注意的是:使用外键时必须使用参照,另外数据的外键参照完整性约束条件规定:外键的值要么与相对应的主键相同,要么为空值(具体由实现系统不同而异)
〔,CHECK〕用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/W77Xjzee.html
其他回答
第1个回答 2006-12-13
这是主键约束:你在那个有外键的表里插入记录的时候,要保证外键字段的值在主表中能找到,否则就会出错。
第2个回答 2006-12-13
出什么错啊 把错误写出来看看 是不是你插的数据的外键值在另一张表的主键里没有对应的?
相似回答
SQLServer2005T-
SQL数据库设计
编辑推荐
答:
SQL Server作为微软的明星产品,凭借其直观的界面和创新特性,深受开发者和管理者青睐,是数据库设计的首选工具。《SQL Server 2005 T-
SQL数据库设计
》一书,共分为十五章,首两章阐述了关系数据库的特性,介绍了执行T-SQL语言的实用工具。从第三章起,内容聚焦于SELECT语句的深入解析,包括数据操作(IN...
SQL数据库
表
设计
答:
创建一个表。表名字Persons,第一列Id_P,整数类型;第二列LASTName,字符类型;第三列FirstName,字符类型。微软VS
SQL
2008
数据库
mysql 数据库 sqlite 数据库
SQL高手进
答:
在
SQL
Server 2008中创建
数据库
的方法主要有两种:一是在SQL Server Management Studio窗口中使用现有命令和功能,通过方便的图形化向导创建;二是通过编写Transact-SQL语句创建。例子:CREATE DATABASE BookDateBase ON (NAME=BookDateBase_DAT,FILENAME='E:\张帅\zs SQL2008 shugao\SQL2008\第3章 管...
SQL 数据库高手
请进
答:
1.对于带输入参数的 存储过程 调用的时候需要写上 execute 存储过程名 传入参数列表 例如:execute deletearticle 1 2.对于不带输入参数的 存储过程 调用的时候需要写上 execute 存储过程名 例如:execute ListArticles 这样就可以调用执行对应的存储过程,如果还有问题,可以通过百度Hi继续进行交流,呵呵,...
求
SQL数据库高手
答:
1、
数据
表或者视图:编号 年级 班级 成绩 2、存储过程:CREATE PROCEDURE [ScoreList]AS SELECT W.[班年级名称],W.[平均综合成绩]FROM (SELECT [班级] AS [班年级名称],AVG(成绩) AS [平均综合成绩]FROM [表名]GROUP BY [班级]UNION SELECT [年级] AS [班年级名称 ,AVG(成绩) AS...
sql数据库设计
答:
sql数据库设计
80 1、自选题材设计数据库。2、写出需求分析报告,要求描述出系统支持的功能,以及可实现的查询功能。3、通过数据字典描述数据库中数据项的基本内容。4、画出E-R图5、应用SQLServer设计数... 1、 自选题材设计数据库。2、 写出需求分析报告,要求描述出系统支持的功能,以及可实现的查询功能。3、 ...
SQL数据库设计
求助
答:
约束名可自己取名。如:stuInfo中有stuAge字段,可以添加检查约束:alter stuInfo add constraint ck_stuAge check(stuAge>0 and stuAge<100)'查询分析器’中却看不到这些约束的问题可能是由于登陆的用户不一致造成的,“企业管理器”使用了Windons身份验证,‘查询分析器'中用了
sql
身份验证。
求
SQL数据库设计
实例
答:
在MySQL中,可以使用CREATEDATABASE语句创建数据库,语法格式如下:CREATEDATABASE[IFNOTEXISTS][[DEFAULT]CHARACTERSET][[DEFAULT]COLLATE];[]中的内容是可选的。语法说明如下::创建数据库的名称。MySQL的数据存储区将以目录方式表示My
SQL数据库
,因此数据库名称必须符合操作系统的文件夹命名规则,不能以...
SQL
高手
请进
答:
存储过程可包含程序流、逻辑以及对
数据库
的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以出于任何使用
SQL
语句的目的来使用存储过程,它具有以下优点:可以在单个存储过程中执行一系列 SQL 语句。可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。存储过程在创建...
大家正在搜
sql数据库设计数据字典
sql数据库设计
sql数据库设计与开发
sql数据库设计案例
sql数据库项目设计
数据库sql设计题
数据库课程设计sql
什么是数据库设计
数据库设计三个步骤