mysql怎么使用数据表 mysql怎样用( 二 )


一般被主键约束了的字段度习惯性的称该字段为该表的主键
单字段主键约束
两种方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
); PRIMARY KEY(id) );
多字段主键约束(复合主键)
这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样 。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz 。这样是可以的 。并不是你们所理解的两个字段分别度不可以相同 。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY, nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外键约束
什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称 , 有些部门的名称可能是同名 。就不能区分了 。),像这样的字段,就符合外键的特点 , 就可以使用外键约束,使该字段只能够存储另一张表的主键 。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值 。
外键约束的特点:
1、外键约束可以描述任意一个字段(包括主键) , 可以为空 , 并且一个表中可以有多个外键 。但是外键字段中的值必须是另一张表中的主键 。
2、这样被外键关联的两种表的关系可以称为父子表或者主从表 。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表 。
3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样 。
注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键” 。而不是“是外键”) , 并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键 , 指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束 。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的 , 但是大多数人已经习惯了这样,虽然影响不大 , 但是在很多时候需要理解一个东西时,会造成一定的困扰 。
格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES主表名(主键字段)
英文解释:CONSTRAINT:约束REFERENCES:参考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
 解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id
1.2.3:非空约束
NOT NULL. 被该约束修饰了的字段 , 就不能为空,主键约束中就包括了这个约束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一约束
UNIQUE被唯一约束修饰了的字段 , 表示该字段中的值唯一 , 不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的 。

推荐阅读