SQL学习之数据操作,基于Oracle下的HR用户(五)
操纵数据(DML)
数据操纵语言:当添加、更新或者删除数据库中的数据时需要使用 DML 语句。DML依据的一个集合构成了一个被称为事务的逻辑单元。
当完成下面操作时,DML 语句被执行:
– 添加新行到表中
– 修改表中的行
– 删除表中的行
1 添加一个新行到表中
1.1INSERT 语句语法
用该语法一次只能插入一行
1.2 指定列添加
1.2.1 示例
向 departments 表中添加一条数据。 Department_Id=280
Department_name = Teaching
Manager_id=180
Location_id =2000
insert into departments(department_id,department_name,manager_id,loction_id)
values(280,'Teaching',180,2000);
只插入到临时表空间,需要使用commit;
1.3 完全列添加
1.3.1 示例
向 departments 表中添加一条数
据。 Department_Id=290
Department_name = Development
Manager_id=149
Location_id =2000
insert into departments(department_id, department_name, manager_id, location_id)
values(290, 'Development',149,2000);select * from departments where
department_id = 290;
1.4 插入带空值的行
隐式方法: 省略字段列表中的列。
insert into departments(department_id,department_name)
values(300,'A');
显式方法: 在 VALUES 子句中指定 NULL 关键字。
insert into departments(department_id,department_name,m
anager_id,location_id)
values(310,'A',null,null);
1.5 插入日期值
1.5.1 示例
添加一个新的雇员:
insert into
employees(employee_id,first_name,last_name,
email,phone_number,hire_date,job_id,salary,
commission_pct,manager_id,department_id)
values(300,'Old','Lu','sdfsdfd','23423423',sysdate,'AD_PRES',23423,null,204,290);
使用默认日期格式:
insert into
employees(employee_id,first_name,last_name,
email,phone_number,hire_date,job_id,salary,
commission_pct,manager_id,department_id)
values(301,'Old','Lu','sdfsdddfd','23423423','01/3 月/2019','AD_PRES',23423,null,204,290);
指定日期格式:
insert into
employees(employee_id,first_name,last_name,
email,phone_number,hire_date,job_id,salary,
commission_pct,manager_id,department_id)
values(302,'Old','Lu','sdfsddfd','23423423',to_date('2019-03-01','yyyy-MM-dd'),'AD_PRES',23423,null,204,290);
1.6 从另一个表中复制行
• 用一个查询写 INSERT 语句
• 不用 VALUES 子句
• 在查询中列的数目要匹配 INSERT 子句中列的数目
1.6.1 创建表
create table EMP
(
id NUMBER not null,
name VARCHAR2(50),
salary NUMBER(8,2),
commission NUMBER(2,2)
)
1.6.2 示例
将 employees 表中的 job_id 中含有 REP 的工作岗位的数据插入到 emp 表中。
insert into
emp(id,name,salary,commission) select
employee_id,last_name,salary,commission_pct
from employees where job_id like '%REP%';
OR
insert into emp select
employee_id,last_name,salary,commission_pct
from employees where job_id like '%REP%';
1.7 使用默认值
在 INSERT 中的 DEFAULT
insert into emp(id,name) values(302,'Kevin');
insert into emp values(301,'OldLu',default,null);
2 改变表中的数据
2.1UPDATE 语句的语法
用 UPDATE 语句修改已存在的行
2.1.1 示例
更新 emp 表中 ID 为 170 的数据,将名字修改为 OldLu,薪水修改 20000。
update emp e set e.name ='OldLu',e.salary = 20000
where e.id = 170;
2.2 用查询更新列
2.2.1 示例
更新 emp 表中的雇员 165 的薪水,使其和雇员 156 相同。
update emp e set e.salary = (select salary
from emp where id = 156) where e.id = 165;
3 从表中删除行
3.1DELETE 语句
使用 DELETE 语句从表中删除已存在的行。
3.1.1 示例
删除 emp 表中 id 为 302 的雇员。
delete from emp where id = 302;
3.2 删除基于另一个表的行
3.2.1 示例
删除 emp 表中薪水与 IT_PROG 岗位相同的薪水。
delete from emp where salary in(select
distinct salary from employees where job_id
= 'IT_PROG');
3.3 删除表中的全部数据
如果在删除语句中没有给定任何条件,那么数据将会删除该表中的所有数据。
3.3.1 示例
删除表中的所有数据。
delete emp;
3.4 删除行: 完整性约束错误
不能删除包含主建的行,该主键被用做另一个表的外键;
SQL学习之数据操作,基于Oracle下的HR用户(五)相关推荐
- SQL学习之子查询,基于Oracle下的HR用户(四)
六. 子查询 1 子查询介绍 1.1 什么是子查询 子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句. 可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中.内 ...
- SQL批量删除数据操作
SQL批量删除数据操作 文章目录 SQL批量删除数据操作 sql语句 DELETE和TRUNCATE区别 sql语句 --删除数据(避免这么写,删除表全部数据) DELETE FROM `studen ...
- oracle下导出某用户表的方法
scott/tiger是用户名和密码,handson是导出的实例名 ²按用户方式导出数据(owner当中写的是用户名) expscott/tiger@handsonfile=scott_backown ...
- hive学习笔记-数据操作
hive数据操作 hive命令行操作 hive -d --define <key=value> 定义一个key-value可以在命令行中使用 hive -d database <da ...
- Oracle 访问SQL Server的数据 (通过Oracle gataway)
测试例子:通过Oracle的GateWay,访问SQLServer的数据. Oracle 信息: Oracle所在机器的IP : 192.168.2.28 oracle SID :test Oracl ...
- 史上最简单的 MySQL 教程(六)「SQL 基本操作 之 数据操作」
SQL 基本操作 基本操作:CURD,即增删改查. 根据操作对象的不同,咱们可以将 SQL 的基本操作分为三类,分别为:库操作.表(字段)操作和数据操作. 数据操作 1 新增数据 对于数据的新增操作, ...
- SQL语言之数据控制语言(Oracle)
数据控制语言(DCL) Grant-授予用户权限 Revoke-撤销用户权限 一.授权系统权限 授予创建其他对象权限 1.Create session 登录权限 2.Create table 制表权 ...
- linux 查看用户操作日志,Linux下记录所有用户的登录和操作日志
一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通 ...
- 使用JDBC操作基于Oracle的CLOB,BLOB字段类型
转载至程式先锋技术维客[url]www.javabiz.cn[/url] 先来看看两种LOB类型的主要区别: CLOB 表示Character LOB (字符LOB) 它可以存储大量的字符数据. B ...
最新文章
- 输入两个数,计算它们的最大公约数和最小公倍数
- Java程序设计进阶之路一:捕捉异常
- 金鑫是著名高校计算机,金鑫 个人简历
- java中struts2日期_Struts2中Date日期转换的问题
- Scala函数式编程:偏函数
- java学习之(内部类)
- Tornado引入静态css、js文件
- EditDistance,求两个字符串最小编辑距离,动态规划
- jedate日期插件使用
- ectouch2.0 php5.5_EcTouch二次开发
- 作为面试官的一点心得
- 计算机省级教学团队建设,附件5:山东省高等学校教学团队建设实施方案
- 树莓派命令连接wifi_使用命令行设置树莓派的wifi网络
- Qt实现中英文切换(国际化)
- R语言绘制生存曲线估计|生存分析|如何R作生存曲线图
- 运用形式逻辑去分析解决问题的方法
- 汽车理论课后习题matlab程序,汽车理论课后习题程序
- Unity3D 快捷键
- 学习办公常用软件分享下载
- 处理MTK中DuraSpeed(快霸)引起的app被莫名其妙kill掉
热门文章
- A Simple Semi-Supervised Learning Framework for Object Detection
- macOS 软件推荐避雷指南 - 让 mac 更像 windows 的装机必备软件
- 第十五届浙江省ACM程序设计竞赛小记
- Android基础学习笔记13:安卓触摸事件触摸按键
- powerdesign工具导出数据库结构
- 毫末智行“AI DAY”即将来临,自动驾驶未来何解?
- 软件开发测试验收通知书,软件项目开发-客户告知书
- Ant Design 'cross-env' 不是内部或外部命令,也不是可运行的程序 报错问题
- 对标高竞争性,我们郑重纳入了这一机制——MDU价格保障机制之回购
- 利用开源软件架设中小型私有云存储系统【简要选型】