Oracle 操作数据库(增删改语句)
对数据库的操作除了查询,还包括插入、更新和删除等数据操作。后3种数据操作使用的 SQL 语言也称为数据操纵语言(DML)。
一、插入数据(insert 语句)
插入数据就是将数据记录添加到已经存在的数据表中,可以通过 insert 语句实现向数据表中一次插入一条记录,也可以使用 select 子句将查询结果批量插入数据表。
1、单条插入数据
语法:
insert into table_name [ (column_name[,column_name2]...) ] values(express1[,express2]... )
- table_name:要插入数据的表名
- column_name1 和 column_name2:指定表的完全或部分列名称
- express1 和 express2 :表示要插入的值列表
EG:
SQL > insert into dept(deptno,dname,loc) values(88,'Tony','tianjin')
注意:
- insert into 中指定添加数据的列,可以是数据表的全部列,也可以是部分列
- 给指定列添加数据时,需要注意哪些列不能空;对于可以为空的列,添加数据可以不指定值;添加数据时,还应该数据添加数据和字段的类型和范围
- 向表中所有列添加数据时,可以省略 insert into 子句后面的列表清单,使用这种方法时,必须根据表中定义列的顺序为所有的列提供数据
- 添加数据时,还应该注意哪个字段是主键(主键的字段是不允许重复的),不能给主键字段添加重复的值
2、批量插入数据
insert 语句还可以一次向表中添加一组数据,可以使用 select 语句替换原来的 values 子句,语法如下:
insert into table_name [ (column_name1[,column_name2...]...) ] selectSubquery
- table_name:要插入数据的表名
- column_name1 和 column_name2 :表示指定的列名
- selectSubquery:任何合法的 select 语句,其所选列的个数和类型要与语句中的 column 对应。
EG:
SQL > insert into jobs_temp select * from jobs where jobs.salary > 1000
注意:
- 使用这种语句实现批量插入数据时,insert into 子句指定的列名可以与 select 子句指定的列名不同,但是它们之间的数据类型必须是兼容的
二、更新数据(update 语句)
如果表中的数据不正确或不符合需求,那么就可以通过 update 语句实现修改现有的数据记录。
更新数据时,更新的列数可以有自己指定,列与列之间用逗号分隔;更新的条数可以通过 where 子句来加以限制,使用 where 子句时,系统只更新符合 where 条件的记录,语法如下:
update table_name set {column_nam1=express1 [,column_name2=express2...] | (column_name1 [,column_name2...]) = (selectSubquery)} [where condition]
- table_name:表示要修改的表名
- column_name1 和 column_name2 :表示指定要更新的列名
- selectSubquery: 任何合法的 select 语句,其所选列的个数和类型要与语句中 column 对应
- condition:筛选条件表达式,只有符合筛选条件的记录才会被更新
EG1:
SQL > update emp set sal = sal*1.2 where job = "salesman"
表示把销售员(salesman)的工资上调20%。
EG2:
SQL > update emp set sal = (select avg(sal) from emp where job = "manager") where sal < 2000
表示把emp表中工资小于2000的人员工资调整为管理者的平均工资的水平。
注意:
- 将 update 语句与 select 语句组合使用时,必须保证 select 语句返回单一的值,否则会出现错误提示,导致更新数据失败。
三、删除数据 (delete 语句和 truncate 语句)
Oracle 系统提供了从数据库删除记录的功能,删除记录可以使用 delete 语句和 truncate 语句,区分如下:
1、delete 语句
delete 语句用来删除数据库中的所有记录和指定方位的记录,若要删除指定范围的记录,需用 where 子句进行限制,语法如下:
delete from table_name [where condition]
- table_name:表示要删除记录的表名
- condition:筛选条件,可选项,只有符合筛选条件的记录才会被删除掉
EG:
SQL > delete from jobs where job_id = "pro"
注意:使用 delete 语句来删除数据时, Oracle 系统会产生回滚记录,所有这种操作可以使用 rollback 语句来进行撤销
2、truncate 语句
删除记录也可以使用 truncate 语句,语法同 delete 语句,使用 truncate 语句删除表中的所有记录要比 delete 语句快得多,但是不会产生回滚记录,执行了 truncate 语句的操作也就无法使用 rollback 语句撤销。
注意:在 truncate 语句还可以使用 reuse storage 关键字或者 drop storage 关键字,前者表示删除记录后仍然保存记录所占用的空间;后者表示删除记录后立即回收记录所占用的空间。Oracle 系统默认情况下的 truncate 语句使用 drop storage 关键字。
Oracle 操作数据库(增删改语句)的更多相关文章
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- Django-Model操作数据库(增删改查、连表结构)
一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import models class userinfo(models.M ...
- phpcms 操作数据库 增删改查
数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...
- MongoDB学习day04--NodeJs操作数据库增删改查
一.在Nodejs中使用Mongodb Nodejs需要引入的包 npm install mongodb --save -dev 或者使用镜像 cnpm install mongodb --save ...
- java操作数据库增删改查的小工具1--TxQueryRunner
在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...
- JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能
一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...
- java操作数据库增删改查的小工具2--TxQueryRunner
当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下: 其中t_person的外键为t-address的主键aid, 新建两个javaBean类,Person ...
- 学习总结 DML数据库增删改语句
insert into score t values('111','3-105',88)--插入一行数据 insert into score(sno,cno) values('111','3-105' ...
- 前端web通过flask操作数据库-增删改查
后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
随机推荐
- 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)
截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...
- DispatcherServlet 被加载顺序
javax.servlet.Servlet#init 0 -> javax.servlet.GenericServlet#init(javax.servlet.ServletConfig) 1 ...
- Qt编写气体安全管理系统26-组态设计
一.前言 组态设计是应一个客户要求新增加进去的,设计理念就是在提供一个组态设计的初级功能,比如读取自定义控件动态库,加载所有的控件放到控件栏(有点类似qtcreator的控件栏)用户拖曳对应的控件到画 ...
- [LeetCode] 20. Valid Parentheses 合法括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- 托马斯·贝叶斯 (Thomas Bayes)
朴素贝叶斯 Day15,开始学习朴素贝叶斯,先了解一下贝爷,以示敬意. 托马斯·贝叶斯 (Thomas Bayes),英国神学家.数学家.数理统计学家和哲学家,1702年出生于英国伦敦,做过神甫: ...
- 使用pyinstaller将python打包成exe文件
步骤: 1)win+R 输入cmd打开dos窗口 2)先安装pyinstaller: pip install pyinstaller 3)然后使用cd命令进入项目文件的路径下: 4)再使用命令 ...
- 10 Spring框架--基于注解和xml的配置的应用案例
1.项目结构 2.基于xml配置的项目 <1>账户的业务层接口及其实现类 IAccountService.java package lucky.service; import lucky. ...
- hdu 2841 题解
题目 题意:就是问在一个$ n* m $的矩阵中站在 $ (0,0) $ 能看到几个整数点. 很明显如果有两个平行向量 $ \vec{a}=(x_1,y_1) $ ,$ \vec{b}=(x_2,y_ ...
- css中常用的选择器和选择器优先级
css常用的选择器:类选择器,id选择器,元素选择器,伪类选择器,伪元素选择器,属性选择器. 选择器的优先级由四个部分组成:0,0,0,0 一个选择器的具体优先级如下规则确定: ID选择器 加 0,1 ...
- 彩蛋(Python)-------都是细节
• python所有的符号全部是英文的符号• 数字和bool不支持迭代,列表支持• 列表有序,可变,支持索引• 元组有序,不可变,支持索引• 字典是无序的,可变的数据类型,不支持索引.• 集合,无值的 ...