首页 > 数据库 >mysql约束

mysql约束

时间:2022-12-10 22:55:14浏览次数:50  
标签:school01 primary 约束 key mysql id unique 主键

Mysql约束

约束用于确保数据库的数据满足特定的商业规则

在Mysql中,约束包括:not null 、unique、primary key 、foreign key 和check五种

  1. primary key (主键)的使用(主键列不可以重复)

    create table student(id int primary key#表示id列是主键
    `name` varchar(32),email varchar(32);
                       )
      insert  into student values(1,'mark','[email protected]')
       insert  into student values(2,'smith','[email protected]')
       insert  into student values(1,'tom','[email protected]') #会报错,id为1的列已被设置为主键(不允许重复)

    主键的使用细节

    • 主键是不能重复的,并且不能为空(null)

    • 一张表里面只有一个主键,但是可以是复合主键(可以把id和name看做一个主键)

      create table student(id int ,
                          `name`varchar(32) primary key ,#检测会出现错误(只能有一个主键)
                          primary key (id,`name`))#这一行使用了复合主键的方式,只有id和name同时相同才是违反了主键
    • 主键的指定方式有两种:

      • 字段名 primary key

      • 在表定义最后一行写primary key(列名)

      • 使用Desc表名,可以看到primary key(主键)的情况

     

    unique的使用

    • unique是不能重复的,但是unique是可以为空(null)

    • 一张表里面可以有多个unique值(也就是可以创建多个null值)

      SELECT *FROM school01;
      # 修改school表中的address字段的属性值为unique
      # unique值得使用:unique不能重复,但是其值可以为空,、;
      #如果没有指定not null,则Unique字段可以有多个null
      #一张表里面有多个uniquez字段
      ALTER TABLE school01 MODIFY address VARCHAR(32) UNIQUE;

      INSERT INTO school01 VALUES(11,'张三','云南省','180087612...');
      INSERT INTO school01 VALUES(21,'李四','四川省','170057612...');
      INSERT INTO school01 VALUES(31,'张三','广东省','150084612...');
      INSERT INTO school01 VALUES(41,'王二','湖南省','160086612...');

      DESC school01;

       

     

标签:school01,primary,约束,key,mysql,id,unique,主键
From: https://www.cnblogs.com/nzm-2019/p/16972533.html

相关文章

  • 3、约束(Constraint)
    主键约束(PrimayKey):值唯一,且非空。唯一约束(Unique):值唯一,可以有一个空。检查约束(Check):自定义约束,对值进行限制。非空约束(Notnull):值不为空。外键约......
  • MySQL 5.7中文乱码与远程链接问题
    (MySQL5.7中文乱码与远程链接问题)1.MySQL5.7中文乱码当我们直接在数据库里面输入中文时,保存后出现:Incorrectstringvalue:‘\xE9.....’forcolumn''atrow1出......
  • python连接数据库mysql
    前提:电脑已经安装数据库环境1、导入pymysql库2、建立连接:md=pymysql.connect(host='localhost',user='root',password='数据库密码',db='lili')3、新建游标:cur=md......
  • 力扣175(MySQL)-组合两个表(简单)
    题目:表: Person  表: Address编写一个SQL查询来报告Person表中每个人的姓、名、城市和州。如果personId的地址不在 Address 表中,则报告为空 null 。以......
  • 静态文件配置 django连接MySQL django模型层初识 ORM基本语句
    目录静态文件配置1.问题描述2.静态文件3.资源访问form表单属性补充actionmethod请求方法get请求post请求views层request对象request.methodrequest.POSTrequest.GETpyc......
  • mysql/lightdb for pg/oracle jdbc大数据量插入优化
    10.10.6 大数据量插入优化在很多涉及支付和金融相关的系统中,夜间会进行批处理,在批处理的一开始或最后一般需要将数据回库,因为应用和数据库通常部署在不同的服务器,而且应用......
  • benchmarksql详解及支持mysql、达梦、citus的lightdb benchmarksql分支
    为什么使用benchmarksql压测?因为大多数应用系统使用java开发,并且不使用存储过程,故使用benchmarksql压测数据库最公平,既可以测试数据库,也可以测试JDBC驱动。可以用来......
  • oracle 12.2+支持mysql与postgresql中的collate(排序规则)特性
    sqlserver,mysql,postgresql都支持针对字符串类型定义排序规则的概念(collate),一般来说,排序规则分为三种:基于二进制,是否区分大小写,是否区分重音。例如sqlserver中:SELE......
  • oracle/mysql/lightdb/postgresql java jdbc类型映射
    MySQL数据类型JAVA数据类型JDBCTYPE普通变量类型主键类型BIGINTLongBIGINT支持支持TINYINTByteTINYINT支持不支持SMALLINTShortSMALLINT支持不支持MEDIUMINTIntegerINTEGER......
  • MySQL进阶实战7,查询的执行过程
    @目录一、拆分查询二、分解关联查询三、查询的执行过程四、优化器的一些优化手段1、重新定义关联表的顺序2、将外连接转化为内连接3、使用增加变换规则4、优化count()、max......