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

MySQL数据库,详解索引管理

[unique]:中括号代表可以省略,如果加上了unique,表⽰创建唯⼀索引。 如果table后⾯只写⼀个字段,就是单列索引,如果写多个字段,就是复合索 引,多个字段之间⽤逗号隔开。...我们在name上也创建个索引,感受⼀下查询的神速,如下: mysql> create unique index idx2 on test1(name); Query OK, 0 rows affected...,我们可以看到所有的email记录,每条记录的 前⾯15个字符是不⼀样的,结尾是⼀样的(都是@163.com),通过前⾯15个字符就可以 定位⼀个email了,那么我们可以对email创建索引的时候指定...⼀个长度为15,这样相对于 整个email字段更短⼀些,查询效果是⼀样的,这样⼀个页中可以存储更多的索引记录, 命令如下: mysql> create index idx3 on test1 (email...查看表中的索引 我们看⼀下test1表中的所有索引,如下: mysql> show index from test1; +-------+------------+----------+--------

1.6K20

MySQL数据库:表的约束

mysql> create table tt17( -> id int unsigned primary key auto_increment, -> name varchar(10)...('Tom'); Query OK, 1 row affected (0.01 sec) mysql> insert into tt17(name) values('Jerry'); Query OK...唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。 关于唯一键和主键的区别: 我们可以简单理解成,主键更多的是标识唯一性的。...而唯一键更多的是保证在业务上,不要和别的信息出现重复。...而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。具体指的是在公司的业务上不能重复,我们设计表的时候,需要这个约束,那么就可以将员工工号设计成为唯 一键。

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

    MySQL数据库的设计和命令行模式下建立详细过程

    例如varchar(12),则表述存储的字符数不能超过12 ,超过12则截断,小于12个字符则以实际占用的存储空间来存储,这样就节省了存储空间。...还有一点需要注意的是,虽然键(key)和索引(index)有着本质的区别,但是当我们在建立主键或者唯一键的时候,也就建立了索引,MySQL和Oracle都是这么做的,要是不明白这一点,很容易把索引和主键和唯一键弄混淆...关于四者的理解,上未参考到权威的资料,请读者保持怀疑的态度接受。 2.数据库的建立 在安装完mysql之后,我们要建立自己的数据库。下面将详细地一步一步演示如何创建上面设计好的数据库。...所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度(长度为字符数)。 tinyint(1) 这里的1表示的是最短显示一个字符。...tinyint(2) 这里的2表示的是最短显示两个字符,但这里光设置m是没有意义的,你还需要指定当数据少于长度m时用什么来填充,比如zerofill(表示有0填充)。

    2.1K00

    Java面试之数据库面试题

    12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节...,20只是最大值,当你存储的字符小于20时,按实际长度存储。...varchar2而不是varchar 17、Oracle和Mysql的区别?...//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT

    1.5K20

    数据库经典面试题,都给你收集好了!!!

    12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节...,20只是最大值,当你存储的字符小于20时,按实际长度存储。...varchar2而不是varchar 17、Oracle和Mysql的区别?...//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT

    1.6K30

    Java面试之数据库面试题

    12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节...,20只是最大值,当你存储的字符小于20时,按实际长度存储。...varchar2而不是varchar 17、Oracle和Mysql的区别?...//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT

    1.5K41

    数据库常见的面试题大全

    12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节...,20只是最大值,当你存储的字符小于20时,按实际长度存储。...varchar2而不是varchar 17、Oracle和Mysql的区别?...//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT

    1.4K40

    【笔记】Mysql 数据库操作规范

    [FAQ-1-01] 库名、表名、字段名禁⽌超过 32 个字符。[FAQ-1-02] 库名、表名、字段名必须见名知意。命名与业务、产品线等相关联。 库名、表名、字段名禁止使用 MySQL 保留字。...[FAQ-5-01] 唯一键由 3 个以下字段组成,并且字段都是整型时,可使⽤唯⼀键作为主键。其他情况下,建议使⽤⾃增列或发号器作主键。 禁⽌冗余索引。[FAQ-5-02] 禁止重复索引。...对字符串使用前缀索引,前缀索引长度不超过 8 个字符。 不对过⻓的 VARCHAR 字段建⽴索引。建议优先考虑前缀索引,或添加 CRC32 或 MD5 伪列并建⽴索引。...【FAQ-1-02】 库名、表名、字段名禁止超过 32 个字符。 库名、表名、字段名⽀持最多 64 个字符,但为了统一规范、易于辨识以及减少传输量,禁⽌超过 32 个字符。...IPv6 地址⽬前没有转化函数,需要使用 DECIMAL 或两个 BIGINT 来存储。

    1.5K20

    Mysql 数据类型

    字符串(char,varchar,_text) MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar(n) 固定长度,最多65535个字符 tinytext...可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符 char和varchar...2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n255),所以varchar(4),存入3个字符将占用...3.char类型的字符串检索速度要比varchar类型的快。...3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

    1.5K20

    mysql数据库double类型_timestamp是什么数据类型

    decimal(m,d) 参数m<65 是总个数,d<30且 d 4、字符串(char,varchar,_text) MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar...(n) 固定长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext...可变长度,最多2的32次方-1个字符 char和varchar: 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。...2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n255),所以varchar(4),存入3个字符将占用...3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。 5.二进制数据(_Blob) 1.

    2.5K20

    前缀索引,一种优化索引大小的解决方案

    前缀索引似乎是MySQL中的一个概念,在SQL Server和Oracle中没提出这个概念。于是就安装了一个MySQL来做实验,搞清楚前缀索引。...前缀索引说白了就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引,这样建立起来的索引更小,所以查询更快。...也就是=‘xxx’ 或者 like ‘xxx%' 字符串本身可能比较长,而且前几个字符就开始不相同。...相反对外国人的姓名可以使用前缀索引,因为其字符较长,而且前几个字符的选择性比较高。同样电子邮件也是一个可以使用前缀索引的字段。 前一半字符的索引选择性就已经接近于全字段的索引选择性。...如果整个字段的长度为20,索引选择性为0.9,而我们对前10个字符建立前缀索引其选择性也只有0.5,那么我们需要继续加大前缀字符的长度,但是这个时候前缀索引的优势已经不明显,没有太大的建前缀索引的必要了

    31140

    数据库基础

    第⼀范式:要求最低,只要求表中字段不可⽤在拆分(比如用户兴趣标签,不应该拼接成一个字符串)。第⼆范式:在第⼀范式的基础上,要求每条记录由主键唯⼀区分,记录中所有属性都依赖于主键。...MySQL默认的隔离级别就是可重复读。串⾏化:这是最⾼的隔离级别,所有事务操作都依次顺序执⾏。这个级别会导致并发度下降,性能最差。不过这个级别可以解决前⾯提到的所有并发问题。...插⼊意向锁和间隙锁发⽣死锁假设现在有表 t,只存在 id 为 1和2的记录,当两个事务同时插入不同记录时,场景如下: 注意当对未存在的⾏进⾏加锁的时候,mysql是会锁住⼀段范围,即间隙锁。...索引索引分类Mysql中的索引可以分为以下几种:唯⼀索引:就是索引列中的值必须是唯⼀的,但是允许出现空值。...这种索引⼀般⽤来保证数据的唯⼀性,⽐如保存账户信息的表,每个账户的id必须保证唯⼀,如果重复插⼊相同的账户id时会MySQL返回异常。 主键索引 :是⼀种特殊的唯⼀索引,但是它不允许出现空值。

    8210

    数据库常见面试题及答案(数据库面试常见问题)

    12、主键和外键的区别? 主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 13、在数据库中查询语句速度很慢,如何优化?...Char的长度是固定的,而varchar2的长度是可以变化的,比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占了3个字节...,20只是最大值,当你存储的字符小于20时,按实际长度存储。...varchar2而不是varchar 17、Oracle和Mysql的区别?...//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT

    4.1K10

    MySQL 数据类型

    ---- 二、字符串 MySQL数据类型 含义 char(n) 固定长度最多255个字符 varchar(n) 可变长度最多65535个字符 tinytext 短文本字符串最多255个字符 text 长文本数据最多...65535个字符 mediumtext 中等长度文本数据最多2的24次方-1个字符 longtext 超长文本数据最多2的32次方-1个字符 了解: ① ASCII编码,一个英文字符占一个字节,一个中文占两个字节...所以char类型存储的字符串末尾空格将被删除 2. char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n255),所以varchar(5),存入3个字符将占用4个字节的物理空间。...3. varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

    1.8K20

    【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)

    但是更为重要的是,如果刚才改字段属性就是只改了字段大小,你会发现以前 name 后面的 comment 没有了。...MySQL中的字符和C/C++中的字符概念是不一样的,以前语言上的字符,一个字符对应一个字节, 而在MySQL中的字符真的代表一种符号,要么是1234、要么abcd、要么就是中文汉字,一个汉字就是一个字符...示例:varchar(6),表示最多可以插入6个字符。...,认为 utf8 编码,单个字符是三个字节【21845 x 3 = 65535】 换句话说varchar保存最大长度是65535个字节,但字符数是21845!...这就是我们刚才插入1的时候,显示的是代码的爱好 插入 3 的时候 00000 -> 00011,表示有前两个爱好 如下: mysql> insert into votes values('R', '3'

    3700

    MySQL字段类型

    大家好,又见面了,我是你们的朋友全栈君。 MySQL字段类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。...2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n255),所以varchar(4),存入3个字符将占用...3.char类型的字符串检索速度要比varchar类型的快。...3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。...类型 大小 用途 CHAR 0-255字节 定长字符串 VARCHAR 0-65535 字节 变长字符串 TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串 TINYTEXT

    9.4K10

    MySQL基础知识

    与其他数据库管理系统(DBMS)相⽐,MySQL具有体积⼩、易于安装、运⾏速度快、功能⻬全、成本低廉以及开源等特点。⽬前,MySQL已经得到了⼴泛的使⽤,并成为了很多企业⾸选的关系数据库管理系统。...字符序(collation)是指在同⼀字符集内字符之间的⽐较规则。只有确定字符序后,才 能在⼀个字符集上定义什么是等价的字符,以及字符之间的⼤⼩关系。...⼀个字符集 可以包含多种字符序,每个字符集有⼀个默认的字符序(defaultcollation),每个字 符序唯⼀对应⼀种字符集。...⽬前,MySQL的存储引擎⾄少10种,使⽤MySQL命令“showengines;”即可查看 MySQL服务实例⽀持的存储引擎,其中,InnoDB是默认的(default)存储引擎。...创建数据库表 创建表命令 CREATE TABLE person ( Id varchar(40), name varchar(100) COMMENT '姓名', gender varchar

    37520
    领券