使用多个表格管理的数据库。
CREATE DATABASE 数据库名;
DROP DATABASE 数据库名;
数据库类型分为数字类型、时间类型、字符串类型。
| 类型 | 用途 | 格式 |
|---|---|---|
| INT(INEGER) | 大整数值 | |
| FLOAT | 单精度 | |
| DATE | 日期值 | 'YYYY-MM-DD' |
| TIME | 时间值或持续时间 | 'HH:MM:SS' |
| YEAR | 年份值 | 'YYYY' |
| DATETIME | 混合日期和时间值 | 'YYYY-MM-DD' |
| VARCHAR | 变长字符串 |
CREATE TABLE table_name (column_name column_type);
DROP TABLE table_name;
INSERT INTO table_name ( field1, field2, ...fieldN ) VALUES ( value1, value2, ...valueN )
SELECT field1,field2FROM table_name1, table_name2[WHERE condition1 [AND [OR]] condition2[GROUP BY][HAVING][ORDER BY][LIMIT N][OFFSET M]
FROM: 可以从多个 table 中进行查询WHERE=、>、<、>=、<=、!= or <>、IS NULL、IS NOT NULLLike: 类似于 =, SQL 提供了四种匹配方式。%: 表示任意 0 个或多个字符。可匹配任意类型和长度的字符, 有些情况下若是中文, 请使用两个百分号(%%)表示。SELECT * FROM position WHERE name LIKE '%java%';_: 表示任意单个字符。匹配单个任意字符, 它常用来限制表达式的字符长度语句。REGEXP: 可以使用正则进行筛选。SELECT name FROM person_tbl WHERE name REGEXP '^st';GROUP BY: 对 SELECT 查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合。WITH ROLLUP: 可以实现在分组统计数据基础上再进行相同的统计 (SUM, AVG, COUNT 等)。
coalesce: 针对上图 null 处, 可以使用 coalesce(a,b,c) 语法, 其等价于 JavaScript 中 a || b || c || null
HAVING: 用于对 WHERE 和 GROUP BY 查询出来的分组经行过滤,查出满足条件的分组结果。(场景使用存疑: 后续有场景进行补充)ORDER BY:ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]];ASD(ascending) 或 DESD(descending) 来表示升序或降序, 默认 ascending。ORDER BY CONVERT(title using gbk);LIMIT: 可以设置查询返回条数OFFSET: 可以设置起始查询条数limit N,M: 相当于 LIMIT M OFFSET N , 从第 N 条记录开始, 返回 M 条记录UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE CLAUSE]
DELETE FROM table_name[WHERE CLAUSE]
UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
SELECT field1,field2FROM table_name1, table_name2[WHERE condition1 [AND [OR]] condition2UNION [ALL | DISTINCT]
DISTINCT: 默认值, 表示多个 SELECT 语句会删除重复的数据。All: 表示多个 SELECT 语句不会删除重复的数据。真正的应用中经常需要从多个数据表中读取数据。此时可以使用 JOIN 在两个或多个表中读取数据。

SELECT field1,field2 FROM table_name1 INNER JOIN table_name2 ON condition;
SELECT field1,field2 FROM table_name1 LEFT JOIN ttable_name2 ON condition;
SELECT field1,field2 FROM table_name1 RIGHT JOIN table_name2 ON condition;事务主要用于处理操作量大,复杂度高的数据。笔者认为事务就像数据库语句中引入 git 操作。
MYSQL 事务控制语句
修改表名或者修改表字段就要使用 ALTER 命令。
ALTER TABLE testalter_tbl DROP i;ALTER TABLE testalter_tbl ADD i INT;alter table tableName modify name1 type1 first|after name2;ALTER TABLE testalter_tbl CHANGE i j BIGINT;空间换时间。使用索引可以加快数据库内部找寻数据的速度。
CREATE INDEX indexName ON table_name (column_name)DROP INDEX [indexName] ON mytable;线上应用应该注意防范 SQL 注入。