一、登录MySQL
mysql -h hostname -u username -p // 例:mysql - h localhost -u root -p
二、数据库的基本操作
1、创建、查看数据库(CREATE、SHOW)
CREATE DATABASE 数据库名称; // 创建
SHOW DATABASES; // 查看
SHOW CREATE DATABASE 数据库名称; // 查看某个已存在的数据库的信息
2、修改数据库(ALTER)
(1)修改数据库编码:可以使用 ALTER DATABASE 语句实现。
ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin;
3、删除数据库(DROP)
DROP DATABASE 数据库名称;
三、数据表的基本操作
1、创建数据表 CREATE
CREATE TABLE 表名 (
字段名1 数据类型 [完整性约束条件],
字段名2 数据类型 [完整性约束条件],
......
字段名n 数据类型 [完整性约束条件]
)[ENGINE=驱动]; // 例如,ENGINE=MyISAM; 此[]内的部分大多数情况可以省略
2、查看数据表 SHOW、DESCRIBE
2.1 Show方法
(1)列出当前数据库所有的表
SHOW TABLES;
(2)查看某个数据表的具体信息
SHOW CREATE TABLE 表名;
2.2 Describe 方法
(1)查看某个数据表的具体信息
DESCRIBE 表名; // 或者简写为: DESC 表名;
3、修改数据表 ALTER
(1)修改表名 RENAME
ALTER TABLE 旧表名 RENAME [TO] 新表名; // [] 表示其中的内容可选
(2)修改字段名 CHANGE
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
(3)修改字段的数据类型 MODIFY
ALTER TABLE 表名 MODIFY 字段名 数据类型;
(4)添加字段 ADD
ALTER TABLE 表名 MODIFY 字段名 数据类型;
(5)删除字段 DROP
ALTER TABLE 表名 DROP 字段名;
(6)修改字段的位置
ALTER TABLE 表名 MODIFY 字段名1 数据类型 [FIRST]|[AFTER 字段名2] // 置为最前 FIRST;置在 字段2 之后 AFTER 字段名2;
4、删除数据表 DROP
DROP TABLE 表名;
5、表的约束
No. | 约束条件 | 说明 |
1 | PRIMARY KEY | 主键约束,用于唯一标识对应的记录 |
2 | FOREIGN KEY | 外键约束 |
3 | NOT NULL | 非空约束 |
4 | UNIQUE | 唯一性约束 |
5 | DEFAULT | 默认值约束,用于设置字段的默认值 |
5.1 主键约束
主键约束对应字段不能重复,且不能为NULL。
(1)单字段主键
字段名 数据类型 PRIMARY KEY;
(2)多字段主键
PRIMARY KEY(字段名1, 字段名2, 字段名3...);
5.2 非空约束
字段名 数据类型 NOT NULL; // 标识指定字段不能为空
5.3 唯一约束
字段名 数据类型 UNIQUE; // 表中字段的值不能重复出现
5.4 默认约束
字段名 数据类型 DEFAULT 默认值;
6、设置表的字段值自动增加 AUTO_INCREMENT
AUTO_INCREMENT 约束的字段可以是任何整数类型,默认该字段从 1 开始自增。
字段名 数据类型 AUTO_INCREMENT;
7、索引
7.1索引类型
No. | 索引类型 | 定义方法 | 说明 |
1 | 普通索引 | KEY 或者 INDEX 定义 | 基本索引类型 |
2 | 唯一性索引 | UNIQUE | 该索引所在字段的值必须是唯一的 |
3 | 全文索引 | FULLTEXT | 只能创建在 CHAR、VARCHAR 或 TEXT 类型的字段上(现在只有 MyISAM 存储引擎支持全文索引) |
4 | 单列索引 | 在表中单个字段上定义的索引 | |
5 | 多列索引 | 在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个索引时,该索引才会被使用 | |
6 | 空间索引 | SPATIAL | 只能创建在空间数据类型的字段上,GEOMENTRY、POINT、LINESTRING、POLYGON。创建空间索引字段,必须声明为 NOT NULL,并且空间索引只能在存储引擎为 MyIASM 的表中创建。 |
7.2创建索引
(1)创建表时创建索引
CREATE TABLE 表名(
字段名1 数据类型 [完整性约束条件],
字段名2 数据类型 [完整性约束条件], ...
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (字段名[(长度)] [ASC|DESC])
);
- [ ] 中的内容可选;
- UNIQUE 表示唯一索引;FULLTEXT 表示全文索引;SPATIAL 表示空间索引;
- INDEX 和 KEY 表示当前字段为索引,二选一;
- “长度”,可选,表示索引的长度;
- ASC 表示升序排列,DESC 表示降序排列。
注:判断索引是否被使用,可以使用 EXPLAIN 语句进行查看,
EXPLAIN SELECT * FROM 表名 WHERE 字段名=1 [\G]; // 带"\G"时,不要命令后面的分号
(2)使用 CREATE INDEX 语句在已经存在的表上创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引别名 ON 表名 (字段名[(长度)] [ASC|DESC]);
(3)使用 ALTER TABLE 语句在已经存在的表上创建索引
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引别名 (字段名[(长度)] [ASC|DESC]);
7.3 删除索引
(1)使用 ALTER TABLE 删除索引
ALTER TABLE 表名 DROP INDEX 索引名;
(2)使用 DROP INDEX 删除索引
DROP INDEX 索引名 ON 表名;
注:更多阅读:MySQL(二)添加、更新、删除数据