一、MySQL当中的索引:

数组当中我们见过索引;它的好处就是能够快速的通过下标、索引将一个信息查到;或者说
能够快速的定位到一个信息;

1.MySQL中的索引是什么?

它是将我们表中具有索引的那个字段,单独的存储到了一张表之中(MyISAM存储引擎),
当我们再次查询表中的数据时,如果你搜索的条件,是具有索引的那个字段,这会,它
不再遍历表中的所有信息了,而是去索引表中,快速的定位到你要搜索的那条数据,
它有一个指针是指向我们数据表中的源信息的,由此一来,就可以让我们能快速的从
一个具有庞大数量级的数据库中准确的快速的取出某条信息;

2.MySQL中(MyISAM存储引擎)存储表的方式;

1. .frm 数据表的结构

2. .MYD 数据表的数据

3. .MYI 数据表中的索引字段

3.MySQL当中的索引,有哪几种呢?

索引,在我们定义之后,不用刻意的去使用,当我们在查询表中具有索引的字段的时候
索引会自动生效;

1> 普通索引(index)(MUL代表普通索引)
特点:没有任何限制,当我们定义了普通索引之后,直接搜索数据即可使用它

① 在创建表的时候,定义一个普通索引
create tabel test1(
id int unsigned not null,
name varchar(32) not null,
sex enum('m','w') not null default 'w',
age tinyint not null default 18,
index id(id) 索引类型 索引名(字段名)
);

② 在建表之后,给某个字段添加普通索引
create index id on test1(id);
create 索引类型 索引名 on 表名(字段名);

③ 删除一个普通索引的方法
drop index id on test1;
drop 索引类型 索引名 on 表名;

2> 唯一索引(unique)(UNI代表唯一索引)
特点:具有唯一索引的字段,它的值只能出现一次,出现重复的值则会报错!
同时,一个表中可以有多个字段添加唯一索引

① 在建表时创建唯一索引的方法一
create table test1(
id int unsigned not null,
name varchar(32) not null,
sex enum('w','m') not null default 'm',
age tinyint not null default 18,
unique index name(name) //索引类型 索引名(字段名)
);

② 在建表时创建唯一索引的方法二
create table test1(
id int unsigned not null,
name varchar(32) not null unique, //直接给字段添加唯一索引
sex enum('w','m') not null default 'w',
age tinyint not null default 18
);

③ 在建表之后添加一个唯一索引
create unique index id on test1(id);
create 索引类型 索引名 on 表名(字段名);

④ 删除一个表中的唯一索引的方法
drop index id on test1;
drop 索引类型 索引名 on 表名;

3> 主键索引(primary key)
特点:它的唯一索引基本上使用方法以及特性一致,唯一的区别是,唯一索引在
一个表中可以多次定义、主键索引只能定义一次,而且主键索引一般我们
会添加到id字段当中

① 建表时创建一个主键索引的方法
create table test1(
id int unsigned not null auto_increment primary key, //添加主键
name varchar(32) not null,
sex enum('w','m') not null default 'm',
age tinyint not null default 18
);

② 建表之后,添加一个主键索引的方法

1.alter table test1 change id id int unsigned not null auto_increment primary key;
alter table 表名 change 字段原名 字段新名 类型 约束条件……;

2.alter table test1 modify id int unsigned not null auto_increment priamry key;
alter table 表名 modify 字段名 类型 约束条件……;

③ 删除主键索引的方法

因为主键索引比较特殊,所以我们在删除主键索引时,必须先来查看表结构,看表中
具有主键索引的那个字段,是否同时拥有 auto_increment 这个约束条件,如果有,
先删除 auto_increment 这个约束条件,之后才能删除主键索引

1.先查看表结构,查看是否拥有 auto_increment 关键字
desc 表名;

2.如果有 auto_increment 关键字,则需要先删除该关键字
alter table test1 modify id int unsigned not null;
alter table 表名 modify 字段名 字段类型 约束条件;

3.删除主键索引
alter table test1 drop primary key;
alter table 表名 drop 主键索引;

4> 全文索引

二、存储引擎(了解):

事务处理:有时,当你执行一个操作的时候,断电可能会导致一些不必要的麻烦,就比如
电子转账操作,如果说此时断电,所有的事务操作都会有一个回滚的效果,恢复到上一次
断点存储的位置,避免出现其他的问题

1.MyISAM存储引擎
对于我们一个表的操作,如果是查询比较频繁的表,我们使用MyISAM的存储引擎来
进行存储,因为它不支持事务操作

2.InnoDB存储引擎
因为这种存储引擎它支持事务的操作,对于一个表的增、删、改操作比较频繁,就需要
我们的表支持事务处理,由此一来,就大大降低了表的查询速度。

3.选择什么样的存储引擎,关键在于你的项目各种功能所需要的表的不同,去选择一个
更合适的存储引擎

4.如何来指定一个表的存储引擎:

create table test1(
id int unsigned not null auto_increment primary key,
name varchar(32) not null unique,
sex enum('w','m') not null default 'm'
)engine=MyISAM[InnoDB];

5.如何来查看一个表的存储引擎

show create table 表名;

三、MySQL当中的编码格式:

1.查看我们能够设置的编码格式:

show character set;

2.在MySQL服务器中的编码类型的4个级别

1> 服务器级

2> 数据库级

3> 数据表级

4> 数据字段级

3.编码级别的一个特性:

它具有一个继承的特性,当我们设置了服务器级别的编码类型之后,我们在该服务器
下所创建的所有的数据库、数据表、数据字段都是跟随服务器级别的编码类型了

4.如何来设置一个编码类型

1> 设置服务器级别的编码类型

