在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] 表名字;