
你的问题没有问明确啊
如果你是在编写vb程序的时候新建数据库的话,那么:
1代码新建空数据库
2代码新建一个数据表如“成绩单”,并设置其中姓名为主键,则SQL代码如下:
CREATE TABLE [成绩单]([姓名] int identity primary key '这里“姓名”被设置为主键。
如果你是直接打开数据库设置主键的话,那么:
你用“使用设计器创建表”完毕,在要设置为主键的名称(如姓名)左侧右键单击后出来的菜单内有“主键”二字,点击“主键”即可完成,如下图所示:
如果在 MySQL 创建表时提示主键不存在,可能有以下几种原因和解决办法:
主键字段未定义:在创建表时,应该明确指定一个字段作为主键。如果主键字段没有被定义,则需要使用 ALTER TABLE 语句添加主键。
不符合主键要求:主键是一组唯一的值,因此不允许重复或空值。如果您尝试将重复或空值插入主键字段,则会收到错误消息。请检查您的数据并确保满足主键的要求。
数据库引擎不支持主键:某些数据库引擎不支持主键。例如,MyISAM 引擎不支持外键约束。如果您正在使用这些引擎,您可以选择 InnoDB 引擎或其他支持主键的引擎。
主键名称已存在:如果您在创建表时指定了主键名称,则必须确保该名称在数据库中唯一。如果该名称已被使用,您需要更改主键名称。
综上所述,如果 MySQL 在创建表时提示主键不存在,请检查以上问题并采取相应的措施。
主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的id作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班id
1班
xx同学id
1班id
1班
xx同学id
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
下面简单给你讲下大概建成的表结构
--建班级表
create
table
class(
classid
int
primary
key,--定义班级id为主键
classname
varchar(15)
)
--建学生表
create
table
students(
studentid
int
primary
key,--定义学生id为主键
classid
int
,--外键值,跟班级表classid
属性类型相同
stuname
varchar(20),--学生姓名
---定义外键
foreign
key(classid)
references
class(classid)
--本表classid是基于class表classid的外键
)
---------
如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:
--在班级表为空的情况往学生表插入一条记录是不允许的:
insert
into
students(studentid,classid,stuname)values(1,1,'小明')
系统会抛出异常提示主键表班级表内班级id不存在这样是不允许插入的;
必须要先往班级表内插入一条记录:
insert
into
class(classid,classname)values(1,'一班')
后才能执行插入前面一条往学生表插入信息的语句
--------------可了解一些了?真累啊
1、保证每个实体的完整性;
2、加快数据库的 *** 作速度,更好地给用户带来体验;
3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
扩展资料:
主键的使用规则介绍:
1、任意两行都不具有相同的主键值;
2、每行都必须具有一个主键值(主键列不允许NULL值);
3、可以使用多个列作为主键,但是所有列值得组合必须是唯一的(但单个列的值可以不唯一);
4、不更新主键列中的值;
5、不重用主键列的值;
6、不在主键列中使用可能会更改的值(例如,供应商的名字,如果供应商更改了名字,你就得改这个主键)。
参考资料来源:百度百科-数据库主键
ALTER TABLE 选课表 \x0d\ ADD CONSTRAINT pk_选课表 PRIMARY KEY(学号, 课程编号);\x0d\\x0d\一个表只能一个主键\x0d\\x0d\主键可以由2个字段组成
1、为了方便大家理解,使用一个例子来帮助大家理解。意思大概就是通过引用表二中的字段完成对表一字段的约束。方法:
2、这里一共两个表,先创建外键表,因为先有外键,主键才能引用。首先创建数据库,新建查询。
3、新建外键表teacher,输入命令:create table teacher。添加需要的字段teacher_xingming并设置它为主键。输入命令:teacher_xingming nchar(10) primary key,
4、选中需要执行的命令行,单击执行,下方会有是否成功的提示。现在对表进行刷新 *** 作后,会发现已经成功创建了一个新表teacher。
5、接下来就要创建学生表了,create table student(\tstudent_xingming nchar(10) primary key not null,——该程序段意思为创建一个student表,表中新建一个主键student_xingming字段,类型为nchar(10) ,并不允许为空。
6、继续写,输入:student_banji nchar(10) not null,——表中新建一个student_banji字段,类型为nchar(10) ,并不允许为空。
7、创建外键,输入命令student_jiaoshi nchar(10) foreign key references teacher(teacher_xingming)看起来很长,实际意思很简单:表中新建一个student_jiaoshi字段,它是外键,nchar(10)类型,它来至 teacher_xingming中的内容。
8、选中,点击执行,没有错误,就说明成功了。刷新一下表,看看是不是多了一个表student?所有约束已经创建好了。
9、来试一下看看是否真正实现所说的功能。打开teacher表,填写“刘老师”。打开student表,前面任意填,最后填写“刘老师”,没有错误说明没问题。
10、如何想测试约束是否真的有效,填写其他内容,看看是否成功,只要不是teacher字段中的内容,他就会报错。
以上就是关于在新建数据库(Access)中,如何设置主键全部的内容,包括:在新建数据库(Access)中,如何设置主键、MySQL创建表时提示主键不存在怎么办、数据库建表主键外键怎么创建合适等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)