SQL基础【二.DML 数据操纵语言】

二. DML 数据操纵语言

1.1常见的数据类型

1.1数值类型:只有数字没有其他内容,可以用来计算

number(p,[s]): 该类型的字段中存储数值型数据,p代表总长度,s代表 小数位的的长度,括号内不写的话会默认长度为38位;
int: 存储的是整数。

1.12 字符类型:用来存放字符型数据,字符包括:字母 符号 汉字 以及组合

char(n) : 固定长度字符串,该类型的字段中存储固定长度的字符型数据 , n 表示字段精度,存入字段的数据长度不能超过n, 若长度不足n则右侧以空格补齐达到n位长度;
varchar2(n): 可变长度字符串,该类型的字段中存储可变长度的字符型数据 n 表示字段精度,存入字段的数据长度不能超过n, 若长度不足n,则以实际长度存储;
日期类型: 存放一个时间点,包括年月日时分秒等;
date : 最常见的日期类型,固定存储7个字节,包括 世纪 年月日 时分秒, 但是不一定都会显示;
timestamp : 不常见的日期类型,存储7 到11 个字节 比date多了毫秒部分。

1.2DML 数据操纵语言

定义:针对的是数据进行操作,经过DML语句的操作,能够对数据源中的数据进行调整,包括增、删、改。

1.21 INSERT —增加数据,插入数据

语法:
insert into 表名(列名1,列名2…) values(值1,值2…) ;

1:
insert into emp (empno,ename) values(1235 , ' 小黄 ') ;2:
insert into emp 
values(1236,'王','PRESIDENT',' ',to_ date('2022/2/25 ','yyyy/mm/dd',100,100,40);

注意 : 两个单引号可显示为空值,或者NULL 也可以。
快捷插入
语法 : insert into 表名(列名1,列名2…) sql 语句 。

例如: 将emp表中的员工编号,名字的数据插入到sno,sname中
insert into student(sno,sname) select empno,ename from emp;
1.22 DELETE —删除数据

语法:delect from 表名 where 条件;
定义: 不加where 条件是删除整张表数据,加where 条件是删除查询出来的数据。

例:
delete from emp ; ----删除整张表数据
例:
delect from emp where deptno = 10 ; ---删除部门编号等于10 的数据
1.23 UPDATE —更新,修改数据

语法: update 表名 set 列名1= 新值 1,列名2 = 新值2 … where 条件 ;
注意事项:
1.更新时等号左边是要更新的列名,右边是更新的内容。
2.更新后的结果可以是一个固定的值,也可以是函数处理后的结果,或是运算,还可以是单行单列的子查询,如例3 例 4.

1update emp set sal=2000; ------不加where时 则修改该列所有值2update emp set sal=2000
where ename='SCOTT'; -----只修改SCOTT的工资3update emp set sal=2000,comm=comm+100 
where ename ='SCOTT';4update emp set sal=select sal from emp where ename='KING',comm=comm+ 100 
where ename ='SCOTT';

1.3 手动对数据源进行增、删、改。

语法:
select *
from 表名 for update ;

输入语法后如图:
在这里插入图片描述

输入语法后需要先解锁表,然后进行修改,修改完成后点击上锁,然后确定提交才能生效,否则只在当前语句生效,取消提交会直接取消从语法开始的所有操作。
优点:1. 操作简单。2. 可以同时进行增、删、改。
缺点: 1. 所有的操作都不能留下痕迹,不方便后续回顾。2. 同时对大量的数据进行操作时会有崩溃的危险。3. 必须依赖特定的数据库操作工具。
适用场景: 范围小 , 数据少 , 临时的 。

1.4 DML 语句下的 merge into

优点:
1.可以同时满足 增 、删 、 改 ;
2.可以依据目标表原有数据的情况做出改动。
缺点:
1. 要求合并的需求比较高,导致运行的负担增加;
2. 不能单独满足删除的要求。

语法:  merge   into   表名1     a(别名) ---目标表
       using   表名2    b(别名)         ---数据源
       on (关联条件)                    ---适用输入不同数据的列或者主键列  (一定要带括号)
       when    matched    then
       update                           ---对目标表进行更新
       set  列名1  =  新值 1 , 列名2 = 新值2  .........
       where  条件                       ---更新(修改)是在能匹配上的情况下
                       ................................ 
                       ................................  
       delete   where  条件              ---需要满足以上所有条件才可以
       when  not   matched    then      ---当匹配不上的情况时
       insert(a . 列名1  ,  a . 列名2 ........)  ---需要插入什么
       values(b . 列名1  ,  b. 列名2  ........);
例如:
        merge  into  emp1  a
        using  emp b
        on (a.empno = b.empno)
        when matched  then
        update
        set  sal = 2000
        where  job = 'SALESMAN'
        delete
        where  ename  = ' JAMES '      (因为不满足上面的工资等于2000的条件,所以' JAMES '  不会被删除)
        when  not  matched  then
        insert (a.empno , a. ename )
        values(b.empno , b. ename );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随薪所欲hello

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值