数据库n步曲(1)

数据库的基本知识

请移步到 百度百科–数据库

sql基础知识

1:简介

sql是结构化查询语言(Structured Query Language)简称SQL

2:分类

  1. DDL(数据定义语言)
    其中包括 create ,alter,drop,truncate 这类的语言,也就是对表结构进行操作的语言
  2. DML(数据操纵语言)
    insert ,delete,update,select 这类的语言的我们经常用到的语言
  3. DCL(数据控制语言)
    grant ,revoke set role,这类的语言就是对用户权限的管理

3:简单的操作

insert 的简单用法

insert 用法有三种
1: insert into 表名 values(属性值1,属性值2,…);
2:insert into 表名 (字段名字1,字段名字2, …) values (属性值1,属性值2,…);
3: insert into 表名字 as (select 语句)

上面的三种用法, 在实际中最常用的是第三种,因为这个是可以批量插入的,因为实际开发的数据可能是亿万级数据,之前的一条一条不现实

select的用法

select 语句是DML语言中最不好用的,数据的查询是比较复杂的,并且还在考虑查询效率的问题,一条select 语句 执行下去,在数据库里面的执行步骤要清晰,这样才可以sql调优
格式:
select 字段名
from 表明
where 条件
group by 基于那个字段分组
having 对组处理
order by 排序
limit 开始行 结束行;

高级操作

连接查询

这里用数据来表示 ,我们有下面的表结构
在这里插入图片描述
数据如下:
在这里插入图片描述

  1. 自连接
    自己和自己连接
    问题:查询那些人是管理人员
	select distinct t2.id 
    from test1 t1,
      	  test t2
    where t1.manager_id=t2.id;
  1. 内连接
    关键字 inner join 可以省略掉inner
    问题:查询那些人是管理人员
	select distinct t2.id 
    from test1 t1,
      	  inner join test1 t2
      	  on t1.manager_id=t2.id;
  1. 左外连接
    关键字 left outer join
    问题:查询谁是 老板
	select t1.id as 老板
    from test1 t1
       left outer join  test1 t2
        on t1.manager_id=t2.id 
       where t2.id is null;

在这里还有思考 为什么不把 上面的 where 换为 and呢?
强调一点: on 是在没有进行笛卡尔乘积之前, 去取数据,这里如果是on的话,在表中没有一条id是null的,这样编译都不会通过的
where 和 on 的区别:where在所有操作弄完之后,当然包括笛卡尔积之后,但是on是在之前,先把数据拿出来,再操作
4. 右外连接
关键字 right outer join
问题:那些人是普通员工

	select t1.id
    from test1 t2
       right outer join  test1 t1
        on t2.manager_id=t1.id 
        where t2.id is null;
  1. 全连接
    就是左外连接 + 右外连接

子查询

  1. 关联子查询
    关联子查询就是在子查询里面还引用主查询的字段,有点像 双层循环
    查询顺序
    先是将主表中的数据送一个进来,之后子查询查询,之后在送出去给主查询
    这种就很适合 主表中数据多,子表中数据少的情况
  2. 非关联子查询
    只执行一次
    执行顺序
    先是执行子表,然后用子表中的数据去主表中找
    这种就很适合 子表数据多的情况,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值