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 | 极大整数值 | (-
2
63
2^{63}
263,
2
63
2^{63}
263-1) | (0,
2
64
2^{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 | 创建数据库,表 |