首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL数据库、优化、算法、分区分库分总结

一、主键设置 主键为什么不推荐有业务含义? 1、因为任何有业务含义列都有改变可能性,主键一旦带上了业务含义,那么主键就有可能发生变更。...什么情况下应不或少索引?...1、表记录太少 2、经常插入、删除、修改 3、数据重复且分布平均表字段,假如一个有10万行记录,有一个字段A只有T和F两种值,且每个值分布概率大约为50%,那么对这种A字段索引一般不会提高数据库查询速度...EXPLAIN 查询结果还会告诉你你索引主键被如何利用,你数据是如何被搜索和排序 当只要一行数据时使用limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录数据...包括primary key, unique key, foreign key 等 index是数据库物理结构,它只是辅助查询,它创建时会在另外空间(mysqlinnodb空间)以一个类似目录结构存储

5.2K31
您找到你想要的搜索结果了吗?
是的
没有找到

mysql常见选项和约束

约束主要是防止非法数据进入中,保证数据正确性和一致性,统称为数据完整性 约束也可以防止一个被删除 MySQL约束保存在information_schema.table_constraints中...主键是用来唯一标识每一行,类型一般为整型或者字符串 具有主键约束列不允许有null值,不允许有重复值 每个最多只允许一个主键,可定义联合主键,主键名总是PRIMARY 联合主键 用几个列来进行唯一标识一行...,外键是构建于一个两个字段或者是两个两个字段之间参照关系 注意: 具有外键约束值不能随便给,必须满足外键所引用主键取值 一张中可以定义多个外键 外键列默认可以给null值 父子表...外键所在叫做子表,从 外键所引用主键所在叫做父,主表 constraint emp_deptid_fk foreign_key(deptid) references dept(deptid...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql

11410

MySQL数据类型选择

如果查询中包含可为 NULL 列,对 MySQL 来说更难优化,因为可为 NULL 列使得索引、索引统计和值比较都更复杂。特别是计划在列上索引,就应该尽量避免设计成可为 NULL 列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义:它不会限制值合法范围,只是规定了 MySQL 一些交互工具(例如 MySQL 命令行客户端)用来显示字符个数。...char 类型是定长MySQL 总是根据定义字符串长度分配足够空间。 char 存储会删除存储数据末尾空格;varchar 不会。...与其它类型不同,MySQL 把每个 blob 和 text 值当作一个独立对象处理。...枚举(enum)类型 MySQL 在内部会将每个值在列表中位置保存为整数,并且在 .frm 文件中保存 “数字-字符串” 映射关系 “查找”。

5.2K10

mysql数据库(一):与新增数据建议收藏

我们等了qq后查看qq聊天记录信息,这些数据又是从哪里取? 2. 什么是 如果仓库里面堆满了装衣服麻袋,那一个个麻袋就可以看做是一个 3. 数据库关系 三. 创建数据库 1....创建 思考:如何把下面excel数据保存到数据库表里面 表语法: create table ( , , ......创建时候,声明字段时候,字段之间以什么符号分隔?符号用中文可以吗? 英文状态下逗号,不可以 2). 声明字段时候,最后一个字段后面需不需要逗号? 不需要 3). 主键特征是什么?...SYSDATE(), SYSDATE()); 总结: 需要注意是,如果插入数据时,只对部分字段进行初始化,则需要声明要插入字段 在mysql中,字符串数据是用英文''括起来 创建一个grade...时候每一个字段后面用什么符号分隔?最后一个字段后面需要分隔符吗? 逗号,不需要 2. 插入数据时,只初始化部分字段与初始化所有字段时sql不同点体现在哪里?

5.9K20

粗聊Mysql——你会么?

