2021-03-18

语句的类型

  1. DQL:数据查询语言 select

  2. DML:数据操作语言

    insert增 delete删 update改 select查 对表里的数据

    可以回退(可以进行事务操作)

  3. DDL:数据定义语言
    create创建表/drop删除表 /truncate删除数据 /alter table修改表
    不可以回退

  4. DCL: 数据控制语言
    grant授权, revoke取消授权
    比如创建表的权限

DML

  1. 增加数据

    insert into 表名(字段名1,字段名2,…,) values(字段值1,字段值2,…)

    字段名和字段值一一对应:数据类型、个数、顺序

    **注:如是完整的表字段,可省略字段名(99标准)在这里插入图片描述

  2. 动态输入插入的值(&)

    Java 中 Scanner(system in)

    Scanner input = new scanner(system in);

    Input.next();

    动态输入插入的值

    注:如果是字符串,日期格式还是需要加上 ’ ’

    在这里插入图片描述

  3. 批量插入数据:

    (1)创建新表(批量插入之前不存在)

    CREATE TABLE 新表名 AS SELECT * FROM 老表名;

    在这里插入图片描述

    (2)创建新表,将旧表的一部分数据批量导入

    CREATE TABLE 新表名 AS SELECT 老表列名,…, FROM 老表名;

    在这里插入图片描述

    (3)可以合理利用该where 1=0 来快速复制表结构

    CREATE TABLE 新表名 AS SELECT 老表列名,…, FROM 老表名 WHERE 条件;

    在这里插入图片描述

    (4)在已存在的表(只有表结构没有数据)中插入数据

    INSERT INTO 目标表名(表列名,…,) SELECT 表列名,…FROM 老表名;

    在这里插入图片描述

  4. 批量事务处理

    BEGIN … END; /

    在这里插入图片描述

  5. 插入海量数据:

    数据泵 \ SQL Loader\ 外部表

  6. 删除delete,truncate,drop的区别

    (1)Delete 删除表数据 可回退 DML insert into update 都可回退

    ​ Truncate 删除表数据 不可回退 DDL 保留的是记录

    ​ Drop 删除表 不可回退 DDL 记录都删(回收站)

    ​ 注: 可回退是保证在没有提交(conmmit)之前

    ​ 显示SQL执行时间: set timing on/off

    (2)Drop 和truncate 相对于delete更加危险

    (3)Delete 删除数据后还占用资源空间

    (4)Delete 产生碎片

  7. HWM 高水位线
    在这里插入图片描述

    (1)碎片太多 需要清理

    ​ \1. move sql语句

    ​ \2. 导入导出

  8. 更改update

    (1)如果不加where条件则更改的是全表

    UPDATE 表名 SET 列名1=值1,列名2=值2,列名3=值3… WHERE 条件

    在这里插入图片描述

    (2)加上where 条件子句

    在这里插入图片描述

  9. 查看保留字

    select * from v$reserved_words

DDL(create/drop/truncate/alter)

  1. 创建表

    (1)create table 表名 (字段名,类型,字段名,类型,…);

    (2) sql语句

    create table mytab
    (
      id number,
      name varchar(20),
      age number
    );
    
  2. 创建表的注意事项:

    (1)权限和空间问题

    (2)表名的规定:

    ​ a.必须以字母开头

    ​ b.表名只能包含: 大小写字母、数字、_、$、#

    ​ c.长度 1-30个字符

    ​ d.不能与数据库中其他对象重名(表,视图,索引,触发器,存储过程…)

    ​ e.不能与保留字(关键字)重名

  3. 修改表****Alter :

    (1)add 追加列

    ALTER TABLE 表名 ADD 列名 列类型(长度) ;

    在这里插入图片描述

    (2)修改列 modify
    修改列的长度
    alter table mytab3 modify sex varchar2(20) ;
    修改列的类型
    alter table mytab3 modify sex number ;
    (3)删除列
    alter table mytab3 drop column sex ;
    (4)重命名列
    alter table mytab6 rename column sex to tel ;

  4. 删除表 drop
    (1)select *from tab; 表以及回收站中的表
    drop table mytab6; -->放在了回收站
    在这里插入图片描述

    (2)查看回收站
    show recyclebin;
    (3)清空回收站
    purge recyclebin ;
    (4)还原回收站(闪回)
    (5)删除表并清空:
    drop table test02 purge ;

