数据分析学习课程1-----SQL------Day2

补充自增:

Show create table t10 查看table是如何创建的

show session variables like'auto_inc%'  查看会话

设置自增步长以及起始值

set session  auto_increment_increment=2; 设置自增步长(会话)

Set global auto_increment_increment ==20;设置全局步长

set session  auto_increment_offset=10     设置会话起始值

外键:描述两张表之间的关系 可以节省空间 用于进行约束

create table useinfo(

                                Uid  int auto_increment primary key,

                                name char(32),

                                department_id int,

                                 constraint   fk_user_depar foreign key(department_id) references                                   department(id)  )  engine = innodb default charset =utf8;

# useinfo的 department_id 与department表中的ID进行链接

主键用于保证数据的唯一性,一张表只能有一个主键,但是可以将两个列合起来做一个主键Primary key(nid,pid)

vs:唯一索引(不能重复但是可以为空)

Creat table t1 (

Id int,

Nun int ,

Xx int,

Unique uql (num,xx)  # 联合唯一

)

外键的变种

一对一

一对多

多对多

排序   order by

select * from t1 order by id desc       从大到小排列

select* from t1 order by id asc           从小到大排列

select * from t1 order by grade desc  limit  2 取前两名

select* from t1 order by age,grade desc   先按年龄排,年龄相同的按年级排

分组 group by

select max(id),part_id from useinfo group by part_id

通过groupby 进行分组 ,可以对结果用 max min count avg进行select

-- 想要找到人数之和大于1的部门

select count(id),part_id  from  userinfo5 group by part_id having count(id)>1

注:对于聚合函数进行二次筛选必须用having

# 给聚合函数列进行重新改名

select count(id) as sum ,part_id  from  userinfo5 group by part_id having count(id)>1

连表操作

left join:返回左表中的所有记录,以及右表中匹配的记录。如果左表中的行在右表中没有匹配,则结果中这些行在右表的部分将包含空值(NULL)

Left join student on score.student_id = student.sid

select* from course

    ->  left join class on  class.cid=course.ccid

    -> left join teacher on  teacher.tid=course.teacher_id

right join 返回右表中的所有记录,以及左表中匹配的记录。这与 LEFT JOIN 相反,即如果右表中的行在左表中没有匹配,则结果中这些行在左表的部分将包含空值(NULL)

inner join:返回两个表中匹配的记录。如果在一个表中有行与另一个表中的行相匹配,则这些行会出现在结果集中。如果某行在左表中有匹配项但在右表中没有,或者反之,则这些行不会出现在结果集中。

nature join:它基于两个表中所有名称相同的列自动创建连接条件。它仅返回两个表中具有相同名称列且列值相等的行

临时表

(select * from score  where num>60) as B 这就创建了一个临时表然后就可以在这个表中继续查询

select sid from (select * from score  where num>60) as B 前提是临时表中必须要有sid这一列

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值