SQL知识点(嵌套查询,子查询)

一、 select 语句的应用

  • 1. 多表查询
    允许from后面跟多张表
    select A.name from A,B where A.id = B.id;
  • 2. 外连接(left / right join on)
    在多表查询的实际应用中,我们可能需要一个表的全部记录,这是需要用外连接,如:列出全部学生信息,即使没有匹配到专业(即专业为null)
    select stu.info from stu a left join pro b on a.pro_id = b.pro_id;
  • 3. 子查询
    将子查询或 in 或 exists 当成where条件的一部分,这样的查询成为子查询
    select teacher.id from teacher where pro_id in ( select pro_id from pro );
    select fee_id from 收费项目名称表 where fee_id in ( select fee_id from 收费项目目录表 );
  • 4. 嵌套查询
    select 语句嵌入 select 语句,称为嵌套查询,注意:子查询是在where条件语句里,而嵌套查询是在from之后,示例:
    select rownum as 序号,药品名称,实际数量 from
    (select A.名称 as 药品名称, SUM( nvl( b.实际数量, 0 ) ) as 实际数量 from 收费项目目录 A, 药品库存 B where A.ID = B.药品ID group by A.名称)
    order by 实际数量;
  • 5. 分组查询
    SQL无法把正常的列和汇总函数结合在一起,这时就需要 group by 子句,它可以对 select 语句的结果进行分组后再应用汇总函数。having 子句允许将汇总函数作为条件,使用在查询语句中
    select fee_id, sum(fee) from 费用记录表 where rownum < 7 group by name having sum(fee) > 5;

二、 DML(数据操控语句)

  • 1. 插入:Insert
    insert into 表名 (column1, column2, ...) values (value1, value2, ...)
  • 2. 修改:update
    update 表名 set column1=value1, column2=value2, ... where 条件;
  • 3. 删除:delete
    delect from 表名 where 条件;
  • 4. 删除:truncate
    区别于delete,truncate会直接释放表空间

注:
DML语句均是事务操控语句
执行后须 commit 才能正式生效
若想撤回操作,命令rollback即可复原

三、 DDL(数据定义语句)

  • 1. 创建表:Create
    create 表名 (
    id int(10) primary key auto_increment,
    name varchar(16) not null,
    pwd varchar(16) not null
    )
  • 2. 修改表:alter
    rename 表名1 to 表名2;
    alter table 表名 add 字段名字段描述;
    alter table 表名 modify 字段名字段描述;
    例:alter table people add address varchar(50);
  • 3. 删除:drop
    drop table 表名;

四、 DCL(数据控制语句)

  • 1. 数据对象权限
    all on
    alter on
    select on
    update on
    insert on
    delete on
  • 2. 系统权限
    CONNECT:连接权限
    RESOURCE:系统资源权限
    DBA(Database Administrator):数据库管理员
    权限赋予 & 收回
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容