Java小白的数据库爱情(四)Oracle DDL、DML使用

rowid 、rownum

rowid 和 rownum都是伪列

rowid

rowid 不是表的某一个字段,相当于对象的地址,根据地址转换的,不是真实的地址,可以用来区分数据的唯一

是在 插入到数据库表中时候已经确定rowid

rowid 和 rownum都是伪列 --rowid 不是表的某一个字段,相当于对象的地址,根据地址转换的,不是真实的地址,可以用来区分数据的唯一

是在 插入到数据库表中时候已经确定rowid

rowid作用: 针对于一些没有主键,唯一标识的表,区分表中重复数据的唯一,去重

rownum

结果集的序号

数字编号,从1开始,每次+1,有规律可寻,可以根据rownum的值做判定

想要使用rownum进行判断,需要对一个已经确定的结果集的rownum进行判定

用途:分页

select empno,ename,sal,comm,rownum from emp;  --数据源  一个结果集  已经确定了rownum
select * from (select empno,ename,sal,comm,rownum n from emp) where n<=6 and n>=4;

如果存在排序,rownum需要注意-

一般规律为: 根据主键字段做排序,先排序后rownum

​ 根据其他字段做排序,先确定rownum再排序

解决方案: 再嵌套select

视图

视图:->数据源

建立在表与结果集之间的视图,是一个虚拟表

作用: 封装sql 提高安全性 简化sql

逻辑视图 : 操作的还是原表中的数据,封装sql

权限: 创建视图的权限
先登录sys用户,驶入命令授权,结束后切换SCOTT用户使用
授权: grant dba to SCOTT;

回收: revoke dba from SCOTT;

创建视图 :create or replace view 视图名字 as select * from … where … [with read only];

create or replace view vw_hehe as select * from dept where deptno !=10 with read only;

删除视图 :drop view 视图名字;

drop view vw_hehe;

索引

索引
提高查询效率
相当于字典的目录
大量数据的查询,通过使用索引进行查询,效率高
但是必须是查询,大数据
索引是数据库的对象之一,需要维护,如果经常做增删就需要更新索引,效率降低
索引是透明的,一个字段是否 添加索引不影响使用
添加索引: 为某张表的某个字段添加索引
Oracle会自动为主键添加索引

添加索引:create index 索引名 on表名 (字段列表)
删除索引:drop index 索引名

DDL

数据定义语言

表的创建

create table sxt_user(userid number(3),username varchar2(30),  --默认30个字节    (4 char)password varchar2(6 char), --不超过6个字符gender char(1 char),regdate date
);

删除表:drop table 表名

加入注释

为表加注释:comment on table 表名 is ’ ’

为字段加注释:comment on column 表名.字段 is ’ ‘

comment on table sxt_student is '尚学堂学生表';
comment on column sxt_student.sid is '学生编号';
comment on column sxt_student.sname is '学生名';

删除 :(先删除从表 再删除主表 ;同时删除约束)
drop table 表名 cascade constraints;

创建表的同时添加约束 (定义字段后直接添加约束,没有约束名->提示无法显示约束名字,不便于维护,但是简单)

主键约束 (唯一+非空) :primary key

非空:not null,

唯一:unique,

检查:check

约束

创建表的同时添加约束 指定约束名
–1) 在字段后面指定约束名字添加约束 2)在表结构结束之前为字段添加约束

 constraint haha check(phonenum is not null)

在表结构结束之后追加约束

alter table sxt_student add constraint ck_student_gender check(sgender ='男' or sgender = '女');

约束的禁用与启用

ALTER TABLE tb_user disable constraint nn_user_name;
ALTER TABLE tb_user enable constraint nn_user_name;

约束不建议修改,建议删除添加

外键

–外键约束 关联班级表的主键

   -- 创建表时添加外键cid number(4) , constraints fk_stu_cid  references sxt_class(cid)--表结束添加外键constraints fk_stu_cid foreign key(cid) references sxt_class(cid) on delete cascade

主外键关系下删除表
删除从表,直接删除,没有影响
删除主表 : 默认先删除 从表在删除主表 ,否则就级联删除主表+主外键约束

主外键关系下,删除数据:
从表数据可以直接删除
删除主表数据:
–没有被从表引用的数据,可以直接删除
–删除主表中已经被从表引用的数据: 3中解决方案
–先删除引用了当前主表数据的那些从表数据,然后再删除当前主表数据 默认
–删除主表数据的同时,删除从表中引用了当前主表数据的那些从表数据 on delete cascade
–删除主表数据的同时,从表中,引用了当前主表数据的那些从表数据的外键字段设置为null

事务

定义:单个的逻辑单位,执行一组数据的操作,以事务为单位,在一个事务声明周期之间的一组数据,要么同时操作成功,要么同时失败

作用:保证数据的安全性

事务的开启:执行增删改操作时自动开启

事务的结束:1、提交 : commit 执行DDL DCL 正常关闭客户端 自动提交

​ 2、回滚:rollback , 意外推出(断电)

特点:

​ 原子性:

​ 一致性:

​ 隔离性:

​ 持久性:

Oracle 默认的隔离级别是 read committed

脏读:事务 T1 更新了一行数据,还没有提交所做的修 改,T2 读取更新后的数据,T1回滚,T2 读取的数据无 效,这种数据称为脏读数据。

幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结 果集,T2 插入一条新纪录,恰好也是 T1 的 WHERE 条 件,T1 再次查询,结果集中又看到 T2 的记录,新纪录 就叫做幻读。

DML

DDL: 数据定义语言 表创建create 表修改alter 表删除drop
DML: 数据控制语言 增删改数据 insert update delete select

