当前位置:天才代写 > tutorial > 数据库教程 > Mysql基础教程(三) Mysql数据表设计之索引和数据表类型

Mysql基础教程(三) Mysql数据表设计之索引和数据表类型

2021-02-25 12:53 星期四 所属: 数据库教程 浏览:683

在MySQL中,关键有四类数据库索引: 主键数据库索引(PRIMARY KEY) 唯一索引(UNIQUE) 基本数据库索引(INDEX) 全文索引(FULLTEXT)

 

主键数据库索引是关系型数据库中最普遍的索引类型,关键功效是明确数据信息表中一条特殊的数据信息纪录的部位。我们可以在字段名后加上PRIMARY KEY来对字段名设定为主导键数据库索引。

留意:

1.最好是为每一张表特定一个主键,但并不是务必特定。

2.一个表只有特定一个主键,并且主键的值不可以为空 3.主键能够有好几个备选数据库索引(比如NOT NULL,AUTO_INCREMENT)

 

唯一索引与主键数据库索引一样,都能够避免 建立反复的值。可是,不同点取决于,每一个数据分析表中只有有一个主键数据库索引,但能够有好几个唯一索引。大家应用关键词UNIQUE对字段名界定为唯一索引。

 

基本数据库索引技术性是关联数据统计中最重要的技术性,假如要提高数据库查询的特性,索引优化是最先应当考虑到的,因为它能使大家的数据库查询获得较大 特性层面的提高。

基本数据库索引也存有缺陷:

1.多占有储存空间

2.会缓减插进,删掉和改动实际操作

3.必须依照数据库索引列上排列文件格式实行 创建索引我们可以应用INDEX和KEY关键词随表一同建立。

 

全文索引在MySQL中是一个FULLTEXT种类数据库索引,但FULLTEXT数据库索引只有用以MyISAM表,而且只能够在CHAR、VARCHAR或TEXT种类的列上建立,也容许建立在一个或好几个数据信息列上。 可是FULLTEXT是不兼容汉语全文索引的,因此 大家未来会应用高效率高些的全文索引模块Sphinx。

 

加上和删除索引

加上数据库索引: 大家应用add关键词 ALTER TABLE `uses` ADD INDEX/UNIQUE/PRIMARY KEY(字段称)

那样会在该字段名上创建数据库索引(一般数据库索引,唯一索引,主键数据库索引)。

删除索引: ALTER TABLE `users` DROP 数据库索引名字;

那样大家会删掉这一数据库索引,我们可以应用show indexes from 表名查询当今表数据库索引。

 

数据分析表的种类和存储部位

MySQL适用MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV等多种多样数据分析表种类,在建立一个新MySQL数据分析表时,能够为它设定一个种类。

MyISAM和InnoDB二种表种类更为关键:

1.MyISAM数据分析表种类的特性是完善、平稳和便于管理方法。

2.MyISAM表种类会造成残片室内空间,要常常应用OPTIMIZE TABLE指令去清除表空间

3.MyISAM不兼容事务管理,InnoDB适用

4.MyISAM不兼容外键约束,InnoDB适用

5.MyISAM表种类的数据分析表高效率高些 6.MyISAM表种类的数据分析表会造成三个文档,InnoDB表种类表默认设置总是造成一个文档。

 

创建表的情况下,要是没有确立地特定一切字段名,则新创建数据分析表的字段名将由MySQL环境变量里charcter-set-server选择项的设定决策。

在建立数据分析表时假如必须特定默认设置的字段名与之同样,但MySQL客户程序在与网络服务器通讯时应用的字段名,大家必须应用default-character-set选择项或根据SQL指令SET NAMES utf8来特定一个字段名为utf8.

 

建立数据分析表以前,大家应当留意:

1.建立数据库(如已存有则不用建立)

2.挑选数据库查询

3.在该数据库查询之中建立数据分析表

 

建立数据分析表必须留意:

1.特定数据分析表的名字(数据分析表不可以同名)

