在前两章,我们学习了SQL语言中基本的一些查询语句,也就是数据库查询语言DQL,今天我们要介绍的数据库操作语言DML

数据库中,我们除了查询之外,最主要的就是日常的增、删、改、查了。

数据库操作语言 DML
插入
删除
修改

1、--创建一张表

CREATE TABLE BJSXT AS SELECT * FROM EMP;(按照EMP表达的格式创建一张名为BJSXT的表)

之后我们用SELECT * FROM BJSXT;可以查询到我们建立的表

2、插入--必须完全参照表的结构顺序
INSERT INTO BJSXT VALUES('裴老师','teacher',666,333);
INSERT INTO BJSXT VALUES('teacher','胡老师',666,333);

--错误的方式
INSERT INTO BJSXT VALUES('teacher','胡老师',666,333,10);
INSERT INTO BJSXT VALUES('teacher','胡老师',666);

--自定义插入顺序
INSERT INTO BONUS(ENAME,SAL) VALUES('闫老师',777);

3--删除
DELETE FROM BONUS;
DELETE FROM BONUS WHERE SAL>666;
DELETE FROM EMP WHERE ENAME LIKE '%A%' AND SAL >1500 AND DEPTNO = 10;

4--修改
UPDATE BONUS SET SAL = 8888 WHERE ENAME='裴老师';
UPDATE BONUS SET SAL = 8888,COMM = 888 WHERE ENAME='裴老师';

2--数据库的事务

--事务已经被开启

一旦对数据库的表进行操作,即代表事务的开始
DELETE FROM BJSXT WHERE EMPNO = 7788;
DELETE FROM BJSXT WHERE EMPNO = 7781;
DELETE FROM BJSXT WHERE EMPNO = 7782;
INSERT INTO
UPDATE
DELETE FROM BJSXT WHERE EMPNO = 7783;
DELETE FROM BJSXT WHERE EMPNO = 7784;
DELETE FROM BJSXT WHERE EMPNO = 7785;
DELETE FROM BJSXT WHERE EMPNO = 7786;

--结束事务
/*
手动结束
COMMIT;
提交本次事务操作
ROLLBACK;
回滚本次事务操作
自动结束
当用户执行DDL语句的时候(创建表,删除表,修改表结构)
事务自动提交
用户正常退出
事务自动提交
用户非正常退出
事务回滚
系统崩溃或断电时
事务自动回滚
事务的四大特性
ACID原则
原子性
事务中的操作要么全部执行,要么全部回滚
一致性
事务的执行前后,数据库处于一个一致的状态
隔离性
事务的执行不受其他事务的干扰
持久性
事务在提交之后,就会进入一个新的状态,所有的数据不能被改变
事务的隔离级别
读未提交--给数据加锁
读已提交o--解决脏读
可重复读--解决虚读,和幻读的删除
可序列化o--解决幻读的新增

更新丢失
是因为没有锁
脏读
读取别人未提交的数据
虚读
第一个事务读取的数据,另外一个事务可以修改
幻读
第一个事务中读取的数据多了第二个事务插入的数据

死锁ORA-00060
线程1
DELETE FROM BJSXT WHERE EMPNO = 7499;
线程2
DELETE FROM BJSXT WHERE EMPNO = 7521;
线程1
DELETE FROM BJSXT WHERE EMPNO = 7521;
线程2
DELETE FROM BJSXT WHERE EMPNO = 7499;
*/

/*
范式
第一范式
每一列都是不可分割的原子数据项
第二范式(2NF)
要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
每一行数据都要有主键,主键是唯一的,
第三范式
任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]
所有的属性都要完全依赖于主键
表与表之间的关系
1:1
随意持有对方主键
拥有相同主键
1:N
外键由多方进行维护
N:N
建立中间表,在中间表维护

/*
DDL:数据库定义语言

*/

SELECT TABLE_NAME FROM USER_TABLES;

设计要求:
建立一张用来存储学生信息的表,
表中的字段包含了学生的学号、姓名、年龄、入学日期、年级、班级、email等信息,
并且为grade指定了默认值为1,
如果在插入数据时不指定grade得值,就代表是一年级的学生
--如何创建表
CREATE TABLE STUDENT(
SNO VARCHAR2(12),
NAME VARCHAR2(12),
AGE NUMBER(3),
SCHOOLDATE DATE,
GRADE NUMBER(2) DEFAULT 1,
CLAZZ NUMBER(2),
EMAIL VARCHAR2(100)
);