set character_set_server = "utf8";

2> 设置数据库级别的编码类型

① 在创建一个数据库时设置默认的编码类型
create database test default charset="utf8";
create database 数据库名 默认编码类型="utf8";

② 修改一个数据库的编码类型
alter database test default charset="utf8";
alter database 数据库名 默认编码类型="utf8";

3> 设置数据表级别的编码类型

① 创建一个数据表时设置默认的编码类型
create table test(
id int unsigned not null auto_increment priamry key
)engine=MyISAM default charset="utf8";

② 修改数据表的编码类型
alter table test default charset="utf8";

4> 设置数据字段级的编码类型

① 修改一个数据字段级的编码
alter table test modify name varchar(32) character set "utf8";

5> 设置DOS命令框的编码格式
set names utf8;

四、修改表结构

1.添加表字段:
alter table test1 add name varchar(32) not null unique; //不指定位置,则默认在最后出现
alter table test1 add name varchar(32) not null unique after id; //指定在id后添加name字段
alter table test1 add name varchar(32) not null unique first; //在表的开头添加name字段

2.修改表字段:
alter table test1 modify 字段名 字段类型 约束条件……;

alter table test1 change 原字段名 新字段名 字段类型 约束条件……;

3.删除表字段:
alter table test1 drop 字段名;

4.表的重命名:
alter table test1 rename test2;

5.删除多个表的操作:
drop table 表名1,表名2,表名3……;

【数据库】MySQL数据库(三)的更多相关文章

  1. python数据库-MySQL数据库的增删改查基本操作(49)

    一.数据库基础 表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式 行:行用于记录数据 记录:行内的数据 列:列用于规定数据格式 字段:数据的某个列 主键:唯一地标识表中的 ...

  2. 数据库-mysql数据库和表操作

    一:数据库查询增加删除 1)mysql数据库查询:show databases MariaDB [mysql]> show databases; +--------------------+ | ...

  3. sqlyog管理关系型数据库mysql数据库之sqlyog的安装管理

    .关系型数据库 有库有表,有关系 非关系型数据库  存储对象.集 下面的所有演示截图都是基不超过SQLyog 11进行的. 1. 2.点击上图中的应用程序,进行安装. 安装sqlyog , 账户dd0 ...

  4. python数据库-MySQL数据库高级查询操作(51)

    一.什么是关系? 1.分析:有这么一组数据关于学生的数据 学号.姓名.年龄.住址.成绩.学科.学科(语文.数学.英语) 我们应该怎么去设计储存这些数据呢? 2.先考虑第一范式:列不可在拆分原则 这里面 ...

  5. C#工具:Ado.Net SqlServer数据库 MySql数据库

    数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库. SqlServer调用数据库 using System; using System.Coll ...

  6. JDBC让java程序连上数据库(mysql数据库)

    一.小论异常: 其实JDK已经提供了一组API让java程序连上数据库,并执行SQL语句,其实说起来也蛮简单的,但是绝对是一个细致活,因为稍不留神,异常就铺天盖地的来了,下面说说这些异常吧(声明一下: ...

  7. 希赛网 > 问答 > 数据库 > MySQL数据库 > MySQL的管理与维护 > MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I

    MySql开启远程用户登录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'huawei' WITH GRANT OPTION; FL ...

  8. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  9. MySQL数据库权限体系介绍

    本文主要向大家介绍了MySQL数据库权限体系,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mys ...

  10. mysql 数据库设计(转)

    本规范适用于mysql 5.1或以上版本使用 数据库范式 第一范式(1NF)确保每列保持原子性 第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项. ...

随机推荐

  1. Spring中的JdbcTemplate的使用

    一.jdbcTemplate的作用 它就是用于和数据库交互的,实现对表的crud.与dbutils相似 二.JdbcTemplate的使用 <dependency> <groupId ...

  2. .NET写入文件操作

    2018-01-16  22:44:35 许多程序需要记录运行日志,这就需要将程序运行记录写入本机,一般是.txt 文本或.csv 文件.具体操作如下: 一.C#   using System.IO; ...

  3. CUDA Pro Tip: Write Flexible Kernels with Grid-Stride Loops

    https://devblogs.nvidia.com/cuda-pro-tip-write-flexible-kernels-grid-stride-loops/ One of the most c ...

  4. 《Python学习手册 第五版》 -第17章 作用域

    上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...

  5. Python - 面向对象(三)公共变量,受保护变量,私有变量

    前言 在Python的类里面,所有属性和方法默认都是公共的:但Python也可以设置受保护.私有类型的变量or方法 受保护类型的变量.方法 一般称为:protected变量 #!/usr/bin/en ...

  6. 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  7. Apache Druid 底层存储设计(列存储与全文检索)

    导读:首先你将通过这篇文章了解到 Apache Druid 底层的数据存储方式.其次将知道为什么 Apache Druid 兼具数据仓库,全文检索和时间序列的特点.最后将学习到一种优雅的底层数据文件结 ...

  8. Mysql失败,异常pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9D\\x90\\xBF;......

    问题描述: 插入Mysql时失败了,python代码报如下异常: pymysql.err.InternalError: (1366, "Incorrect string value: '\\ ...

  9. SVM支持向量机——核函数、软间隔

    支持向量机的目的是寻找一个能讲两类样本正确分类的超平面,很多时候这些样本并不是线性分布的. 由此,可以将原始特征空间映射到更高维的特征空间,使其线性可分.而且,如果原始空间是有限维,即属性数量有限, ...

  10. test命令的使用以及判断语法

    test命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 语法:test EXPRESSION 或者 [ EXPRESSION ] 字符串判断( ...