插入 INSERT :
insert into 表名 values(和表结构顺序和个数和类型一致的数据可以手写也可以从别的表中获取的);
insert into 表名(指定列名) values(和指定的列个数、顺序、类型一致的列数据)

insert into dept values(80,NULL,'');
insert into dept(deptno) values(90);

insert into 表(指定列) select 查询列 from 源表 where 过滤数据; insert into 表(指定列) values(值列表);
insert into 表名 select 查询列 from 源表 where 过滤数据;
insert into 表名 values(值列表 );

修改 update:

update 表名 set 字段=值 [,…] where 过滤行记录;

update dept set dname='haha',loc='shanghai' where deptno = 70;

删除 delete :

delete [from] 表名 where 过滤行记录

截断:

delete 与 数据截断的区别
共同点: 都能作为删除数据
不同点: delete执行会开启事务,truncate不会开启事务
–数据截断删除主表中数据,会从表结构上检查 ,如果有被引用不允许使用截断,delete可以,三种情况

ame=‘haha’,loc=‘shanghai’ where deptno = 70;


**删除 delete :**delete [from] 表名 where 过滤行记录 **截断:**delete 与 数据截断的区别
共同点: 都能作为删除数据
不同点: delete执行会开启事务,truncate不会开启事务--数据截断删除主表中数据,会从表结构上检查 ,如果有被引用不允许使用截断,delete可以,三种情况truncate 只能删除一张表中的所有数据

Java小白的数据库爱情(四)Oracle DDL、DML使用相关推荐

  1. Java小白的数据库爱情(二)Oracle 入门

    Java小白的数据库爱情(二)Oracle 入门 概述 随着互联网时代的到来,需要持久化数据呈现井喷式发 展,常规的 io 操作虽然可以满足持久化的需求,但是, 对于持久化的目的,对数据的操纵,显然力 ...

  2. Java小白修炼手册--第四阶段--JDBC(Java Database Connectivity : Java访问数据库的解决方案 )

    目录 JDBC原理 JDBC标准 JDBC是什么 使用JDBC优点 JDBC接 口及数据库厂商实现 ​JDBC工作原理 Driver ( 驱动程序)接口及驱动类加载 ​Connection( 连接,关 ...

  3. 关系型数据库语言分类(DDL,DML,DCL)

    关系数据库的语言分三类,它们是(数据描述语言DDL).(数据操纵语言DML)和(数据控制语言DCL),而SQL是(集DDL.DML.DCL为一体)的标准关系数据库语言. DDL is Data Def ...

  4. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

  5. java连接本地oracle数据库_JAVA连接oracle数据库的三种方式

    1 传统方式连接数据库(效率较低) 此方法连接数据库,其性能.可靠性与稳定性随着用户访问量的增加逐渐下降,跟踪测试表明,其根本问题与Connection对象的创建有关.不过在这里还是讲一下此方法的实现 ...

  6. oracle时间类型转化成java对象_Oracle数据库date类型与Java中Date的联系与转化

    以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助. new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当 ...

  7. Jsp之使用纯Java数据库驱动程序(sqlserver,Oracle数据库为例)

    1.首先,先下载sqlserver数据库驱动程序和Oracle数据库驱动程序,下面我将用到sqljdbc.jar和ojdbc6.jar,这里的sqljdbc.jar是属于SQL Server 2005 ...

  8. Java案例:利用JDBC连接Oracle数据库

    Java案例:利用JDBC连接Oracle数据库 一.准备工作 1.启动SQL Developer,设置java.exe路径 2.在Oracle SQL Developer里,新建数据库连接 连接名: ...

  9. Oracle数据库的四种启动方式

    Oracle数据库的四种启动方式 1.startup nomount 非安装启动:这种方式启动下可执行:重建控制文件.重建数据库 启动instance,即启动SGA和后台进程,这种启动只需要init. ...

最新文章

  1. Java设计模式:观察者模式
  2. Ajax跨域:Jsonp原理解析
  3. 火车站售票系统java_乌苏啤酒的家乡——全新乌苏火车站正式上线!
  4. 神经网络 | BP神经网络介绍(附源代码:BP神经网络-异或问题)
  5. 转:有关常量的知识点
  6. 案例一(haproxy+keepalived高可用负载均衡系统)【转】
  7. Linux x86架构下ACPI PNP Hardware ID的识别机制
  8. Hbase与Hadoop版本对应
  9. 免费备案查询API,支持通过主办单位名称查询备案信息
  10. VB 获取文件名后缀
  11. YS13-3荧光管时钟设计
  12. ORA-01790: expression must have same datatype as corresponding expression
  13. Excel如何隔行插入图片?
  14. tp5shop tp5商城 WSTMart B2B2C开源商城系统
  15. ADB interface 驱动下载,以及使用,Because an app is obscuring a permission request settings can’t verify your
  16. VMware安装centos虚拟机
  17. java将表情字符串转表情符号_使用java将字符串中的表情符号替换为字符串
  18. stm32的点亮led的基础知识
  19. Linux 2.6内核配置说明(7----Bus options (PCI, PCMCIA, EISA, MCA, ISA)总线选项)
  20. 【Go Web学习笔记】第二章 HTTP的客户端实现

热门文章

  1. js判断数据类型常用的四种方法
  2. 1.1 Tekton学习笔记之基本概念
  3. 关于Json解析(org.json.JSONObject)
  4. fatal error LNK1169: one or more multiply defined symbols found解决方法
  5. SQL处理库存与销售,先进先出原则
  6. JDBC是什么、怎么使用。
  7. 记录文件服务器的操作日志
  8. php 可以将图片分类吗,PHP图片处理教程.ppt
  9. python真的如此好吗?
  10. like not like