数据库索引、约束添加和删除

约束类型

1. 主键约束primay key Constraint:唯一性 非空性

2. 唯一约束Unique Constraint:唯一性 可以空 但只能有一个

3. 检查约束 Check Constraint:对该列数据的范围、格式的限制

4. 默认约束 Default Constraint:该数据的默认值

5. 外键约束 Foreign keyConstraint:需要建立两表之间的关系并引用主表的列

约束的语法示例:

1. 添加主键约束

Alter table 表名 add Constraint 主键名 primary key(字段)

alter table UserId add constraint PK_UserId primary key (UserId)

2.  添加唯一约束

Alter table 表名 add Constraint 约束名 unique(字段)

alter table UserInfo add constraint UQ_IDNumber unique(IdentityCardNumber)

3.  添加默认约束

Alter table 表名 add Constraint 约束名 default(默认内容) for 字段名

alter table UserInfo add constraint DF_UserAddress default (‘地址不详’) for UserAddress

4.  添加检查约束

Alter table 表名 add Constraint 约束名 check (字段表达)

alter table UserInfo add constraint CK_UserAge check (UserAge between 20 and 40)

5.  添加外键约束

 alter table 从表 add Constraint foreign key (从表外键字段) references 主表 (主表主键)

添加外键约束 (主表UserInfo和从表UserOrder建立关系,关联字段UserId)

alter table UserOrder add constraint FK_UserId_UserId foreign key(UserId)references UserInfo(UserId)

create table person(
    # 建立了主键约束
	id int primary key,
    # 建立了非空约束
    sex int not null,
    # Mysql的非空约束不能指定名字
    name varchar(255) default 'xyz' not null,
    # 下面列可以为空,默认就是可以为空
    address varchar(2) null,
	# unique 就是唯一约束,使用列级语法建立唯一约束
    cert_no varchar(255) unique,
	
	

    # 指定主键约束名为test2_pk,对大部分数据库有效,但对Mysql无效
    # Mysql数据库中该主键约束名仍为 PRIMARY
    #constraint test2_pk primary key(id)
    # 建立多列组合的主键约束
    #primary key(name,address)
	# 使用表级约束语法建立唯一约束
    #unique (cert_no),
    #constraint test2_uk unique(test_pass)
	# 使用表级约束语法建立唯一约束,指定两列组合不允许重复
    #constraint test3_uk unique(name,address)
);

6.  在创建表的时候添加约束

create table product(
  id varchar(32) primary key, #主键
  name varchar(50),
  price double(5,2),
  category_id varchar(32),    #外键,cid varchar(32)保持一致
  constraint foreign key (category_id) references category (cid)
);

create table teacher_table3(
    teacher_name varchar(255),
    teacher_pass varchar(255),
    # 以两列建立组合主键
    primary key(teacher_name,teacher_pass)
);
 
create table student_table3(
    # 为本表建立主键约束
    student_id int auto_increment primary key,
    student_name varchar(255),
    java_teacher_name varchar(255),
    java_teacher_pass varchar(255),
    # 使用表级约束语法建立外键约束,指定两列的联合外键
    foreign key(java_teacher_name,java_teacher_pass) references
    teacher_table3(teacher_name,teacher_pass)
);


# 修改 student_table3 的数据表,增加外键约束
alter table student_table3
add foreign key(java_teacher_name,java_teacher_pass)
references teacher_table3(teacher_name,teacher_pass);

7. 删除约束

alter table 表名 drop Constraint 约束名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值