MySql教程

mysql建表的各种约束

本文主要是介绍mysql建表的各种约束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# MySQL建表约束


    # 主键约束=====================================================
        # 唯一确定一张表的一条记录,可以使得字段  不重复   且    不为空
        create table test_primary(
            id int(10) primary key ,# 创建主键约束
            name varchar(20)
        );


        # 联合主键/复合主键(多个字段作为主键)
        # 只要主键多个字段加起来不重复即可
        create table test_primary_2(
            id int,
            name varchar(20),
            pwd varchar(20),
            primary key (id, name)
        );

        insert into test_primary_2 (id, name, pwd)
        values (1,'tom','123');

        insert into test_primary_2 (id, name, pwd)
        values (1,'bob','321');





    # 自增约束=====================================================
        # 自动生成 auto_increment 标记的字段
        # 一般用于生成id

        #建表
        create table  test3(
            id int primary key auto_increment,#自增约束
            name varchar(20)
        );
        #插入数据
        insert into test3 (name)
        values ('法外狂徒');

        insert into test3 (name)
        values ('张三');


    # 外键约束=====================================================
        # 涉及到两张表
        # 例子

        #班级表
        create table classes(
            id int primary key auto_increment ,
            name varchar(20)
        );

        # 学生表
        create table student(
            id int ,
            name varchar(20),
            class_id int,
            #学生表的外键为class_id,引用自 classes 表的id字段
            foreign key (class_id) references classes(id)
        );

        #插入数据
            insert into classes (name)values ('一班');
            insert into classes (name)values ('二班');
            insert into classes (name)values ('三班');
            insert into classes (name)values ('四班');



            insert into student (id, name, class_id) values (1001,'张三',1);
            insert into student (id, name, class_id) values (1002,'张三',2);
            insert into student (id, name, class_id) values (1003,'张三',3);
            insert into student (id, name, class_id) values (1004,'张三',4);


            #无法插入,因为有未见约束,classes表中没有 5 这个id
            insert into student (id, name, class_id) values (1005,'李四',5);
            #无法删除,因为被引用了
            delete from classes where classes.id = 4;



            desc classes;
            desc student;










    # 唯一约束=====================================================
        # 约束字段的值不能重复
        create table user_1(
            id int,
            name varchar(20)
        );

        # 约束字段 'name' 必须唯一
        alter table user_1 add unique (name);
        desc user_1;

        # modify 改变字段属性
        alter table user_1 modify name varchar(30) unique ;
        desc user_1;

        # 删除唯一约束
        alter table user_1 drop index name;
        desc user_1;



    # 非空约束=====================================================
        #修饰的字段不能为空
        create table user_2(
            id int,
            name varchar(20) not null # 属性不能为空
        );

        # 改变字段结构属性不为空
        # alter table user_2 modify name varchar(20) not null;
        desc user_2;



    # 默认约束=====================================================
        # 插入字段时没有传值绘制用的默认值;

        create  table user_3(
            id int auto_increment,
            name varchar(20) ,
            age int default 10, #不传年龄默认使用10
            primary key (id)
        );

        insert into user_3 (name)
        values ('test');

        desc user_3;

 

这篇关于mysql建表的各种约束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!