|
4 MySQL学习第四天
4.1 数据表操作
数据库好比是仓库,而数据表则是仓库中的一个个房间
表记录操作包括:
记录操作——插入记录
语法格式:INSERT INTO 表名[(字段列表)] VALUES(值列表);
语法格式:INSERT INTO 目标表名[(字段列表1)]SELECT(字段列表2)FROM 源表 WHERE 条件;
插入记录时,需要考虑约束条件,有默认值约束时可用DEFAULT关键字表示插入的是默认值,有外键约束时需要插入NULL或者父表中主键存在的值,有auto_increment约束时建议插入NULL值,此时将会向该字段插入下一个编号
记录操作——修改记录
语法格式:UPDATE 表名 SET 字段名1=值1,…,字段名n=值名n [WHERE 条件表达式];
记录操作——删除记录
语法格式:DELETE FROM 表名 [WHERE 条件表达式];
语法格式:TRUNCATE [TABLE] 表名;
4.2 索引
数据库是按照数据结构来组织、存储和管理数据的仓库
为数据建立一个类似字典的音序表、图书目录一样的存储结构,这就是“索引”
其中:字段值就想目录中的标题,指针相当于页码
索引本质上是一种优化查询的数据结构,可以快速查询数据库表中的特定记录信息
索引分类:
- 普通索引:index是MySQL的基本索引,普通索引允许字段值重复,一个数据表中可以有多个普通索引
- 唯一性索引:unique索引对于普通索引来说有一点特别,就是唯一性索引所对应列的值必须是唯一的,但是允许为空值
- 主键索引:primary key索引是一种特殊的唯一性索引,它不允许有空值,而且一个数据表中只能创建一个主键索引
- 全文索引:fulltext索引,可以在char、varchar或者text类型字段上创建
- 单列索引:只包含一个列的所有
- 组合索引:指在表的多个字段组合上创建的索引
索引设计原则:
- 索引并非越多越好
- 字段的离散越高,该字段适合选作索引的关键字
- 经常排序和分组的数据列、两个表的连接字段应该建立索引
- 更新频繁的字段不适合常见索引,不会出现在where子句中的字段不应该创建索引
创建索引的方法有两种:
在创建表的同时创建索引
CREATE TABLE 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
……
[其他约束条件]
……
[UNIQUE|FULLTEXT] INDEX [索引名](字段名[(长度)][asc|desc])
)ENGINE=存储引擎类型 DEFAULT CHARSET=字符集类型在已有表上创建索引
CREATE方法:
CREATE [UNIQUE|FULLTEXT] INDEX 索引名 ON 表名(字段名[(长度)][asc|desc]) ALTER方法:
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名(字段名[(长度)][asc|desc])删除索引:
DROP INDEX 索引名 ON 表名索引的优点:
- 可以大大加快数据库的检索速度
- 可以加速表之间的连接
- 在使用分组和排序字句进行检索时,同样可以显著减少查询中分组和排序的时间
- 通过使用索引可以提高系统性能
索引的缺点:
- 创建和维护索引需要耗费时间
- 索引是需要占用物理内存的
- 当对表中的数据进行增加、删除和修改的时候,索引也需要进行动态维护,这样就降低了数据库的维护速度
|
|