操作数据(DML)
当添加、更改或者删除数据库中的数据时需要使用DML语句。DML依据的一个集合构成了一个被称之为事务的逻辑单元;
当完成以下操作是,DML语句被执行:
添加新的行到表中;
修改表中的行;
删除表中的行;
一、添加一个新行到表中
Insert语法(每次只能插入一行)
指定列添加
(以hr用户中的departments表为例)
例
向departments 表中添加一条数据。Department_Id=280,Department_name = Teaching,Manager_id=180,Location_id =2000;
Insert into departments(department_id , department_name , manager_id , location_id) values(280,’Teaching’,180,2000);
完全列添加
(以hr用户中的departments表为例)
例
向 departments 表中添加一条数据。 Department_Id=290,Department_name = Development,Manager_id=149,Location_id =2000;
Insert into departments values(290,’Development’,149,2000);
插入空值的行
1.隐式方法
省略字段列表中的列;
(以hr用户中的departments表为例)
例
向 departments表中添加一条数据。Department_Id=300,Department_name = youtuber,其他为空值;
Insert into departments(department_id , department_name) values(300,’youtuber’);
2.显示方法
在values子句中指定null关键字;
(以hr用户中的departments表为例)
例
向 departments表中添加一条数据。Department_Id=310,Department_name = singer,其他为空值;
Insert into departments(department_id , department_name , manager_id , location_id) values(310,’singer’,null,null);
插入日期值
(以hr用户中的departments表为例)
例
添加一个新的雇员;
1.入职时间为当前系统时间;
insert into employees values(300,'pang','danfu','qq','187.343.9024',sysdate,'SA_REP',2500.00,null,149,null);
2.入职时间为默认格式时间;
insert into employees values(301,'pang','danfu','yahoo','080.4417.0816','20/12/12','SA_REP',7500.00,null,149,null);
3.入职时间为指定格式时间;
insert into employees values(302,'miwa','tetsu','gmail','070.2218.5391',to_date('2021年5月6日','yyyy"年"mm"月"dd"日"'),'IT_PROG',15000.00,null,102,300);
从另一个表中复制行
1.用一个查询写insert语句;
2.不用values子句;
3.在查询中列的数目要匹配insert子句中列的数目;
(以hr用户中的employees表为例)
例
建立一个空表emp,并将 employees 表中的 job_id 中含有 REP 的工作岗位的 数据插入到 emp 表中。
insert into emp select e.employee_id,e.last_name,e.salary,e.commission_pct from employees e where e.job_id like '%REP%' ;
使用默认值
在insert中的default
(以hr用户中的emp表为例)
例
1.在emp中的salary列中加入默认值1000,添加数据,ID=302,name=hipi;
insert into emp(id,name) values(302,'hipi');
2.在emp中的salary列中加入默认值1000,添加数据,ID=303,name=hibi;
insert into emp values(303,'hibi',default,null);
二、改变表中的数据
Update语法
用update语句修改已存在的行;
(以hr用户中的emp表为例)
例
更新 emp 表中 ID 为 155 的数据,将名字修改为 tetsuhisa,薪水修改 17500。
Update emp set name = ‘tesuhisa’ , salary = 17500 where id = 155;
用查询更新列
(以hr用户中的emp表为例)
例
更新 emp 表中的雇员 165 的薪水,使其和雇员 156 相同。
Update emp set salary = (select salary from emp where id = 156) where id = 165;
三、从表中删除行
Delete语句
使用delete语句从表中删除已存在的行;
(以hr用户中的emp表为例)
例
删除 emp 表中 id 为 301 的雇员。
Delete emp where id = 301;
删除基于另一个表的行
(以hr用户中的emp表为例)
例
删除 emp 表中薪水与 ST_CLERK 岗位相同的薪水。
Delete emp where salary in(select salary from employees where job_id = ‘ST_CLERK’);
删除表中全部的数据;
如果再删除语句中没有给定任何条件,那么数据库将会删除该表中的所有数据;
(以hr用户中的emp表为例)
例
删除表中全部的数据;
Delete emp;
删除行:完整性约束错误