窗口函数介绍
- <窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
- 窗口函数分为 专用窗口函数(如: rank, dense_rank, row_number等) 和 聚合函数 (如:sum, avg, count, max, min等)
# 一些专用窗口函数的介绍:
rank() #并列跳跃排名,即相同的值,保留重复名次,遇到下一个不同值的时候,跳跃至总共排名。 (如:1,2,3,4,4,4,7)
dense_rank() #并列连续排序,相同的值,保留重复名次,遇到下个不同值的时候,按照连续数字排名。(如:1,2,2,3)
row_number() #并列连续排序,就算值一样,也按照连续数字排名。(如:1,2,3,4,5,6,7)
PIVOT 行转列
(可用case…when…then来得到同样的效果)
select * from [table_name] /*数据源*/ as P
pivot( sum (/*行转列后列的值*/) for P.attribute /*需行转列的列*/
in([col1], [col2],[col3]/*列的值*/)
) as T
WITH…AS
子查询,用来定义SQL片段
with [table_alias_name] as(
/*所选数据*/
)
INSERT
向表中插入数据
指令 | 已存在 | 不存在 |
---|---|---|
insert | 报错 | 插入 |
insert ignore | 报错 | 插入 |
replace | 替换 |
insert into table_name (name, age) values('xiaoming', 23);
索引
创建索引 | |
---|---|
普通索引 | create index indexName on table_name (col_name) |
唯一索引 | create unique index indexName on table_name (col_name) |
修改表结构 --(添加索引) | |
---|---|
普通索引 | alert table table_name add index indexName (col_name) |
唯一索引 | alert table table_name add unique indexName (col_name) |
**强制索引:**提高搜索效率
select *
from table_name force index(强制索引名)
where 筛选条件
视图view
视图是虚拟存在的表(逻辑表),本身不包含数据。作为一个select语句包存在字典中,不需要关心后面对应的表的结构,关联条件,筛选条件等内容。用户只能访问他们允许被查询的结果。当视图结构确定了,可屏蔽表结构对用户的影响。
优点:简单,安全,数据独立
create view view_name
as (select * from table_name)
添加列
# 同时向表中添加两个或多个列
alert table table_name
add [column] column_name1 column_1_definition [first|after existing_col]
# 在建好的表中添加一列:
alter table table_name add column new_col_name varchar(255) not null;
# 添加至指定列后
alter table table_name add column new_col_name varchar(255) not null after col_name;
# 若想添加至第一列,把 ‘after col_name' 改为 ‘first’
Delete 语句
delete from table_name [where clause]
自学内容整理总结,如有错误,欢迎指正。(不定期更新)
Reference:
- https://www.yiibai.com/mysql/foreign-key.html