1.日期函数
date_add(date1, interval 1 day) = date2 date1的后一天是date2
2.字符串函数
substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 例子:str = www.wikibt.com substring_index(str,‘.’,1) 结果是:www substring_index(str,‘.’,2) 结果是:www.wikibt substring_index(str,‘.’,-2) 结果是:wikibt.com substring_index(substring_index(str,‘.’,-2),‘.’,1) 结果是:wikibt
3.if用法
if(profile like ‘%female’,‘female’,‘male’) sum(if(result = ‘right’,1,0)) as correct_cnt
4.distinct 与desc
distinct只返回不同(具有唯一性)的行,作用于所有的列,不仅仅是跟在其后的那一列。 desc 降序排序(默认升序asc)只应用到直接位于其前面的列名。如果想在多个列上进行降序排序,必须对每一列指定desc关键字。
5.年月的匹配方法
2021年8月份,匹配date字段即可,匹配方法主要有三种: (1)like语法:date like “2021-08%”; (2)year、month函数:year(date)=‘2021’ and month(date)=‘08’; (3)date_format函数:date_format(date, ‘%Y-%m’)=‘2021-08’.
6.字符串函数
concat(‘first’,‘last’) --连接字符串 upper(‘sky’) – 大写的字符串 lower(‘Sky’) – 小写的字符串 left(‘Kindergarten’,4) – 取字符串左侧的前4个字符 right(‘Kindergarten’,6) – 取字符串右侧的前6个字符
7.插入记录的方式汇总:
- 普通插入(全字段):
insert into table_name values(value1,value2,···) - 普通插入(限定字段):
insert into table_name(column1,column2,···) values(value1,value2,···) - 多条一次性插入:
insert into table_name(column1,column2,···) values(value1_1,value1_2,···),(value2_1,value2_2,···) - 从另一个表导入:
-insert into table_name select * from table_name2 [where key=value]
8.replace into和insert into的区别
replace into 跟 insert into 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
- 如果发现表中已有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
- 否则,直接插入新数据。
9.时间差
timestampdiff(interval,time_start,time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:
- second秒
- minute分钟(返回秒数差除以60的整数部分)
- hour小时(返回秒数差除以3600的整数部分)
- day天数(返回秒数差除以3600*24的整数部分)
- month月数
- year年数
10.表的创建:
10.1直接创建表
CREATE TABLE
[IF NOT EXISTS] tb_name
(column_name1 data_type1
[ PRIMARY KEY
| FOREIGN KEY
| AUTO_INCREMENT
| COMMENT comment
| DEFAULT default_value
| UNIQUE
| NOT NULL
], ...
) [CHARACTER SET charset]
[COLLATE collate_value]
10.2 从另一张表复制表结构创建表:
CREATE TABLE tb_name LIKE tb_name_old
10.3 从另一张表的查询结果创建表:
CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options
11.修改表:
ALTER TABLE 表名 修改选项
alter table user_info add school varchar(15) after level;
增加列在某列之后
alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后)
alter table user_info change job profession varchar(10);
更换列的名称及数据类型
alter table user_info change 原列名 修改列名 修改数据类型
alter table user_info modify achievement int(11) default 0;
更改数据类型
alter table 表名 modify 修改列名称 数据类型 默认值等
选项集合
{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名>
| CHARACTER SET <字符集名>
| COLLATE <校对规则名> }
12.删除表
drop table [if exists] 表名1[,表名2]
13.创建索引
13.1 create方式创建索引:
create
[unique
|fulltext
] index index_name on table_name
(column1[(length)[desc|asc]][,column2,···])
13.2 alter方式创建索引:
alter table tb_name add [unique|fulltext] [index] index_content(content)
14.删除索引
14.1 drop方式删除索引:
drop index <索引名> on <表名>
14.2 alter方式删除索引:
alter table <表名> drop index <索引名>
|