SQL复习篇 | 青训营笔记

117 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第13天

青训营的课程学了很多天了,感谢这次青训营让我对大数据有了一定的认识,眼看课程就要收尾了,随之而来的就是交项目了,因为我们小组的项目跟sql有关,特此复习一下以前学过的sql语言,以笔记的形式记录下来。

一、常见约束

  • 主键约束:

格式:alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint ppp primary key (id)
  • check约束:

格式:alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)

例子:

alter table emp add constraint xxx check(age>20)

alter table emp add constraint ppp primary key (id)
  • unique约束:

格式:alter table 表名 add constraint 约束名称 约束类型(列名)

例子:

alter table emp add constraint qwe unique(ename)
  • 默认约束: 格式:alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名

比方说:emp表中的gongzi列默认为10000

alter table emp add constraint jfsd default 10000 for gongzi
  • 外键约束:

格式:alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)

例子:

alter table emp add constraint jfkdsj foreign key (did) references dept (id)

二、基本操作

  • 查询语句

select distinct from 表名 where 条件

  • 更新

update 表名 set 函数 where 条件

  • 删除

delete from 表名 where 条件

  • 增加

insert into 表名 values

三、表连接

  • 内连接(2种方法)

    select * from dept,emp where dept.id=emp.dept_id;
    select * from dept inner join emp on dept.id=emp.dept_id;
    
  • 左外连接

    select * from dept left join emp on dept.id=emp.dept_id;
    
  • 右外连接

    select * from dept right join emp on dept.id=emp.dept_id;
    
  • 全外连接

    select * from dept full join emp on dept.id=emp.dept_id;
    

四、其他操作

  • 创建数据库

    CREAT DATABASE 数据库名称
    
  • 创建表

    create table 表名
    
  • 条件语句

    case when then else end
    
  • 排序

    order by 字段名 desc(降序)/ asc(升序)
    
  • 分组

    group by 字段名
    
  • 聚合函数

    sun、avg、count等
    
  • 窗口函数

    分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)
    

区别:

row_number() 产生不会重复的自增编号 (1,2,3,4,5,6.......)

rank()按照值排序的时候产生一个自增编号,值相等时会重复,有空位(eg:1,2,2,4,5,6,6,8...)

dense_rank()按照值排序的时候产生一个自增编号,值相等时会重复,无空位(1,2,2,2,3...)