使用多个表格管理的数据库。
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 NULL
Like
: 类似于 =
, 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 注入。