一、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. 【11】openlayers 地图交互

    地图交互interaction 关于map的方法: //添加地图交互 map.addInteraction(interaction) //删除地图交互 map.removeInteraction(in ...

  2. C++ 动态创建链表

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> struct Node { int data; Node* next; }; Nod ...

  3. 测试必知必会系列- Linux常用命令 - mkdir

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! 新建一个文件夹 yyTest mkdir yyTest 新建三个文件夹 yyTest1 yyTest2 yyTe ...

  4. vue管理平台的动态路由(后台传递路由,前端拿到并生成侧边栏)

    前端的路由从后台获取,包括权限: 大体步骤包括:路由拦截(钩子函数)---->后台获取路由数据 ----> 保存到本地或vuex中. 在router-->index.js中: rou ...

  5. Hadoop集群搭建(七)~完全分布运行模式

    我使用的是完全分布运行模式.上一篇安装了JDK,本篇记录Hadoop的安装,版本2.7.2 (一)配置文件 1,先将hadoop安装包解压到module目录下 2,配置hadoop-env.sh.vi ...

  6. WTM 3.5发布,VUE来了!

    千呼万唤中,WTM的Vue前后端分离版本终于和大家见面了,我曾经跟群里1000多位用户保证过Vue版本会在春天到来,吹过的牛逼总算是圆上了. WTM一如既往地追求最大程度提高生产效率,所以内置的代码生 ...

  7. Django之CBV装饰器,跨站请求伪造,auth认证

    CBV加装饰器 基于session实现登录 def login(request): if request.method == 'POST': username = request.POST.get(' ...

  8. Longest subarray of target sum

    2018-07-08 13:24:31 一.525. Contiguous Array 问题描述: 问题求解: 我们都知道对于subarray的问题,暴力求解的时间复杂度为O(n ^ 2),问题规模已 ...

  9. Codeforces Round #567 (Div. 2) B. Split a Number

    Split a Number time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...

  10. docker image换包步骤

    Docker Commit 1.在IDEA中通过maven package得到watchman-1.5.0-SNAPSHOT.jar,将其scp到baisheng1本地: 2.查看dbaservice ...