首页 > 其他分享 >约束

约束

时间:2024-03-13 22:11:51浏览次数:15  
标签:COMMENT 01 DEFAULT 约束 user NULL id

一、常见分类

约束描述关键字
非空约束 限制该字段的数据不能为null NOT NULL
唯一约束 保证该字段的所有数据都是唯一、不重复的 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
默认约束 保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT
检查约束(8.0.1版本后) 保证字段值满足某一个条件 CHECK
外键约束 用来让两张图的数据之间建立连接,保证数据的一致性和完整性 FOREIGN KEY

二、演示

常见约束

create table user(
    id int primary key auto_increment,       #主键且自增长      PRIMARY KEY,AUTO_INCREMENT 
    name varchar(10) not null unique,        #不为空且唯一      NOT NULL,UNIQUE
    age int check(age > 0 and age < 120),    #大于0且小于120   CHECK
    status char(1) default '1',              #未指定时默认值1   DEFAULT
    gender char(1)                           #无约束
);

外键约束

准备两张表和数据:

CREATE TABLE dept(
  id INT AUTO_INCREMENT COMMENT '部门ID' PRIMARY KEY,
  name VARCHAR(50) NOT NULL COMMENT '部门名称'
) COMMENT '部门表';

INSERT INTO dept(id,name)VALUES(1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办');

CREATE TABLE emp(
  id INT AUTO_INCREMENT COMMENT '员工ID' PRIMARY KEY,
  name VARCHAR(50) NOT NULL COMMENT '姓名',
  age INT COMMENT '年龄',
  job VARCHAR(20) COMMENT '职位',
  salary INT COMMENT '薪资',
  entrydate DATE COMMENT '入职时间',
  manageid INT COMMENT '直系领导ID',
  dept_id INT COMMENT '部门ID'
) COMMENT '员工表';

INSERT INTO emp(id,name,age,job,salary,entrydate,manageid,dept_id) 
VALUES(1,'王林',701,'总裁',50000,'2021-01-01',null,5),
      (2,'天运子',32000,'项目经理',30000,'2021-09-01',1,1),
      (3,'司徒南',12000,'开发',9500,'2021-01-01',2,1),
      (4,'李慕婉',290,'开发',6800,'2021-01-01',2,1),
      (5,'血祖',39000,'开发',7200,'2021-01-01',3,1),
      (6,'申公虎',21000,'测试',4900,'2021-01-01',2,1);

 

1where是分组之前进行过滤,不满足where条件的数据不参与分组,而having是分组之后对分组结果进行过滤。

2.where不能对聚合函数进行判断,having可以。

三、示例

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `job` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `user` VALUES ('1', '张三', '25', '男', '会计');
INSERT INTO `user` VALUES ('2', '李四', '22', '男', '人事');
INSERT INTO `user` VALUES ('3', '王五', '21', '女', '业务员');
INSERT INTO `user` VALUES ('4', '赵六', '23', '女', '业务员');
#查询大于1人的职业
SELECT job,COUNT(1) FROM `user` GROUP BY job HAVING COUNT(1)>1

标签:COMMENT,01,DEFAULT,约束,user,NULL,id
From: https://www.cnblogs.com/cheng8/p/18071667

相关文章

  • c++20 模板约束
    concept在c++20中,提案许久的concept被加入到标准中了,这也意味着不用再写恼人的SFINAE了(除非你是一个受虐狂,喜欢对着一堆报错中找到错误的位置)。c++20之前在c++20之前,如果需要对模板实参进行编译期检查,只能使用SFINAE,或者是部分使用c++17添加的ifconstexpr进行......
  • 第13章_约束
    第13章_约束讲师:尚硅谷-宋红康(江湖人称:康师傅)官网:http://www.atguigu.com1.约束(constraint)概述1.1为什么需要约束数据完整性(DataIntegrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效......
  • MYSQl学习笔记19: 外键约束
    外键约束用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性具有外键的表(emp)称为子表外键关联的表(dept)称为父表外键约束创建表时添加createtable表名(字段名数据类型,[constrain][外键名称]foreignkey(外键字段名)references主表(主表......
  • MYSQL学习笔记20: 外键约束(删除/更新行为)
    外键约束删除/更新行为setdefault在mysql的默认引擎innodb中不支持CASCADEaltertable表名addconstraint外键名称foreignkey(外键字段)references主表名(主表字段名)onupdatecascadeondeletecascade;建立外键约束#如果父表和子表建立外键的字段有不同的......
  • MYSQL学习笔记18: 约束
    约束约束是作用于表中字段上的规则,用于限制存储在表中的数据.保证表中的正确性,有效性和完整性约束作用于表中字段上,可以在建表和修改表时为表添加约束按照需求创建表,并创建约束createtableusers(idintprimarykeyauto_incrementcomment'主键',n......
  • (笔记)Vivado操作之时序约束介绍
     一、前言      任何一个FPGA工程都需要设置相关的时序约束,下面将介绍Vivado中如何进行时序约束操作以及各种约束的使用方法。 二、时序约束界面        在一个工程运行到IMPLEMENTATION后,进入到左侧的FlowNavigator窗口,点击IMPLEMENTION下的EditConstraint......
  • Z3约束器使用流程
    Z3约束器使用流程创建变量例:x=Int('x')y=Int('y')2.创建solver求解器例:s=Solver()3.添加约束条件例:s.add(x+y==10)4.检查solver中的约束是否满足例:s.check()5.利用model()输出运算结果例:s.model()Z3-examplefromz3import*v2=[18564,37316,32053,33......
  • Java正则约束密码
    1.密码只能是数字、小写英文字母、大写英文字母、下划线组成,且密码至少包含3种,长度至少有11位。//定义字符串Stringpassword="slwoei123_1";//匹配字符串Stringverify="^(?![a-zA-Z]+$)(?![a-z\\d]+$)(?![a-z_]+$)(?![A-Z\\d]+$)(?![A-Z_]+$)(?![\\d_]+$)[a-zA-Z\\d_]{1......
  • MySQL之约束条件
    表完整性约束介绍:约束条件与数据类型的宽度一样,都是可选参数作用:用于保证数据的完整性和一致性主要分为:DEFAULT为该字段设置默认值NOTNULL标识该字段不能为空UNIQUEKEY(UK)标识该字段的值是唯一的AUTO_INCREMENT标识该字段的值自动增长(整数类型,而且为主......
  • 或许我们都被分库分表约束了思维
    概述这篇文章没什么太多的干货,纯纯是一篇讨论和思考帖。从业数据库领域三年有余了,从分库分表中间件到数据库团队内核学到了很多东西。也接触了很多项目,包括TiDB、Vitess、Polardb、StarDB等等。国内的项目好像很多都聚焦于分库分表的概念,包括很多的数据库团队都在尝试这个概念......