MySQL基础知识(适合小白) 及常用sql# 续补充

建表:

create table 表名 (
    id int comment 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '**表';

 建表约束:
约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key
sql数据类型:

数值类型:字符串类型:时间类型:

mysql的CRUD:
  • 添加数据(INSERT):insert into 表名 (字段名1, 字段名2) values (值1, 值2);

  • 修改数据(UPDATE):update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

  • 删除数据(DELETE):delete from 表名  [where  条件] ;

查询分为:

1.基本查询  select 字段1, 字段2, 字段3 from  表名;

2.条件查询  select  字段列表  from   表名   where   条件列表 ; -- 条件列表:意味着可以有多个条件

3.聚合查询  select  聚合函数(字段列表)  from  表名 ;

4.分组查询  select  字段列表  from  表名  [where 条件]  group by 分组字段名  [having 分组后过滤条件];

5.排序查询  select  字段列表  from   表名   [where  条件列表] [group by  分组字段 ] order  by  字段1  排序方式1 , 字段2  排序方式2 … ;

6.分页查询  select  字段列表  from   表名  limit  起始索引, 查询记录数 ;

内外连接 /子查询

内连接: select  字段列表   from   表1  [ inner ]  join 表2  on  连接条件 where 过滤条件 ;

外连接: select  字段列表   from   表1  left  [ outer ]  join 表2  on  连接条件 ... ;

***左外连接相当于查询表1(左表)的所有数据,当然也包含表1和表2交集部分的数据。

1.rank() over()

查出指定条件后进行排名。特点是,加入是对学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。

--按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 
SELECT sc.cid,sc.sid,sc.score ,RANK() over(PARTITION by cid order BY score DESC)as 排名 FROM sc;
2.dense_rank() over()

 与rank() over的区别是,两名学生的成绩并列以后,下一位同学并不空出所占的名次。

3.row_num() over()

这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。

4.row_number()

需要把多行数据按照某个字段score降序排序,并且新增一个字段作为排序序号

5.partition by

用于实现数据分段的关键字。它的作用是对结果集进行逻辑分组,在每个分组中进行独立的计算

6.order by /group by

order by升降序排序,group by 当sql中有  聚合函数(count/sum/avg)使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值