MySQL

MySQL建表约束

  • 主键约束(primary key)

能够唯一确定一张表中的一条记录,通过给耨个字段添加约束石特改字段不重复且不为空

create table user(

       id int primary key,

       name varchar(20));

注:id 不能为空且不重复

create table user2 (id int,
 name varchar(200),
 password varchar(20),
 primary key(id,name));

多个字段组成的主键只要联合主键加起来不重复就可以,且不能为空

  • 自增约束(auto_increment)

create table user3(
     id int primary key auto_incrment,
     name varchar(20));

#插入只有name没有ID
insert into user3 (name) values('zhangsan');

没有插入ID但是自动加入

  • 注:建表是未添加自增和主键约束如何添加
create table user4(id int,
     name varchar(20));

  • 通过  alter table user4 add paimary key(id);添加

  • 如何删除:alter table user4 drop primary key

  • 修改主键约束:alter table user4 modify id primary key;

  • 外键约束

涉及两个表,父表子表

#先创建一个class表
create table classes(
    id int primary key,
    name varchar(20)
);
#再创建一个student表
create table students(
   id int primary key,
   name varchar(20),
   class_id int, #关联class表的ID
   foreign key(class_id) references classes(id) #指明必须来自class——id


inster into classes  values(1,'一班');
inster into classes  values(2,'二班');
inster into classes  values(3,'三班');
inster into classes  values(4,'四班');


insert into students values(1001,‘张三’);
insert into students values(1002,‘张三’);
insert into students values(1003,‘张三’);
insert into students values(1004,‘张三’);

主表classes中没有的数据在副表students中是不可以使用的,主表中的记录被应用,是不可以被删除的

  • 唯一约束(unique)

约束修饰字段的值不可以重复

create table user5(
    id int ,
    name varchar(20));

alter table user5 add unique(name);


或
create table user5(
    id int ,
    name varchar(20),unique(name));#可添加多个字段
或
create table user5(
    id int ,
    name varchar(20) unique);

  • 如何删除约束:alter table user5 drop index name;

  

  • 通过modify添加:alter table user5 modify name varchar(20) unique;

 

  • 非空约束(not null)

修饰的字段不能为null

create  table user6 (
    id int,
    name varchar(20)not null);

 

  • 默认约束(default)

当我们插入字段值时,如果没有出入值,就会使用默认值

create table user7(
   id int ,
   name varchar(20),
    age int default 10);

insert into user7 (id ,name) values(1,'zhangsan');

没有传值时为默认值,传值后为传入的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值