2.特定该表的字段称、字段名基本数据类型、字段名数据库索引

3.特定表种类和表默认设置字段名(可省去)

 

下边大家宣布建一个表:

完工的表以下:

中文名字

字段

基本数据类型

特性

数据库索引

客户序号

id

INT

UNSIGNED

NOT NULL

AUTO_INCREMENT

主键

客户名字

username

VARCHAR(50)

NOT NULL

一般

动态口令

userpass

VARCHAR(50)

NOT NULL

一般

联系方式

telno

VARCHAR(20)

NOT NULL

唯一

性別

sex

ENUM(‘男’,’女’)

NOT NULL DEFAULT ‘男’

 

出世日期

birthday

DATE

NOT NULL DEFAULT ‘0000-00-00’

 

 

下边是建表语句

最先

set character_set_server=utf8;      #将Mysql服务项目的字段名改成utf8,那样待会儿建的库和表就全是utf8的标识符

create database test;                    #建库

use test                                         #应用库才可以建表

 

CREATE TABLE IF NOT EXISTS `users`(   

     `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,

     `username` VARCHAR(50) NOT NULL,   

     `userpass` VARCHAR(50) NOT NULL,     

    `telno` VARCHAR(20) NOT NULL UNIQUE,     # unique表明创建唯一键

    `sex` ENUM(‘男’,’女’) NOT NULL DEFAULT ‘男’,   

    `birthday` DATE NOT NULL DEFAULT ‘0000-00-00’,     

    PRIMARY KEY(`id`),       #创建唯一键

    INDEX username_index(`username`),    #创建一般数据库索引

    INDEX userpass_index(`userpass`)        #创建一般数据库索引

)ENGINE=MyISAM;

 

常见问题:     

1.表的字段名中间要应用分号分隔。   

 2.建表的最后一句一定不可以有分号。   

 3.表名字和字段称尽可能不必应用MySQL系统软件的关键词     

4.假如一定要应用关键词,我们可以应用反引号将表名字和字段称包括起來来开展过虑屏蔽掉。   

 5.应用反引号会使建表高效率提高。     

6.数据分析表名字和字段称不可以同名     

7.AUTO_INCREMENT特性务必依赖于主键数据库索引或唯一索引

 

改动表的英语的语法:

ALTER TABLE 表名 ACTION;

我们可以对表开展改动字段名,加上字段名,删除字段,加上数据库索引,删除索引,变更表名字,变更字段称,变更auto_increment特性的初值等。

 

改动字段名:

大家应用change或是是modify关键词

ALTER TABLE `uses` CHANGE `username` `uname` VARCHAR(32) NOT NULL; ALTER TABLE `users` MODIFY `username` VARCHAR(32) NOT NULL;

由上例能够发觉: change能够更改字段称,而modify不能

 

加上字段名

大家应用add关键词

ALTER TABLE `uses` ADD `tname` VARCHAR(32) NOT NULL;

那样大家便会增加一个tname字段名。

 

删除字段

大家应用drop关键词

ALTER TABLE `users` DROP `tname`; 那样大家会删掉tname字段名

 

加上和删除索引

加上数据库索引: 大家应用add关键词 ALTER TABLE `uses` ADD INDEX/UNIQUE/PRIMARY KEY(字段称)

那样会在该字段名上创建数据库索引(一般数据库索引,唯一索引,主键数据库索引)。

删除索引: ALTER TABLE `users` DROP 数据库索引名字;

那样大家会删掉这一数据库索引,我们可以应用show indexes from 表名查询当今表数据库索引。

 

变更表名字:

大家应用rename关键词

ALTER TABLE 旧表名 RENAME AS 新表名

将旧表名更改成新表名

 

变更AUTO_INCREMENT初值:

ALTER TABLE 表名字 AUTO_INCREMENT=1

将AUTO_INCREMENT的初值设定为1

 

删除表:

DROP TABLE [IF EXISTS] 表名字;

 

 

 

    关键字:

天才代写-代写联系方式