一、 数据库基础知识
1.1 创建和查看数据库
CREATE DATABASE 数据库名称; // 创建数据库
SHOW DATABASES; // 查看已经存在的数据库信息
SHOW CREATE DATABASE 数据库名称; // 查看某个已经创建的数据库信息
1.2修改数据库
修改数据库的编码
ALTER DATABASE 数据库名称 DAFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin
'数据库名称'指的是要修改的数据库的名称,'编码方式'指的是修改后的数据库编码.
1.3 删除数据库
删除数据库是将数据库系统中已经存在的数据库删除.成功删除数据库后,数据库中的所有数据都将被清除,
原来分配的空间也将被回收.
DROP DATABASE 数据库名称;
二、数据表的基本操作
2.1 创建数据表
创建数据表是指在已经存在的数据库中建立新表.在操作数据表之前,应该使用" USE 数据库名称"指定操作
是在哪个数据库中进行,否则会抛出"No database selected"的错误.
CREATE TABLE 表名(
字段名1, 数据类型[完整性约束], 字段名2, 数据类型[完整性约束], ....
字段名n, 数据类型[完整性约束],
)
2.2 查看数据表
2.2.1 使用SHOW CREATE TABLE 查看数据表
在MySQL中, SHOW CTEATE TABLE 语句不仅可以查看创建表时的定义语句,还可以查看表的字符编码.
SHOW CTEATE TABLE 表名;
可以在表名的后面加上\G参数,可以使结果显得美观.
2.2.2 使用DESCRIBE 语句查看数据表
在MySQL中,使用DESCRIBE 语句可以查看表的字段信息,其中包括字段名、字段类型等信息.
DESCRIBE 表名;
2.3 修改数据表
2.3.1 修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;
2.3.2 修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
"新数据类型"指的是修改后的数据类型.不能为空,即使新字段与旧字段的数据类型相同,也必须将新数据类型
设置为与原来一样的数据类型.
2.3.3 修改字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型;
"数据类型"指的是修改后的字段的数据类型.
2.3.4 添加字段
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER 已经存在的字段名]
"FIRST"为可选参数,用于将新添加的字段设置为表的第一个字段.
"AFTER"为可选参数,用于将新添加的字段添加到指定的"已存在字段名"的后面.
2.3.5 删除字段
ALTER TABLE 表名 DROP 字段名;
2.3.6 修改字段的排列位置
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名 2
"FIRST"为可选参数,用于将字段1修改为表的第一个字段.
"AFTER 字段名2"为可选参数,用于将字段1插入到字段2的后面.
2.4 删除数据表
删除数据表指的是删除数据库中已经存在的表.在删除数据表的同时,数据表中存储的数据都将被删除.
DROP TABLE 表名; // 删除没有关联关系的数据表
三、表的约束
为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束.
表的常见约束如下:
PRIMARY KEY : 主键约束, 用于唯一标志对应的记录
FOREIGN KEY : 外键约束
NOT NULL : 非空约束
UNIQUE : 唯一性约束
DEFAULT : 默认值约束, 用于设置字段的默认值
3.1 主键约束
在MySQL中,主键约束分为两种.
1. 单字段主键
单字段主键指的是由一个字段构成的主键.
字段名 数据类型 PRIMARY KEY
2. 多字段主键
多字段主键指的是多个字段组合而成的主键.
PRIMARY KEY (字段名1, 字段名2, ....字段名n)
3.2 非空约束
非空约束指的是字段的值不能为NULL.
字段名 数据类型 NOT NULL;
3.3 唯一约束
唯一约束用于保证数据表中字段的唯一性,即标准功能字段的值不能够重复出现.
字段名 数据类型 UNIQUE;
3.4 默认约束
默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,
那么数据库系统会自动为这个字段插入默认值.
字段名 数据类型 DEFAULT 默认值;
设置表的字段值默认增加
在数据表中,若想为表中插入的新纪录自动生成唯一的ID, 可以使用AUTO_INCREMENT约束来实现,
AUTO_INCREMENT约束的字段可以是任何整数类型.默认情况下,该字段的值是从1开始自增的.
字段名 数据类型 AUTO_INCREMENT;
四、索引
4.1 索引的分类
普通索引: 是由KEY 或 INDEX定义 的索引,它是MySQL中的基本索引类型,可以创建在任何数据类型中,
其值是否唯一和非空由字段本身的约束条件所决定.
唯一性索引: 是由UNIQUE定义的索引,该索引所在字段的值必须是唯一的.
全文索引: 是由FULLTEXT定义的索引,它只能创建在CHAR, VACHAR或TEXT类型的字段上, 而且,现在
只有MyISAM存储支持全文索引.
单列索引: 指的是在表中单个字段上创建索引,它可以是普通索引,唯一索引或者全文索引只要能保证该索引
只对应表中一个字段即可.
多列索引: 指的是在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引
才会被使用.
空间索引: 是由SPATIAL定义的索引,它只能创建在空间数据类型的字段上.MySQL中的空间数据类型有4中,
分别是GEOMETRY, POINT, LINESTRING, 和 POLYGON. 需要注意的是,创建空间索引的字段,必须将其声明为
NOT NULL, 并且空间索引只能在存储引擎为MyISAM的表中创建.
4.2 创建索引
创建索引的方式有三种.
1. 创建表的时候创建索引
CREATE TABLE 表名 (
字段名 数据类型 [完整性约束条件],
字段名 数据类型 [完整性约束条件],
....
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
[别名] (字段名1 [(长度)]) [ASC|DESC]
);
"别名": 可选参数,表示创建的索引的名称.
"字段名1": 指定索引对应字段的名称.
"长度": 可选参数, 用于表示索引的长度.
ASC和DESC: 可选参数, 其中, ASC表示升序排列,DESC表示降序排列.
2. 使用CREATE INDEX语句在已经存在的表上创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名
ON 表名 (字段名 [(长度)] [ASC|DESC]);
3. 使用ALTER TABLE 语句在已经存在的表上创建索引
在已经存在的表上创建索引,除了可以使用CREATE INDEX语句外,还可以使用ALTER TABLE语句.
ALTER TABEL 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX
索引名 (字段名 [(长度)] [ASC|DESC])
4.3 删除索引
1. 使用ALTER TABLE 删除索引
ALTER TABLE 表名 DROP INDEX 索引名
2. 使用DROP INDEX 删除索引
DROP INDEX 索引名 ON 表名;