多表链接查询

  1. 交叉连接(笛卡尔积

    多张表相乘,简单的说就是两个集合相乘的积

    例: select * from emp , dept ;

  2. 内连接
    (1)等值连接,多张表通过相同字段进行匹配,只显示匹配成功的数据,不显示匹配不成功的数据
    a、where
    b、inner join on =
    (2)不等值连接,不常用 ( != ,< , >)

  3. 外连接

    (1)左外连接 左连接 emp dept

    以左表为基准(左表数据全部显示),去匹配右表数据,如果匹配成功,则全部 显示;匹配不成功,则显示部分(无数据部分用NULL填充)

    方式一:select * from emp e left join dept d on e.id = d.id;
    或select * from t_A a left outer join t_B b on a.id = b.id;

    方式二:用(+)来实现,(+)表示补充,即哪个表有加号,这个表就是匹配表。如果 加号写在右表,左表就是全部显示,所以是左连接。 此方式为oracle独有

    select * from t_A a,t_B b where a.id = b.id**(+)**;

    (2)右外连接

    以右表为基准(右表数据全部显示),去匹配左表数据,如果匹配成功,则全部 显示;匹配不成功,则显示部分(无数据部分用NULL填充)

    方式一:select * from t_A a right join t_B b on a.id = b.id;

    ​ 或select * from t_A a right outer join t_B b on a.id = b.id;

    方式二:用(+)来实现,(+)表示补充,即哪个表有加号,这个表就是匹配表。如果 加号写在左表,右表就是全部显示,所以是右连接。 此方式为oracle独有

    ​ select * from t_A a,t_B b where a.id**(+)**=b.id;

    (3)全外连接

    左表和右表都不做限制,所有的记录都显示,两表不足的地方均为NULL。 全外 连接不支持(+)写法

    例:select * from t_A a full join t_B b on a.id = b.id;

    ​ 或select * from t_A a full outer join t_B b on a.id = b.id;

  4. 全外连接

    左表和右表都不做限制,所有的记录都显示,两表不足的地方均为NULL。 全外 连接不支持(+)写法。
    例:select * from t_A a full join t_B b on a.id = b.id; 或
    select * from t_A a full outer join t_B b on a.id = b.id;

  5. 层次连接 (优化自连接) 树

    层次查询

    select level ,字段名… from 表名

    connect by prior 下层=上层

    start with 当前节点的上层节点 = xxxx ;

多表链接

  1. 交叉连接(笛卡尔积)

    两个表中的所有情况的组合

    在这里插入图片描述

  2. 内连接

    (1) 等值连接

    ​ a. where 方式

    在这里插入图片描述

    ​ b. inner join on 方式

    在这里插入图片描述

    (2)不等值连接 != < >

    在这里插入图片描述

  3. 外连接

    (1)左外连接

    ​ a.方式一:传统方式

    在这里插入图片描述

    ​ b.方式二:oracle特有方式

    在这里插入图片描述

    (2)右外连接

    ​ a.方式一:传统方式

    在这里插入图片描述

    ​ b.方式二:oracle特有方式

    在这里插入图片描述

    (3)全连接

    ​ 相当于 先左连接,再右连接,再补充

    在这里插入图片描述

  4. 自连接

    原理:先笛卡尔积,再判断where条件 减去有用的数据展示

    缺点:浪费资源 占内存,慢 性能差

    在这里插入图片描述

在这里插入图片描述

  1. 层次连接 level 树

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值