--刚创建的表示一个空表,需要人为的插入数据
INSERT INTO STUDENT VALUES('BJSXT2016','张三丰',80,SYSDATE,NULL,10,'ZSF@BJSXT.COM');
INSERT INTO STUDENT(SNO,NAME) VALUES('BJSXT2015','张无忌');

--新增一个列
ALTER TABLE STUDENT ADD BIRTHDAY DATE;
--删除一个列
ALTER TABLE STUDENT DROP COLUMN AGE;
--修改一个列
ALTER TABLE STUDENT MODIFY SNO VARCHAR2(40);
--修改表名称
RENAME STUDENT TO STU;
--删除表
DROP TABLE STU;

Oracle数据库3的更多相关文章

  1. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  2. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  3. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  4. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  5. Oracle数据库升级(10.2.0.4->11.2.0.4)

    环境: RHEL5.4 + Oracle 10.2.0.4 目的: 在本机将数据库升级到11.2.0.4 之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzha ...

  6. 混合框架中Oracle数据库的还原处理操作

    在较早期的随笔<Oracle如何实现创建数据库.备份数据库及数据导出导入的一条龙操作>粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还 ...

  7. Oracle数据库的链接数目超标

    测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...

  8. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  9. Oracle数据库11g各版本介绍及功能比较

    .标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...

  10. Oracle数据库,数据的增、删、改、查

    oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...

随机推荐

  1. EFS解密----未重装系统

    一种方法.(手动删除私钥测试通过) 利用软件advanced efs data recovery 二种方法. 前提:在系统未重装或私钥未丢失.两个软件: PsExec和  IceSword.前者是国外 ...

  2. 简单SSM配置详解

    SSM:spring+springMVC+Mybatis 学习网友的http://www.cnblogs.com/invban/p/5133257.html,并对其进行了详细的解说. 源码下载:htt ...

  3. jquery总结05-常用事件04-委托事件

    委托事件on 多个事件绑定同一个函数 $("#elem").on("mouseover mouseout",function(){ });通过空格分离,传递不同 ...

  4. 1074, "Column length too big for column 'err_solution' (max = 21845); use BLOB or TEXT instead"

    一个注意点,就是sqlalchemy 使用create_all()建表的时候,要在 create_all()所在页面import那些表的model sqlalchemy.exc.Operational ...

  5. Deep Learning 2_深度学习UFLDL教程:矢量化编程(斯坦福大学深度学习教程)

    1前言 本节主要是让人用矢量化编程代替效率比较低的for循环. 在前一节的Sparse Autoencoder练习中已经实现了矢量化编程,所以与前一节的区别只在于本节训练集是用MINIST数据集,而上 ...

  6. .net Web开发学习日志 —C/S和B/S结构区别

    查看到<C/S和B/S结构区别整理> B/S结构与C/S结构都是有各自的优缺点: 前者无需安装,只要有浏览器即可,随时随地查询相关的业务,业务扩展强,维护强,共享强.在跨浏览器较难,响应速 ...

  7. Bitmap旋转方法

    最近在做一个ORC图片解析的功能,要求解析出数字 但是发现他解析只能解析横着的图片,然后我拍照的时候拍的是竖直照片,当然你也可以去旋转照相机的屏幕 但是我这里为了方便选择的是竖直拍出来 然后,旋转下咯 ...

  8. WIN7 java7 环境变量配置

    1 首先要搞清楚,java可能安装了两个部分,一个叫JDK,一个叫jre.其中jre若已经安装了,那么在安装JDK的时候,就不要放在默认的C:\Program File\java\XXX目录.最好另起 ...

  9. C++中 接口的定义 COM

    首先定义一个虚基类的接口,其中包含虚函数AddRef Release QueryInterface,(MFC 类IUnKnown unknwn.h)分别是增加减去引用计数和查询接口然后定义一个实现类, ...

  10. java selenium 题目二 如何处理Table

    如果操作Table.  例如我有一个table.  table 的列的顺序是会变化的, 行数也是会变化的. 问题: 如果通过名字获取到年龄 HTML 源代码 <html> <body ...