SQL语句执行顺序
fromjoinonwheregroup by(开始使用select中的别名,后面的语句中都可以使用)avg,sum....havingselectdistinctorder bylimit
distinct
-- 对col1, col2, col3值相同的数据进行去重, distinct必须放置所有列的最前面select distinct col1, col2, col3 from table;-- count去重select count(distinct col1) from table;
group by
根据多个字段分组: 将指定分组字段值都相等的记录视为一组
select province, city, sum(people) from t group by province, city;
order by
根据多个字段排序: 先根据前前驱字段排序, 前驱字段顺序相同, 再根据后续字段排序
select province, city, people from t order by people, city;
JSON字段
UPDATE tb_project SET column_name = JSON_REPLACE(column_name, '$.javaCode', 'value');
事务
普通事务
-- 开启事务begin;start transaction;set autocommit = 0;-- 设置回滚点savepoint sp;-- 回滚到回滚点rollback to sp;-- 回滚所有操作rollback;-- 提交commit;-- 查看当前事物级别SELECT @@tx_isolation;-- 设置read uncommitted级别set session transaction isolation level read uncommitted;-- 设置read committed级别set session transaction isolation level read committed;-- 设置repeatable read级别set session transaction isolation level repeatable read;-- 设置serializable级别set session transaction isolation level serializable;
XA事务
-- 开启事务, 这个'1'就相当于是事务ID, 将事务置于ACTIVE状态XA START '1';-- 或者XA BEGIN '1';-- 对一个ACTIVE状态的XA事务, 执行构成事务的SQL语句-- execute your sql-- 布一个XA END指令, 将事务置于IDLE状态XA END '1';-- 对于IDLE状态的XACT事务, 执行XA PREPARED指令, 将事务置于PREPARED状态-- PREPARED状态的事务可以用XA RECOVER指令列出, 列出的事务ID会包含formatID, gtrid_length, bqual_lenght, dataXA PREPARE '1';-- 对于PREPARED状态的XA事务, 可以进行提交或者回滚XA COMMIT '1';xa ROLLBACK '1';
创建索引
-- 创建索引-- index_type: UNIQUE | FULLTEXT | SPATIAL-- index_method: USING [BTREE | HASH | RTREE]-- index_column_name: column_name [(length)] [ASC | DESC]CREATE [index_type] INDEX index_name [index_method] ON table_name (index_column_name, ...);-- 删除索引DROP INDEX index_name ON talbe_name;
常用函数
-- 返回参数列表中一个不为null的值(合并)select coalesce(null, null, 'result')-- 条件函数(写法1)case columnwhen '1' then 'one'when '2' then 'two'else 'other' end-- 条件函数(写法2)case when column = '1' then 'one'when column = '2' then 'two'else 'other' end-- 聚合函数count(*)avg(column)sum(column)group_concat([distinct] column [order by asc/desc column] [separator '分隔符'])-- 字符串拼接select concat('1', '2', '3');-- 字符串截取select substr('abcd', 2);-- 进制转换select conv(15, 10, 16);-- 求模select 3 mod 2;
时间类型
| 类型 | 所占空间(byte) | 取值范围 |
|---|---|---|
| year | 1 | 1901 到 2155 |
| time | 3 | -838:59:59 到 838:59:59 |
| date | 4 | 1000-01-01 到 9999-12-31 |
| timestamp | 4 | 1970-01-01 00:00:01.000000 到 2038-01-19 03:14:07.999999 |
| datetime | 8 | 1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999 |
其他
-- 查询建表语句SHOW CREATE TABLE table_name;-- 查看表详细信息DESC table_name;-- 查看表索引SHOW INDEX FROM table_name;-- 修改表字段ALTER TABLE table_name MODIFY column_name int NOT NULL DEFAULT '0';
