约束:约束是添加在 列 上的,用来约束列。
一、主键约束 primary key(~)
当表的某一列被指定为主键之后,该列就不能为空,不能有重复值出现,这样主键才能唯一标识一条记录。
1.主键的三个特性:
a.非空 b.唯一 c.被引用(被外键引用时)
2.创建表时指定主键的两种方式:
//方式一:
create table 表名(
id int(11) primary key,
);
//方式二:
create table 表名(
id int(11);
prinmary key(id)
);
3.修改表时指定主键:
alter table 表名 add primary key(主键列);
4.删除主键:
alter table 表名 drop primary key;
二、主键自动增长 auto_increment
因为主键列的特性是:唯一、非空,因此我们通常指定主键列为整型,并且设置其为自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。
1.设置自动增长:
create table 表名(
id int(11) primary key auto_increment,
);
2.修改表时设置主键自动增长:
alter table 表名 change 原主键列名 新主键列名 新类型 auto_increment;
3.修改表时删除主键自动增长:
alter table 表名 change 原主键列名 新主键列名 新类型;
4.测试主键自动增长:
三、非空约束 not null
某些列不能插入为null值,所以可对列添加非空约束:
create table 表名(
id int(11) primary key auto_increment,
name varchar(255) not null
);
四、唯一约束 unique
某些列不能插入重复的值,所哟一可对列添加唯一约束
create table 表名(
id int(11) primary key auto_increment,
name varchar(255) not null unique
);
五、外键约束 foreign key
1.外键的特性
1. 外键必须是其他表的主键
2. 外键可以为空
3. 外键可以重复
2.创建表时设置外键
create table 表名(
id int(11) primary key auto_increment,
name varchar(255) not null unique,
外键列 int(11), //其他表的主键列
constraint 外键名称 foreign key(外键列) references 其他表(主键列)
);
3.修改表时添加外键
alter table 表名 add constraint 外键名称 foreign key(外键列) references 其他表(主键列)
六、概念模型 (常用E-R[实体-关系]图来描述)
当我们要制作一个系统的时候,需要把系统中的实体抽取出来,形成概念模型。例如“部门”、“员工”都是系统中的实体,它们之间有着紧密的关系,概念模型的实体最终会形成JAVA类、数据库表。
实体之间的关系有三种:
1对1 :例如老公和老婆实体之间的关系,每个老公都只有一个老婆,每个老婆也只有一个老公。
1对多:例如部门和员工实体之间的关系,每个部门可以包含很多员工,每个员工只能属于一个部门。
多对多:例如学生和课程实体之间的关系,每个学生可以选修很多课程,每个课程也可以被多个学生选修。
1.如何在Java中体现这种实体之间的关系:
1对1:
public class Husband(
private Wife wife;
)
public class Wife (
private Husband husband;
)
1对多:
public class Department(
private List<Employee> employeeList;
)
public class Employee(
private Department deparment;
)
多对多:
public class Student(
private List<Course> courseList;
)
public class Course(
private List<Student> studentList;
)
2.如何在数据库表中体现这种实体之间的关系:
1对1 :在任意一方的表引入另一方的主键并设置为外键
1对多:在多方的表引入1方的主键并设置为外键
多对多:新建一个表(中间表),引入多方的主键并且联合作为主键,并且两个主键分别作为外键