【数据库】MySQL数据库(三)
一、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数据库(三)的更多相关文章
- python数据库-MySQL数据库的增删改查基本操作(49)
一.数据库基础 表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式 行:行用于记录数据 记录:行内的数据 列:列用于规定数据格式 字段:数据的某个列 主键:唯一地标识表中的 ...
- 数据库-mysql数据库和表操作
一:数据库查询增加删除 1)mysql数据库查询:show databases MariaDB [mysql]> show databases; +--------------------+ | ...
- sqlyog管理关系型数据库mysql数据库之sqlyog的安装管理
.关系型数据库 有库有表,有关系 非关系型数据库 存储对象.集 下面的所有演示截图都是基不超过SQLyog 11进行的. 1. 2.点击上图中的应用程序,进行安装. 安装sqlyog , 账户dd0 ...
- python数据库-MySQL数据库高级查询操作(51)
一.什么是关系? 1.分析:有这么一组数据关于学生的数据 学号.姓名.年龄.住址.成绩.学科.学科(语文.数学.英语) 我们应该怎么去设计储存这些数据呢? 2.先考虑第一范式:列不可在拆分原则 这里面 ...
- C#工具:Ado.Net SqlServer数据库 MySql数据库
数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库. SqlServer调用数据库 using System; using System.Coll ...
- JDBC让java程序连上数据库(mysql数据库)
一.小论异常: 其实JDK已经提供了一组API让java程序连上数据库,并执行SQL语句,其实说起来也蛮简单的,但是绝对是一个细致活,因为稍不留神,异常就铺天盖地的来了,下面说说这些异常吧(声明一下: ...
- 希赛网 > 问答 > 数据库 > 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 ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- MySQL数据库权限体系介绍
本文主要向大家介绍了MySQL数据库权限体系,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mys ...
- mysql 数据库设计(转)
本规范适用于mysql 5.1或以上版本使用 数据库范式 第一范式(1NF)确保每列保持原子性 第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项. ...
随机推荐
- Spring中的JdbcTemplate的使用
一.jdbcTemplate的作用 它就是用于和数据库交互的,实现对表的crud.与dbutils相似 二.JdbcTemplate的使用 <dependency> <groupId ...
- .NET写入文件操作
2018-01-16 22:44:35 许多程序需要记录运行日志,这就需要将程序运行记录写入本机,一般是.txt 文本或.csv 文件.具体操作如下: 一.C# using System.IO; ...
- 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 ...
- 《Python学习手册 第五版》 -第17章 作用域
上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...
- Python - 面向对象(三)公共变量,受保护变量,私有变量
前言 在Python的类里面,所有属性和方法默认都是公共的:但Python也可以设置受保护.私有类型的变量or方法 受保护类型的变量.方法 一般称为:protected变量 #!/usr/bin/en ...
- 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)
在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...
- Apache Druid 底层存储设计(列存储与全文检索)
导读:首先你将通过这篇文章了解到 Apache Druid 底层的数据存储方式.其次将知道为什么 Apache Druid 兼具数据仓库,全文检索和时间序列的特点.最后将学习到一种优雅的底层数据文件结 ...
- Mysql失败,异常pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9D\\x90\\xBF;......
问题描述: 插入Mysql时失败了,python代码报如下异常: pymysql.err.InternalError: (1366, "Incorrect string value: '\\ ...
- SVM支持向量机——核函数、软间隔
支持向量机的目的是寻找一个能讲两类样本正确分类的超平面,很多时候这些样本并不是线性分布的. 由此,可以将原始特征空间映射到更高维的特征空间,使其线性可分.而且,如果原始空间是有限维,即属性数量有限, ...
- test命令的使用以及判断语法
test命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 语法:test EXPRESSION 或者 [ EXPRESSION ] 字符串判断( ...