美文网首页
约束类型测试5

约束类型测试5

作者: name_cc2f | 来源:发表于2019-01-16 09:15 被阅读0次

目的:

解决单列主键无法保持唯一性的问题

例如:记录主机地址和服务的数据表是否运行的表。

![图示1](https://img.haomeiwen.com/i15572377/0c09670af73d8dfc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

目标

表school.service

host_ip 主机IP

service_name 服务名

por 服务对应的端口

allow(Y,N) 服务是否允许访问

主键: host_ip + port = primary key

创建数据表

mysql> create table service(

host_ip varchar(15) not null,

service_name varchar(10) not null,

port varchar(5) not null,

allow enum('Y','N') default 'N',

primary key(host_ip,port)

);

Query OK, 0 rows affected (0.00 sec)

(关键部分,复合主键设置方法

primary key(host_ip,port))

查看表结构

mysql> desc service;

+--------------+---------------+------+-----+---------+-------+

| Field        | Type          | Null | Key | Default | Extra |

+--------------+---------------+------+-----+---------+-------+

| host_ip      | varchar(15)  | NO  | PRI | NULL    |      |

| service_name | varchar(10)  | NO  |    | NULL    |      |

| port        | varchar(5)    | NO  | PRI | NULL    |      |

| allow        | enum('Y','N') | YES  |    | N      |      |

+--------------+---------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

![图示2](https://img.haomeiwen.com/i15572377/7373d46599a4bef1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

插入数据

mysql> insert into service values ('192.168.2.168','ftp','21','Y');

mysql> insert into service values ('192.168.2.168','httpd','80','Y');

总结:

复合主键是当多列组合唯一

案例:

在mysql系统内部对于mysql账户的记录就是复合主键(用户名+主机地址)

mysql> desc mysql.user;

+------------------------+-----------------------------------+------+-----+---------+-------+

| Field                  | Type                              | Null | Key | Default | Extra |

+------------------------+-----------------------------------+------+-----+---------+-------+

| Host                  | char(60)                          | NO  | PRI |        |      |

| User                  | char(16)                          | NO  | PRI |        |      |

| Password            | char(41)                          | NO  |    |        |      |

| Select_priv        | enum('N','Y')                  | NO  |    | N      |      |

| Insert_priv          | enum('N','Y')                  | NO  |    | N      |      |

相关文章

  • 约束类型测试5

    目的: 解决单列主键无法保持唯一性的问题 例如:记录主机地址和服务的数据表是否运行的表。 ![图示1](https...

  • 约束类型测试6

    目的 配合整数型,主键使用自动增长约束 创建表插入数据 表company.department3 CREATE T...

  • 约束类型测试2

    ===设置主键约束 PRIMARY KEY 目的: 1、primary key 字段的值是不允许重复,且不允许NU...

  • 约束类型测试3

    目的: 1 unique唯一的特性。 2 unique是可以为空的。 为部门创建一张员工信息表 创建表: 表com...

  • 约束类型测试1

    1、===默认值、空值:DEFAULT、NOT NULL (LAB1) 目的: 1 某列设置默认值,并不输入数值,...

  • 约束类型测试4

    目的: 使两张表产生关联,同步更新内容。 创建员工信息表,创建员工薪资表。观察同步效应 创建父表 父表compan...

  • 2019-01-14mysql完整约束

    1,完整约束 注意:unsigned ,zerofill 一般适用于整数类型的值 2,类型测试 1 unsigne...

  • 类型约束

    1、遇到问题 今天学到函数强类型参数,在尝试编译时,却总是报错。 编译的代码 编译出现的错误如下 Catchabl...

  • 约束类型

    目的: 由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。 用于保证数据的完整性和一致性...

  • 简述泛型约束的使用

    一共有5种不同的泛型约束 值类型约束:要求泛型参数必须是值类型,例如int,short以及自定义的stuct等 p...

网友评论

      本文标题:约束类型测试5

      本文链接:https://www.haomeiwen.com/subject/spfudqtx.html