• MySQL(9):数据表的约束(列的属性)


    1.首先我们看一下这个图:

    1、NULL| not NULL是否为空

         规定一个字段的值是否为NULL

    2、Default value 字段默认值属性

    常见的是一个字段不能为空,而且存在默认值

    create table php2(
    a int not null default 10,
    b int not null default 21
    );

    insert into php2(a) values(a); //a 默认是10
    insert into php2(b) values(b);//b默认是21

    3、primary key |unique key(关键字)

    主索引 | 唯一索引

    可以唯一标识,某条记录的字段或者是字段的集合,就是主键

    主键可以是真实实体的属性

    但是常用的好的解决方案

    利用一个与实体信息不相关的属性,作为唯一标识记录(如下图)、

    设置主键的语法:primary key 完成

    两种方案:

    (1).字段上设置:

    create table teacher(
    t_id int primary key,   //这里主键的类型为 int ,也就是说主键可以为也可以为
    t_name varchar(5),
    class_name varchar(6),
    days tinyint unsigned
    );

    t_id 设置为主键之后,默认不能为null,

    主键就是搜索的时候用到的关键字

    (2).在定义完了字段之后,可以定义为:

    create table teacher1(
    t_id int,
    t_name varchar(5),
    class_name varchar(6),
    days tinyint unsigned,
    primary key(t_id)
    );

    下面可以清楚地看到t_id 为 no null

    也可以同时设置多个字段构成唯一主键(每个表:主键是唯一的),如下:

    create table teacher2(
    t_id int,
    t_name varchar(5),
    class_name varchar(6),
    days tinyint unsigned,
    primary key(t_id,class_name)// t_id 和 class_name 两个字段
    );

    4.自动增长

    目的:为每条记录提供一个唯一的标示

    每次插入记录时,将某个字段的值自动增加1;

    使用auto_increment 标识

    需要整型,还需要有索引…………

    create table teacher3(
    t_id int primary key auto_increment,
    t_name varchar(5),
    class_name varchar(6),
    days tinyint unsigned
    );

    添加两条语句:

    insert into teacher3 values(null, 'hebao', '0228', 34);

    insert into teacher3 values(null, 'bufan, '0223', 45);

    如下图:发现这个t_id 是唯一的自动增长的

    alter table teacher3 auto_inscrement 10;

    insert into teacher3 values (null, 'fei', '0115', 32);

    如果这时候我们再次:

    alter table teacher3 auto_increment 5;
    insert into teacher3 values(null, 'fly','0115', 98);

    出现的结果是:你会发现新增加的 是以 11 为id索引的

    当然主键也可以在初始化

    insert into teacher3 values(5, 'flrt','0123', 56);
    这个插入的元素是在'bufan'后面的

    1

    2

    5

    .

    .

    .

    只要键值唯一不冲突,也是可以修改的,如下:

    update  teacher3  set t_id=21  where  t_name='赵A' ;

  • 相关阅读:
    合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
    行转列和列转行
    递归删除指定目录下所有文件及子目录
    有两个字符串数组a和b,寻找相同元素 (a和b都比较大)
    在Sql Server 数据库中找到含某个词的所有字段
    一段JavaScript程序
    事实表计数比事实表数据量大
    Reporting Service报表设计常见技巧及问题解法
    使用WebService的方式调用部署在服务器的Wcf服务
    LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4) ?
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4663287.html
Copyright © 2020-2023  润新知