满嘴都是糖果

字符串函数

select device_id, substring(blog_url,11) as user_name from user_submit

http:/url/dkittycc -> blog_url
dkittycc -> user_name
select substring_index(substring_index(profile,',',3),',',-1)as age from user_submit group by age

180cm,75kg,27,male -> profile
substring_index(profile,',',3) -> 180cm,75kg,27
substring_index(substring_index(profile,',',3),',',-1) -> 27

日期函数

膜函数

Mod(a,b) 在sql中的意思是 a / b 的余数(即 a % b )

窗口函数

用法如下,其中partition by可以省略,表示不分组

<窗口函数> over (partition by <用于分组的列名>
                order by <用于排序的列名>)

窗口函数可以放以下两种函数:

  1. 专用窗口函数,比如rank, dense_rank, row_number等

  2. 聚合函数,如sum, avg, count, max, min等

对于专用窗口函数

select *,
   rank() over (order by 成绩 desc) as ranking,
   dense_rank() over (order by 成绩 desc) as dese_rank,
   row_number() over (order by 成绩 desc) as row_num
from 班级表

对于聚合函数,计算结果是针对自身记录、以及自身记录之上的所有数据进行计算

select *,
   sum(成绩) over (order by 学号) as current_sum,
   avg(成绩) over (order by 学号) as current_avg,
   count(成绩) over (order by 学号) as current_count,
   max(成绩) over (order by 学号) as current_max,
   min(成绩) over (order by 学号) as current_min
from 班级表

插入记录

插入记录的方式汇总:

修改记录

删除记录

修改表

ALTER TABLE 表名
 ADD COLUMN <列名> <类型>  -- 增加列
 | CHANGE COLUMN <旧列名> <新列名> <新列类型> -- 修改列名或类型
 | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
 | MODIFY COLUMN <列名> <类型> -- 修改列类型
 | DROP COLUMN <列名> -- 删除列
 | RENAME TO <新表名> -- 修改表名
 | CHARACTER SET <字符集名> -- 修改字符集
 | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)
alter table user_info add school varchar(15) after level;
alter table user_info change job profession varchar(10);
alter table user_info modify achievement int(11) default 0;

删除表

DROP TABLE [IF EXISTS] 表名1 [, 表名2]

创建索引

CREATE 
  [UNIQUE -- 唯一索引
  | FULLTEXT -- 全文索引
  ] INDEX index_name ON table_name -- 不指定唯一或全文时默认普通索引
  (column1[(length) [DESC|ASC]] [,column2,...]) -- 可以对多列建立组合索引  
create index idx_duration on examination_info(duration);
create unique index uniq_idx_exam_id on examination_info(exam_id);
create fulltext index full_idx_tag on examination_info(tag);