首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

淘宝数据库,主键如何设计的?(文末福利)

聊一个实际问题:淘宝的数据库,主键是如何设计的? 某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的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 数据库管理信息表中的当 前会员编号的最大值。

35630

流水号当主键不正好么?”

前言 " 又要开始新项目了,一顿操作猛如虎,梳理流程画图。这不,开始对流程及表结构了。 我:吧啦吧啦吧啦 …… 老大:这个建表为啥还设置个自增 id ?...老大:流水号在你这是唯一索引吧?设置成主键,这样就不用 id 了,还减少一次回表查询? 我:…… (说的好像很有道理,咱也不敢说话。)...MySQL 自增主键而不是使用业务生成的值当做主键。...一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版

1.8K20

MySQL数据库】数据库的约束

​ 目录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。

5.7K40

推荐学Java——数据表操作

约束分类 主键约束: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 // 查出商品编号为

2.6K20

流水号当主键不正好么?”

前言 " 又要开始新项目了,一顿操作猛如虎,梳理流程画图。这不,开始对流程及表结构了。 我:吧啦吧啦吧啦 …… 老大:这个建表为啥还设置个自增 id ?...老大:流水号在你这是唯一索引吧?设置成主键,这样就不用 id 了,还减少一次回表查询? 我:…… (说的好像很有道理,咱也不敢说话。)...MySQL 自增主键而不是使用业务生成的值当做主键。...一般使用手机号、身份证号作为主键等并不能保证顺序性。 流水号一般相对较长,比如 28 位,32 位等,过长的话会二级索引占用空间较多。同时为了业务需求,流水号具有一定的随机性。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版 - <End

80530

DML和DQL

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

88310

MySQL主键

本文标识 : MQ0021 本文编辑 : 长安月下赏美人儿 编程工具 : MySQL、DBeaver 阅读时长 : 4分钟 前言 小编在查询相关的学习资料的同时,偶尔会遇到关于主键的信息,也是一直没有很清晰的认知...定义:PRIMARY KEY 注意:主键之于数据表相当于口红之于女人,可以不用,但最好还是有 主键选择的遵循原则 任何两行都不具有相同的主键值 每行必须具有一个主键值,且不允许设置为NULL 主键应当是对用户没有意义的...,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复 DBMS自动按主键值的顺序显示表中的记录 如果没有定义主键,则按输入记录的顺序显示表中的记录 主键的选择 编号为主键 方法:选择唯一字段...“编号”作为主键设计 场景:多用于小型项目 缺点:若修改编号,后果严重;若允许编号重复,则彻底懵逼 自动编号为主键 方法:新建一个 ID 字段,自动增长 优点:便于检索传递、空间小、无主键重复问题 缺点...:插入指定 ID 记录会麻烦、与非数字型主键系统对接麻烦 Max一 方法:无自动增长的数字型,采用 Insert时,读取 Max 值后一 优点:避免自动编号的问题 缺点:记录多会严重影响效率、会出现相同值的情况

3.7K10

每天一道大厂SQL题【Day11】微众银行真题实战(一)

第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唯一绑定,

71920

必要商城MySQL开发规范

保留关键字; 临时库、临时表名必须以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不擅长数学运算和逻辑判断 无法使用索引

66810

每天一道大厂SQL题【Day13】微众银行真题实战(三)

', 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.1K20

MySQL开发规范

保留关键字; 临时库、临时表名必须以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不擅长数学运算和逻辑判断 无法使用索引

81510

学习猿地 python教程 django教程1 初识Django

数据类型:整型、浮点型、字符串、日期等 ------------------------------------ #### 1、字符串数据类型 最常用的数据类型是串数据类型。...回答:因为性能,MySQL处理定长列远比处理变长列快得多。 + Text  变长文本类型存储 ![image](....--- #### 3、日期和时间类型 MySQL使用专门的数据类型来存储日期和时间值 ![image](....    - char(5). varchar(7) 在字符类型后面限制 表示 字符串的长度   - int(4) 没有意义,默认无符号的int为int(11),有符号的int(10)   - int(...- auto_increment  定义列为自增属性,一般用于主键,数值会自动1 - unique 唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度 --- ### 三、MySQL

80220

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券