,大于49时就走PRIMARY主键索引。...组织ID', `sales_num` double(16,3) NOT NULL COMMENT '销售数量', `report_date` date NOT NULL COMMENT '报表日期...report_product_sales_data_hq_code_orgz_id_index PRIMARY 4 NULL 7624 Using where 开启优化器跟踪查看MySQL... { "reconsidering_access_paths_for_index_ordering": { //到了order by id这边时,MySQL...在order by 主键id时,limit值的大小达到了某个临界值后,改变了执行计划,选择了主键索引,但不知道具体的规则究竟是怎样。
,大于49时就走PRIMARY主键索引。...组织ID', `sales_num` double(16,3) NOT NULL COMMENT '销售数量', `report_date` date NOT NULL COMMENT '报表日期...report_product_sales_data_hq_code_orgz_id_index PRIMARY 4 NULL 7624 Using where 开启优化器跟踪查看MySQL...在order by 主键id时,limit值的大小达到了某个临界值后,改变了执行计划,选择了主键索引,但不知道具体的规则究竟是怎样。...查看是否使用到了最优索引; 利用optimizer trace查看优化器执行过程; 观察mysql的slow_query_log,及时做排查优化。
本文基于 MySQL 8.0.32 源码,存储引擎为 InnoDB。 正文 1....原理分析 insert 语句执行过程中,插入记录到主键索引之前,需要先找插入记录的目标位置。 目标位置为表中主键字段值小于等于新插入记录中主键字段值的最后一条记录之后。...为了防止其它事务更新或者删除这条记录,检查表中记录是否有效之前,InnoDB 会对这条记录加共享普通记录锁。 这就是示例 SQL 执行过程中对 的记录加共享普通记录锁的原因。...我们可以模拟下这个场景,创建 2 个 MySQL 连接,分别执行 delete 语句和 insert 语句。...事务 247916 想要对 的记录加共享普通记录锁被阻塞,进入等待状态。 4. 总结 没有需要总结的内容了。
MySQL练习1 建库建表 数据库 库名:meitao 表 area(区域表) areaID int not null 区域编号(主键) areaName varchar(20) null 区域名称 p_areaID...) customerID int null 客户编号(外键,参照客户表主键) ordersDate date null 订单日期 deliveryDate date null 交付日期 amount decimal...2、环境要求:mysql数据库。...2)–添加一条订单信息:日期(当前日期),商品编号(id为1),数量(2)。 3)–删除商品编号为6的商品。 4)–将所有商品的折扣修改为九八折(0.98)商品编号为3的除外。...(当前日期),商品编号(id为1),数量(2) insert into t_orders values(null,current_date,1,2); -- 删除商品编号为6的商品。
聊一个实际问题:淘宝的数据库,主键是如何设计的? 某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的MySQL军规。其中,一个最明显的错误就是关于MySQL的主键设计。...mysql> CREATE TABLE membermaster -> ( -> cardno CHAR(8) PRIMARY KEY, -- 会员卡号为主键 -> membername varchar...比如,我们有一个销售流水表(trans),记录了所有的销售流水明细。2020 年 12 月 01 日,张三在门店购买了一本书,消费了 89 元。...那么,系统中就有了张三买书的流水记录,如下所示: image-20230705100408722 接着,我们查询一下 2020 年 12 月 01 日的会员销售记录: mysql> SELECT b.membername...门店在添加会员的时候,先到总部 MySQL 数据库中获取这个最大值,在这个基础上加 1,然后用这个值作为新会员的“id”,同时,更新总部 MySQL 数据库管理信息表中的当 前会员编号的最大值。
前言 " 又要开始新项目了,一顿操作猛如虎,梳理流程加画图。这不,开始对流程及表结构了。 我:吧啦吧啦吧啦 …… 老大:这个建表为啥还设置个自增 id ?...老大:流水号在你这是唯一索引吧?设置成主键,这样就不用 id 了,还减少一次回表查询? 我:…… (说的好像很有道理,咱也不敢说话。)...MySQL 自增主键而不是使用业务生成的值当做主键。...一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版
目录Mysql约束(constraint)基本介绍主键约束(primary key)自增长约束(auto_increment)非空约束(not null)唯一性约束(unique)默认约束(default...)零填充约束(zerofill)----图片Mysql约束(constraint)基本介绍 MySQL数据库通过约束(constraints)防止无效的数据进入到数据库中,以保护数据的实体完整性...MySQL中主要有六种约束,分别是:主键约束(primary key),非空约束(not null),自增长约束(auto_increment),默认约束(default) ,零填充约束(zerofill...2.一张表只能有一个主键,联合主键也是一个主键自增长约束(auto_increment) 默认情况下,自增长约束(auto_increment)的初始值是 1,每新增一条记录,字段值自动加...当使用zerofill 时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0~256。
MySQL AB是一家基于MySQL开发人员的商业公司.MySQL是一个关系数据库管理系统。MySQL是开源的。已经被Oracle收购。 ...日期和时间类型 date 只记录日期 2015-01-14 time 只记录时间 11:36:25 year 只记录年 2015...我们可以将该主键设置为自增. 2.使用主键自增可能会造成主键的断层。...3.mysql,sqlserver,sqllite这三个数据库具有该功能. 4.主键自增只能给主键约束的列加。 自增就是 每次插入记录时不需要指定值....where和having都可以加条件? 1.where在分组之前加条件. 2.having在分组之后加条件. where的效率要远远高于having.
65535), zhangSan text(clob):字符串类型; > 很小 > 小 > 中 > 大 blob:字节类型; > 很小 > 小 > 中 > 大 date:日期类型...4) 列运算 I 数量类型的列可以做加、减、乘、除运算 SELECT sal*1.5 FROM emp; SELECT sal+comm FROM emp; II 字符串类型可以做连续运算...1001的学生有一个编号为2001的老师 sid tid 101 201 /*编号为101的学生有一个编号为201的老师*/ 101 202 /*编号为101的学生有一个编号为...202的老师*/ 101 203 /*编号为101的学生有一个编号为203的老师*/ 102 201 /*编号为102的学生有一个编号为201的老师*/ 102 204 /...*编号为102的学生有一个编号为204的老师*/ select * from emp, dept, (select * from emp) where group by having order by
约束分类 主键约束:primary key 单一主键:一个字段做主键 复合主键:多个字段联合做主键(不建议使用) 主键值类型建议 int bigint char 不建议使用 varchar ,主键一般都是定长的...mySQL的日期格式: %Y年 %m 月 %d 日 %h 时 %m 分 %s 秒 str_to_date('日期字符串','日期格式') 比如数据表中员工的入职日期字段 hiredate 的类型是...mysql的标准日期格式存入的,那么查询的时候如果没有特殊要求,可以直接查询。...也可以给列名加别名,像下面这样 select 表名的别名.列名1 列名1的别名,表名的别名.列名2 列名2的别名 from 表名 表名的别名; 去重查询 // 查询表中某列数据,并去掉重复值...where pname like '%_%'; 如果要查询的列名中本身有_,那么要把列名中带有_的所有记录查出来,这个时候需要用到转义符号 \ 在某个范围获得值:in // 查出商品编号为
前言 " 又要开始新项目了,一顿操作猛如虎,梳理流程加画图。这不,开始对流程及表结构了。 我:吧啦吧啦吧啦 …… 老大:这个建表为啥还设置个自增 id ?...老大:流水号在你这是唯一索引吧?设置成主键,这样就不用 id 了,还减少一次回表查询? 我:…… (说的好像很有道理,咱也不敢说话。)...MySQL 自增主键而不是使用业务生成的值当做主键。...一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版 - <End
studentName`as 学生姓名 ,`address` as 学生地址 from `student` where `address` '河南新乡';/*学生地址不等于河南新乡的所有学生*/ /*直接空格后加*...数据库 LOWER(str) 将字符串转为小写 SELECT LOWER('MySQL'); 返回:mysql UPPER(str) 将字符串转为大写 SELECT UPPER('MySQL'); 返回...创建myschool数据库*/ create database myschool; /*删除数据库myschool*/ drop database myschool; /*删除student表里的主键...`as 学生姓名 ,`address` as 学生地址 from `student` where `address` '河南新乡';/*学生地址不等于河南新乡的所有学生*/ /*直接空格后加*...studentName`as 姓名,`address` as 学生地址,'昆明华信' as 学校名称 from `student`; select * from `student`; /*把成绩都降低10%后加5
第11题:授信金额统计 需求列表 笔试题目 说明:SQL语法请使用HiveSQL/SparkSQL 1.基于附录《核额流水表》和附录2《借据表》统计下述指标,请提供统计SQL 指标 当日新增 昨日新增...加技术群讨论 点击下方卡片关注 联系我进群 或者直接私信我进群 微众银行源数据表附录: 核额流水表 字段名 字段意义 字段类型 ds 日期分区,样例格式为20200101,每个分区有全量流水 string...sno 每个ds内主键,流水号 string uid 户id string is_risk_apply 是否核额申请(核额漏斗第一步)取值0和1 bigint is_pass_rule 是否通过规则(...,样例格式为20200101每个分区有全量借据 strng duebilid 借据号(每个日期分区内的主键) strng uid 用户id string prod_type 产品名称仅3个枚举值XX...,样例格式为20200101增量表部分流水记录可能有更新 strng sno 流水号,主键 strng create time 创建日期样例格式为2020-10-10 00:10:30与sno唯一绑定,
调用存储函数的形式就像调用MySQL内部函数一样。...对于存储过程提供的临时变量而言,MySQL规定要加上@开头。...我们自己编写的存储函数可以像MySQL函数那样自由的被调用。...因为id属性有主键约束,所以不能插入相同的id。...阅读更多 从头开始学MySQL——-存储过程与存储函数(1) 从头开始学MySQL——-存储过程与存储函数(2) 从头开始学MySQL——-存储过程与存储函数(3) 从头开始学MySQL——-
]); 例如,建立一个名为MyClass的表, 字段名 数字类型 数据宽度 是否为空 是否主键 自动增加 默认值 id int 4 否 primary key auto_increment... ])] values ( 值1 )[, ( 值n )] 例如:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为...82.99, 编号为3 的名为Wang 的成绩为96.5。...删除表中数据 命令:delete from 表名 where 表达式 例如:删除表 MyClass中编号为1 的记录 mysql> delete from MyClass where id=1; 下面是一个删除数据前后表的对比...4、将YEAR设为日期字段。
保留关键字; 临时库、临时表名必须以tmp为前缀并以日期为后缀; 备份库、备份表名必须以bak为前缀并以日期为后缀; 二、基本规范 使用INNODB存储引擎 5.5版本以后的默认引擘...且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从0开始 首次分表尽量多的分,避免二次分表,二次分表的难度和成本较高 按日期时间分表需符合...对前10个字符进行索引能够节省大量索引空间,也可能会使查询更快 表必须有主键 不使用更新频繁地列作为主键 尽量不选择字符串列作为主键 不使用UUID、MD5、HASH作为主键...如tinyint有符号为-128-127,无符号为0-255 INT类型固定占用4个字节存储 使用TIMESTAMP存储时间 因为TIMESTAMP使用4字节,DATETIME使用8个字节...最擅长的是单表的主键/二级索引查询 Join消耗较多的内存,产生临时表 避免在数据库中进行数学运算 容易将业务逻辑和DB耦合在一起 MySQL不擅长数学运算和逻辑判断 无法使用索引
', sno comment '流水号', uid comment '用户id', is_risk_apply comment '是否核额申请', is_pass_rule comment '是否通过规则...加技术群讨论 点击下方卡片关注 联系我进群 或者直接私信我进群 微众银行源数据表附录: 核额流水表 字段名 字段意义 字段类型 ds 日期分区,样例格式为20200101,每个分区有全量流水 string...sno 每个ds内主键,流水号 string uid 户id string is_risk_apply 是否核额申请(核额漏斗第一步)取值0和1 bigint is_pass_rule 是否通过规则(...,样例格式为20200101每个分区有全量借据 string duebilid 借据号(每个日期分区内的主键) string uid 用户id string prod_type 产品名称仅3个枚举值...,样例格式为20200101增量表部分流水记录可能有更新 string sno 流水号,主键 string create time 创建日期样例格式为2020-10-10 00:10:30与sno唯一绑定
数据类型:整型、浮点型、字符串、日期等 ------------------------------------ #### 1、字符串数据类型 最常用的数据类型是串数据类型。...回答:因为性能,MySQL处理定长列远比处理变长列快得多。 + Text 变长文本类型存储 ![image](....--- #### 3、日期和时间类型 MySQL使用专门的数据类型来存储日期和时间值 ![image](.... - char(5). varchar(7) 在字符类型后面加限制 表示 字符串的长度 - int(4) 没有意义,默认无符号的int为int(11),有符号的int(10) - int(...- auto_increment 定义列为自增属性,一般用于主键,数值会自动加1 - unique 唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度 --- ### 三、MySQL
领取专属 10元无门槛券
手把手带您无忧上云