Mariadb 索引及外键
索引
索引相当于一本书的目录,在一个数据库或表有索引的情况下,会很便于查询数据,使查询更加效率,相对的也有缺点,不利于去修改,比较麻烦,有索引便于查询,那就意味着索引创建的越多越好么?然而并不是;索引越多,越不便于大量的修删改,反而会使数据库的性能下降;表里的数据如果大多数甚至只是是用来查询的话,那可以稍微的多创建几个索引以便于查询。
一、创建索引
&1 创建表 时 创建索引
create table create_index( id int primary key,name varchar() unique, age int,key (age) );

查看

&2给已有的表添加索引
create index test_index on students (name);

查看

注: 主键具有索引的功能, 所以设置索引不要在有主键的字段上
&删除索引
drop index 索引名字 on 表

二、测试时间
set profiling=1;#打开sql语句执行时间
show profiles;#查看sql执行时间
注: 真实环境下不要轻易去打开此功能,会使数据库的性能下降
1>插入数据
&准备数据(利用python 中 pymsql 模块实现 插入10万条数据)

2>执行脚本 ( 注, test2 数据库 与test3 表必须存在)( 第三方登录 事务默认自动打开,所以需要关闭 commit)

&

3>验证一下

十万条数据已经插入进去
#分页查看下

4>打开seq语句执行时间

5>测试
查询不带索引的字段
select * from test3 where name='name=0';

show proiflies;

给他添加索引再查看

#查看

#查看查询使用时间

会发现 带索引明显 查询要快的多
外键
如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)
对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错
注:设置外键的时候,一般是将范围较小的那个设置成外键( 谁是儿子谁是外键)
一、添加外键
1>
alter table students1 add consteaint 外键名称 foreign key 表字段(范围大) references 另一表字段(范围小)

2>插入一条数据测试

&测试

这是因为 classes(id) 为外键 关联着 students1 表, calsses 表里没有 id=3 所对应的数据, 所以不以为然的 students1 里也不能有clis(id)=3的数据 ,(外键约束)
&测试能否删除

外键约束不能删除,若想删除,则需要把students1 表里所有与 cls_id =1 对应的数据全部删除即
3>删除外键

4>添加支持级联删除的外键

&1测试

删除成功
Mariadb 索引及外键的更多相关文章
- 类型:Oracle;问题:oracle 查询表详细信息;结果:oracle查询表信息(索引,外键,列等)
oracle查询表信息(索引,外键,列等) oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表sel ...
- 003--PowerDesigner创建索引与外键
PowerDesigner创建索引与外键 一.创建索引 双击Table->Columns->创建索引 Step1:双击Table Step2:选择Columns->创建索引 弹出如下 ...
- mariadb数据库(3)连接查询,视图,事务,索引,外键(优化)
--创建学生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20 ...
- MariaDB第四章:视图,事务,索引,外键--小白博客
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...
- mariadb(第五章)视图、事物、索引、外键
视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...
- mariadb数据库——关联、视图、事务、索引、外键
1.关联 1)连接查询(内关联) inner join ... on 两个表连接查询 select * from students inner join classes 查询能够对应班级的学生以及班级 ...
- 详解MariaDB数据库的外键约束
1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
- mysql基础之视图、事务、索引、外键
一.视图 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...
- oracle查询表信息(索引,外键,列等)
oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助:1.查询出所有的用户表 select * from user_tables ...
随机推荐
- cmanformat - 不是命令啦,是个演示文件
描述 DESCRIPTION cmanformat 是 man pages 格式的演示文件. 由于系统不同会有差异.在 XWindow 下会好些. __________________________ ...
- python day one
今日内容: python基础: 一 编程语言 什么是编程语言? 上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人 ...
- Java集合(三)--Collection、Collections和Arrays
Collection: Collection是集合类的顶级接口,提供了对集合对象进行基本操作的通用接口方法.Collection接口的意义是为各种具体的集合提供了最大化 的统一操作方式,其直接继承接口 ...
- Windows文件自删除的两种方法
可执行模块的自删除技术已经被讨论的很多, 有很多极富创意的思路和想法被提出, 但有些似是而非的方案往往使人误入歧途. 举个例子来说, 很多文章认为下面的一小段代码可以实现自删除:void main(v ...
- 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)
议题:快速排序实现之一(单向遍历) 分析: 算法原理:主要由两部分组成,一部分是递归部分QuickSort,它将调用partition进行划分,并取得划分元素P,然后分别对P之前的部分和P 之后的部分 ...
- python3 监控代码变化 自动重启 提高开发效率
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'Michael Liao' import os, sys, time, sub ...
- 基于vue实现模糊匹配(这里以邮箱模糊匹配为例,其他的模糊匹配都可以类比)
html部分(主要部分): js: data: methods: 效果图:
- C51 蜂鸣器 个人笔记
音调:频率 音量:高低电平占空比 有源:上面没有加号,只需高低电平即可发声 无源:上面有加号,不仅要电平,还要, 的频率 这里的有源不是指电源的"源",而是指有没有自带震荡电路,有 ...
- JDK的安装和环境变量配置
1.安装JDK开发环境 下载网站: http://www.oracle.com/technetwork/java/javase/downloads/index.html 进入后选择Accept Lic ...
- xtu read problem training 4 A - Moving Tables
Moving Tables Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Original ...