MySQL约束和分类

6 篇文章 0 订阅
6 篇文章 0 订阅

约束

  • 定义
    为了保证数据的一致性完整性,SQL规范以约束的方式来对表数据进行额外的条件限制

  • 解释

    • 约束是表级的强制规定(并不准确,因为由列级约束的存在)
    • 规定约束
      • 建表时规定约束
      • 建表后,通过ALTER TABLE语句来规定
  • 约束的种类

    • 非空约束(NOT NULL)
    • 唯一约束 (UNIQUE)
    • 主键 (PRIMARY KEY)
    • 外键 (FOREIGN KEY)
    • DEFAULT
    • CHECK 检查约束(MySQL不支持,不讨论)
  • 按约束范围分类

    • 列级约束
    • 表级约束

    非空约束,唯一约束,主键,外键都既可以是表级约束,有可以是列级约束

    DEFAULT属于列级约束


  • 非空约束

    • 使用
    /* 建表时 */
    CREATE TABLE t_user(
        id INT PRIMARY KEY auto_increment,
        name VARCAHR(32) NOT NULL
    );
    
    /* 对现有表增加非空约束 */
    ALTER TABLE emp
    MODIFY sex VARCHAR(30) NOT NULL;
    
    /* 取消非空约束 */
    ALTER TABLE emp
    MODIFY sex VARCHAR(30) NULL;
    
    /* 取消非空约束,增加默认值 */
    ALTER TABLE emp
    MODIFY sex VARCHAR(30) DEFAULT '男' NULL;
    
    • 解释
      • 规定指定字段不能为NULL
      • ""属于空字符串,不属于空NULL,下属语句可以正确执行
        INSERT INTO t_user(name) VALUE("");
  • 唯一约束

    • 使用
    /* 建表时规定 列级约束 */
    CREATE TABLE t_user(
        id INT PRIMARY KEY auto_increment,
        name VARCHAR(32) NOT NULL,
        email VARCHAR(32) UNIQUE
    );
    
    /* 建表时规定 表级约束 */
    CREATE TABLE t_user(
        id INT PRIMARY KEY auto_increment,
        name VARCHAR(20),
        email VARCHAR(20),
    --  UNIQUE(name, email)  /* 表级约束 */
        
        CONSTRAINT t_user_n_e UNIQUE(name, email) /* 定义别名,方便统一的管理 */
    );
    
    /* 删除唯一约束 */
    ALTER TABLE USER
    DROP INDEX uk name pwd;
    
    • 注意:
      • 指的是设置的两列不能同时重复
        ,相当于把几个表级约束组成一个字符串,要求该字串不能重复
  • PRIMARY KEY约束

  • FOREIGN KEY约束


分页(LIMIT)

  • 背景: 查询返回的记录太多,查看不方便,所有就通过分页的方式来方便数据的查看。
  • 实现分页的方法
    • LIMIT 9, 10;

    • LIMIT 10 OFFSET 9

      上述两条公式,实现的效果是一样的。都是从第9条后的一条数据起,查询10条数据

      若引入pageSize(页大小),pageNum(页号)两个变量,那么分页查询具有一下计算公式

      SELECT *
      FROM employees
      LIMIT (pageNum-1)*pageSize, pageSize;
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值