MySQL基本命令
数据库操作
SHOW DATABASES;
SHOW DATABASE();
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集(如utf8mb4)] [COLLATE 排序规则];
DROP DATABASE [IF EXISTS] 数据库名;
USE 数据库名;
表操作
SHOW TABLES;
DESC 表名;
SHOW CREATE TABLE 表名;
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释]
)[COMMENT 表注释];
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束];
ALTER TABLE 表名 DROP 字段名;
ALTER TABLE 表名 RENAME TO 新表名;
DROP TABLE [IF EXISTS] 表名;
TRUNCATE TABLE 表名;
数据操作
INSERT INTO 表名(字段1,字段2,…) VALUES (值1,值2,…);
INSERT INTO 表名 VALUES (值1,值2,…);
INSERT INTO 表名(字段1,字段2,…) VALUES (值1,值2,…),(值1,值2,…);
INSERT INTO 表名 VALUES (值1,值2,…),(值1,值2,…);
UPDATE 表名 SET 字段名1=值1, 字段名2=值2, …[WHERE 条件];
DELETE FROM 表名 [WHERE 条件];
查询操作
SELECT 字段 FROM 表名 WHERE 条件 GROUP BY 分组字段
HAVING 分组后条件 ORDER BY 排序字段 LIMIT 分页;
SELECT [DISTINCT(去除重复记录)] 字段1[AS 别名1],字段2[AS 别名2] FROM 表名;
SELECT 聚合函数(字段列表) FROM 表名;
SELECT 字段 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
SELECT 字段 FROM 表名 [WHERE 条件] ORDER BY 字段1 排序方式1, 字段2 排序方式2;
SELECT 字段 FROM 表名 LIMIT 起始索引, 查询记录数;
注:执行顺序为:FROM>WHERE>GROUP BY>HAVING>SELECT>ORDER BY>LIMIT
用户管理(主机名为%表示可以在任意主机上访问数据库)
USE mysql;
SELECT * FROM user;
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
DROP USER '用户名'@'主机名';
权限控制
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机名';
MySQL数据类型
MySQL中的数值类型
| 类型 | 解释 | 有符号范围 | 无符号范围 |
|---|
| TINYINT | 小整数值 | (-128,127) | (0,255) |
| SMALLINT | 大整数值 | (-32768,32767) | (0, 65535) |
| MEDIUMINT | 大整数值 | (-8388608,8388607) | (0,16777215) |
| INT或者INTEGER | 大整数值 | (-214783648, 214783647) | (0,4294967295) |
| BIGINT | 极大整数值 | (-2632^{63}263, 2632^{63}263-1) | (0,2642^{64}264-1) |
| FLOAT | 单精度浮点数值 | — | — |
| DOUBLE | 双精度浮点数值 | — | — |
| DECIMAL | 小数值(精确定点数) | 依赖于M(精度,总长度)和D(标度,小数点后的长度)的值 | 依赖于M(精度)和D(标度)的值 |
MySQL中的字符串类型
| 类型 | 解释 | 大小 |
|---|
| CHAR | 定长字符串 | 0~255 bytes |
| VARCHAR | 变长字符串 | 0~65535 bytes |
| TINYBLOB | 不超过255个字符的二进制数据 | 0~255 bytes |
| TINYTEXT | 短文本字符串 | 0~255 bytes |
| BLOB | 二进制形式的长文本 | 0~65535 bytes |
| TEXT | 长文本数据 | 0~65535 bytes |
| MEDIUMBLOB | 中等长度的二进制形式的文本 | 0~16777215 bytes |
| MEDIUMTEXT | 中等长度文本数据 | 0~16777215 bytes |
| LONGBLOB | 二进制形式的极大文本数据 | 0~4294967295 bytes |
| LONGTEXT | 极大文本数据 | 0~4294967295 bytes |
注:char(10),性能好,不满会用空格填充,varchar(10),性能较差
MySQL中的日期类型
| 类型 | 解释 | 大小 | 范围 | 格式 |
|---|
| DATE | 日期值 | 3 | 1000-01-01 到 9999-12-31 | YYYY-MM-DD |
| TIME | 时间值 | 3 | -838:59:59 到 838:59:59 | HH:MM:SS |
| TEAR | 年份值 | 1 | 1901 到 2155 | YYYY |
| DATETIME | 混合日期和时间值 | 8 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS |
| TIMESTAMP | 混合日期和时间值,时间戳 | 4 | 1970-01-01 00:00:01 到 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS |
查询条件
| 运算符 | 作用 |
|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| <>或!= | 不等于 |
| BETWEEN … AND … | 在某个范围之间(包含最小值和最大值) |
| IN(…) | 在in之后的列表中 |
| LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
| IS NULL | 是NULL |
| AND 或 && | 并且 |
| OR 或 || | 或者 |
| NOT 或 ! | 非,不是 |
权限控制
| 权限 | 含义 |
|---|
| ALL,ALL PRIVILEGES | 所有权限 |
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| ALTER | 修改表 |
| DROP | 删除数据库,表,试图 |
| CREATE | 创建数据库,表 |