本文中说到”,并非单纯一个库,或是一张,而是你建好库和在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到问题以及处理方法,算是一个小小心得,给大家分享下。...比如现在有2张,一张新闻栏目,一张新闻,现在两张需要进行关联,我想大多数人做法肯定是在新闻表里一个新闻栏目id,然后把新闻栏目表里主键ID(自增)写到这个字段里,通过这样进行两关联。   ...这样就会造成一种情况,如果那天对数据库进行优化,把主键进行了重新排序(暂时没有找到mysql优化软件会优化主键,但是可以通过代码删除主键,然后从新建立自增主键来实现主键重新排序),那就彻底杯具了,栏目和文章完全对不上号了...所以我建议两之间关联不用主键,而是单独一个编号字段,我们这里可以用mysqluuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张要2个主键,一个物理主键(自增id...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql

5.2K10

MySQL 系列教程之(五)DDL 操作:

MySQL 数据库 创建数据库 使用root登录后,可以使用 create database if not exists user default charset utf8 创建数据库,该命令作用:...创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据 创建MySQL数据需要以下信息: 名 表字段名 定义每个表字段...MySQL数据。...查看表结构 desc stu; 查看表语句 show create table stu\G 修改结构 格式: alter table 名 action(更改选项); 添加字段: 添加字段:alter...AUTO_INCREMENT=1 更改类型: ALTER TABLE 名称 ENGINE="InnoDB" 关于类型 MySQL数据库类型一般常用两种:MyISAM和InnoDB 区别:

7.6K73

java进阶|MySQL数据库系列(一)数据库操作和操作

关于mysql数据库操作以及如何创建操作。...1,显示所有数据库操作 show databases; 2,使用指定数据库 use test;//这里test指的是数据库名称 3,如何创建数据库呢?...desc user;//这里user指的是名 6,如何查看表详细结构信息 show create table user; ? 7,如何显示当前数据库名称?...select database();//使用这个语句就可以看到当前在操作数据库名称 8,创建过程 语法:create table 名(属性名 数据类型[完整性约束条件]); create...foreign key:标识该属性为该外键,与某主键关联。not null:标识该属性不能为空。unique:标识该属性值是唯一。auto_increment:标识该属性值是自动增加

4.2K10

数据库规则_SQL创建数据

大家好,又见面了,我是你们朋友全栈君。 — 数据库表语句规范小结 表语句规范: 1.字段设计 A. 数据类型尽量用数字类型,数字类型比字符类型要快很多。   B....所以在建时候一定要预估这个字段最大长度到底是多少。   C. 尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT 值来代替。   D....比如说时间: 目前我们定义时间时候 都是create_time, modify_time,以后时候,都按照这个标准来,就不要写成createtime这样。 B....新建与之前字段有相似或者相同字段,字段名称和类型也必须相同,切记不能随意重新命名,例如:token_md5 就不要命名成tokenmd5了。 E....每个字段COMMENT必须写清楚,枚举类型必须写清楚每个值到底是什么意思。 F. 名 字段名字统一用小写。

2.1K10

SQL Server设计(

3、标识符列 序号,自动递增,具有三个特点: ·列数据类型不能为小数类型 ·不允许控制null ·每个只能有一个标识符列 4、check约束 通过check约束可以限制域完整性。...例如可以通过设置check约束限制输入年龄、出生日期等数据 操作部分 ·图形化 1、首先展开以下节点-点击新建 2、SSMS会弹出一个设计框 3、建立几个列,准备做操作 4、...·T-SQL语句 举个例子: create table name( StudentID varchar(10)NOT NULL, Sname varchar(10)DEFAULT NULL, sex...首先 create 是创建意思,table即,name是给名字。后面跟上(),()内内容就是每一列;其中第一个字段为列名字,然后是列数据类型,后面的是否允许空值null。...操作时,我们点击SSMS左上角“新建查询”-然后输入语句-点击“执行” 执行后可以看到 刷新一下“” 新建名为“name”就可以看到了

3.2K20

mysql表语句 numeric_数据库表语句

大家好,又见面了,我是你们朋友全栈君。...展开全部 CREATE TABLE语句,用32313133353236313431303231363533e78988e69d8331333433616139于在数据库中创建新。...table参数用于指定新建名称。field1,field2用于指定在新中创建新字段名称,每创建一个新必须至少创建一个字段。type参数用来指定新建字段数据类型。...size参数用于指定文本及二进制字段长度。 NOT NULL是SQL关键字,使用该参数则新记录该字段值必须是有效数据。在一个字段上只能使用一次NOT NULL参数,否则会出错。...CREATE TABLE语句可创建空,同时可使用 INSERT INTO 语句向空写入数据。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

5.1K20

MySQL库、、增删改查语句Demo

本页目录 库语句 库 修改库字符集 指定库排序规则 当前库状态表语句 删除库 Navicat编辑数据库时执行SQL 表语句 添加字段 修改 修改字段 修改表字符集、排序规则 截断 删除...添加索引 一直都是用MySQL可视化工具,几乎没碰过库、等语句了。...库语句 库 -- 数据库配置文件default-character-set是utf8_mb3,则会导致创建是utf8mb3。...我们无法人为控制,只能库完毕后执行修改库字符集或者库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...`school` 删除库 -- 删除数据库 DROP DATABASE `school名错误就无法删除了`; Navicat编辑数据库时执行SQL -- 查看库字符集,这是Navicat点击"编辑数据库

5.1K40

一个MySQL需求讨论和引导

首先对于这个定义上,业务同学说是归属于状态,也就意味着每一个用户都有唯一状态值对应,这个中存储数据量会越来越大。...到了这里需求方向其实就有了大转折,这个按照目前需求其实使用日志模式要更好一些,比如表中数据是按照如下列表情况存储,以日期为维度进行存储。 ?...如果需要按照T+1模式去处理未完成数据,整个复杂度只针对某一天执行索引扫描,不会对其他产生关联影响,而如果按照日期为单存储,整个事情自由度就更大了,按照state或者是pid维度进行查询...各大平台都可以找到我 微信公众号:杨学习笔记 Github:@jeanron100 CSDN:@jeanron100 知乎:@jeanron100 头条号:@杨学习笔记 网易号:@杨数据库笔记...大鱼号:@杨数据库笔记 腾讯云+社区:@杨学习笔记

2.7K20

MYSQL数据库-约束

零、前言 本章主要讲解学习MYSQl数据库约束 约束 真正约束字段是数据类型,但是数据类型约束很单一,需要有一些额外约束,更好保证数据合法性,从业务逻辑角度保证数据正确性...包含班级名和班级所在教室 如果班级没有名字,你不知道你在哪个班级,如果教室名字可以为空,就不知道在哪上课 所以在设计数据库时候,一定要在中进行限制,满足上面条件数据就不能插入到中,这就是...在关系数据库中,索引是一种单独、物理数据库中一列或多列值进行排序一种存储结构,它是某个中一列或若干列值集合和相应指向中物理标识这些值数据页逻辑指针清单 索引作用相当于图书目录...这样可以使对应于SQL语句执行得更快,可快速访问数据库特定信息 7、唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张中只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题...解决方案就是通过外键完成。建立外键本质其实就是把相关性交给mysql去审核了,提前告诉mysql之间约束关系,那么当用户插入不符合业务逻辑数据时候,mysql不允许你插入

7.5K30
领券