03_sql创建表时字段属性设置
2018-11-04 本文已影响0人
王康健_0124
数据库表的每个字段都有很多的约束,在我们创建表的时候就可以指定每个表的约束!
PRIMARY KEY
:主键(1.包含唯一属性,一个表只有一个PRIMARY KEY且字段为int类型;2.包含not null属性:不能为空)
格式1:
create table student (
id int(10) primary key
);
格式2:
create table student (
id int(10),
name VARCHAR(20),
primary key(id)
);
UNIQUE
:唯一,不可重复(有唯一约束的字段基本不会设置不可重复约束,UNIQUE
和 PRIMARY KEY
约束均为列或列集合提供了唯一性的保证。PRIMARY KEY
拥有自动定义的 UNIQUE
约束。请注意,每个表可以有多个 UNIQUE
约束,但是每个表只能有一个 PRIMARY KEY
约束。)
方法1:
CREATE TABLE course
(
course_Id int primary key /*主键*/,
class varchar(30) ,
Stu_id int(4),
UNIQUE (Stu_id )/*指定某个字段唯一约束*/
)
方法二:
CREATE TABLE course
(
course_Id int primary key /*主键*/,
class varchar(30) ,
Stu_id int(4) UNIQUE
)
COMMENT
:给字段添加文字描述说明
CREATE TABLE course
(
course_Id int primary key COMMENT '课程id'/*主键*/,
class_name varchar(30) COMMENT '班级名称',
Stu_id int(4) UNIQUE COMMENT '学生编号'
)

NOT NULL
:不能为空(加上not null 后,在插入数据的时候该列必须有值)
CREATE TABLE course
(
course_Id int primary key COMMENT '课程id'/*主键*/,
class_name varchar(30) COMMENT '班级名称' not null,
Stu_id int(4) UNIQUE COMMENT '学生编号' not null
)

AUTO_INCREMENT
:当前字段自增(auto_increment关键字就表示自增。自增字段必须是主键,要定义primary key才行,免得出现插入数据时,提示值重复的问题)
CREATE TABLE course
(
course_Id int primary key COMMENT '课程id'/*主键*/ AUTO_INCREMENT/*自增*/,
class_name varchar(30) COMMENT '班级名称' not null,
Stu_id int(4) UNIQUE COMMENT '学生编号' not null
)
自增字段在执行插入时,可以不输入数据,字段会字段根据上条数据的大小自动+
foreign key
(要设置外键的字段名) references
要关联的表名(关联表里的字段名))
注意:A的主键被B表某个字段引用位外键的话,必须先删除B表后才能再删除A表。
即,drop table student
;会执行失败,因为它的主键现在被course指定为外键,必须先删除course表才能删除student表,不然会报错Cannot delete or update a parent row: a foreign key constraint fails
创建A表:student ,id为主键
CREATE TABLE student (
id INT(10) NOT NULL ,
NAME VARCHAR(20),
PRIMARY KEY(id)
);
创建B表:course,course表中student_id字段的外键是student 表中的id
CREATE TABLE course(
course_id INT(4) AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(20) NOT NULL ,
student_id INT(10),
FOREIGN KEY(student_id) REFERENCES student(id)/*这行为创建外键的写法*/
);

DEFAULT
:添加默认值(DEFAULT 约束用于向列中插入默认值,如果没有规定其他的值,那么会将默认值添加到所有的新记录。)
CREATE TABLE course(
course_id INT(4) AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(20) NOT NULL DEFAULT '谁啊!那么懒不添加值'
);
总结:在添加Constraints的时候,Constraints 之间不需要用符号做分隔例,具体怎么给字段添加约束还是按照实际情况来!
CREATE TABLE course(
course_id INT(4) AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(20) NOT NULL DEFAULT '谁啊!那么懒不添加值'
);