【MySQL | 三、 表的约束先容】

打印 上一主题 下一主题

主题 1052|帖子 1052|积分 3156

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
举例表结构

字段名称字段范例是否NULL键值默认值附加信息FieldTypeNullKeyDefaultExtraidintNoUNI(唯一键)Nullauto_incrementnameverchar(10)NoPRI(主键)NullgenderenumNomanagetinyintYesNulltelphoneintYesNullhome_idintyesMUL(外键)Null
  
1. 空属性



  • 两个值:null(默认的)和 not null(不为空)

    • Null:是一种特殊的值,表示数据缺失、未知大概未界说。比方,在一个记录客户信息的数据库中,假如还没有获取到客户的电子邮箱地点,那么该“电子邮箱”字段可以设为Null。
    • Not Null:是一种约束条件,即必须有一个确定的值。比如在一个订单表中,“订单编号”字段通常被界说为Not Null,因为每个订单都必须有一个唯一的编号来标识。

  • 数据关联方面

    • Null:在外键关联中,答应外键为Null可以表示一种松散的关联关系大概未关联的状态。比方,在一个用户 - 部分关系表中,用户的“部分ID”外键为Null可以表示该用户还没有分配到具体的部分。
    • Not Null:当外键为Not Null时,强制建立了两个实体之间的紧密关联。比方,在一个订单 - 客户关系表中,“客户ID”外键为Not Null,这意味着每个订单都必须关联到一个具体的客户,保证了业务逻辑的完整性

  • 创建表时数据库默认字段字段为空(default null),但是实际开辟时,尽可能保证字段不为空,因为数据为空无法参与运算。
用法:
  1. mysql > CREATE TABLE 表名称 (
  2.      -> 字段1 数据类型 not null
  3.          -> );
复制代码
2. 默认值 Default



  • 默认值的生效:数据在插入表数据的时候没有给该字段赋值,且该字段存在默认值,就使用默认值,否则报错。
用法:
  1. mysql> create table 表名称 (
  2.         -> name varchar(20) not null,
  3.         -> age tinyint unsigned default 0,
  4.         -> gender char(2) default '男'
  5.         -> );
  6.         --注意:not null和defalut一般不需要同时出现,
  7.                    因为default本身有默认值,不会为空
复制代码
3. 列形貌 commenet

列形貌:在构建表结构时用comment来做形貌,类似于解释,没有实际寄义,专门用来形貌字段,会根据表创建语句保存,用来给步伐员或DBA来举行了解
用法:
  1. mysql> create table tt12 (
  2.         -> name varchar(20) not null comment '姓名',
  3.         -> age tinyint unsigned default 0 comment '年龄',
  4.         -> sex char(2) default '男' comment '性别'
  5.         -> );
复制代码
4. 主键 primary key



  • 一张表中最多只能有一个主键
  • 主键所在的列通常是整数范例
  • 复合主键

    • 一个主键可以是多列
    • primary key( [字段1], [字段2] )

  • 主键约束:

    • 唯一性:主键的值在表中必须是唯一的,不能重复。
    • 非空性:主键列的值为 NOT NULL。这是因为 NULL 表示缺失或未知的数据,而主键必要明白地标识每一行,不能是不确定的。

  • 用法:
    1. mysql> create table t2 (
    2.     -> name varchar(10) primary key
    3.     -> );
    4. Query OK, 0 rows affected (0.00 sec)
    5. #复合主键用法:
    6. mysql> create table t3 (
    7.     -> name varchar(10),
    8.     -> age int,
    9.     -> constraint pk_constraint_name primary key(name, age)
    10.     -> );
    11. Query OK, 0 rows affected (0.01 sec)
    复制代码
  • 主外键自界说名称 constraint,用法如上。
5. 唯一键 unique key

一张表中有每每有很多字段必要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段必要唯一性约束的问题。
唯一键的本质和主键差不多。


  • 与主键比唯一键答应为NULL,而且可以多个为NULL。
  • 用法:
    1. mysql> create table student (
    2.         -> id char(10) unique key comment '学号,不能重复,但可以为空',
    3.         -> name varchar(10)
    4.         -> );
    5. Query OK, 0 rows affected (0.01 sec)
    复制代码
6. 外键 foreign key (字段名) references 主表(列)



  • 主表

    • 也称为父表,是在关系型数据库中拥有主键(Primary Key)的表。主键是一个或多个列的组合,其值唯一标识表中的每一行。主表中的数据通常是基础信息,不依赖于其他表的数据而存在。比方,在一个学生管理体系中,有一个 “班级” 表,它包含班级的基本信息,如班级编号(作为主键)、班级名称等,这个 “班级” 表就是主表。

  • 从表

    • 也称为子表,是包含外键(Foreign Key)的表。外键是一个或多个列,其值引用主表中主键的值,从表中的数据依赖于主表的数据而存在。继承上面的例子,有一个 “学生” 表,此中包含学生的信息,并且有一个 “班级编号” 列,该列引用 “班级” 表中的 “班级编号”,那么 “学生” 表就是从表。

  • 主表则必须是有主键约束或unique约束。
  • 外键约束

    • 存在性约束:当在从表中插入或更新一条记录时,该记录的外键列的值必须是主表中主键列已经存在的值。这是为了保证数据的一致性和关联性。
    • 答应 NULL 值:在某些情况下,外键列可以为 NULL。这通常表示一种特殊情况,即从表中的数据与主表中的数据没有关联。例,可能存在一些员工临时未分配到任何部分,这时在 employees 表中该员工的 department_id 可以为 NULL。但这必要在界说外键时答应 NULL 值

  • 用法
    1. #先创建主表
    2. mysql> create table myclass (
    3.     -> id int primary key,
    4.     -> name varchar(30) not null comment'班级名'
    5.     -> );
    6. #创建从表
    7. mysql> create table stu (
    8.     -> id int primary key,
    9.     -> name varchar(30) not null comment '学生名',
    10.     -> class_id int,
    11.     -> foreign key (class_id) references myclass(id)
    12.     -> );
    复制代码
    foreign key (字段名) references 主表(列)
7. 自增长 auto_increment

auto_increment:当插入数据时,若有该属性的字段被忽略,数据库会在上个值的基础上自动+1,得到一个新的差别的值。通常和主键搭配使用,作为逻辑主键。


  • 任何一个字段要做自增长,数值必须要有唯一性。
  • 自增长字段必须是整数
  • 一张表最多只能有一个自增长列

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表