oracle 小结

逻辑组件

表空间、段、区、块、架构对象

物理组件

.dbf 存数据库表的文件
.ctl    控制文件,数据库的位置,空间等
.log    日志文件    记录对数据库的更改

建表的步骤(需要登录管理员账号(sys/system))

创建表空间,指定表空间的大小,是否自动增长大小等操作
创建用户,并指定默认的表空间
授权操作
    授权connect连接,使能够利用该用户登录
    授权DBA(相当于超级管理员权限,不建议授权),resource(可以对表进行增删改查)
    等等。。。。。。

数据完整性

  1. 数据完整性
     实体完整性要求表中的每一行数据都反映不同的实体,不能存在相同的数据行。通过主键约束,唯一约束来实现实体完整性。

      (1)主键约束:

      表中的一列或者纪略组合的值能用来唯一的表示表中的每一行,这样的一列或者多列的组合叫做表的主键。

      主键自带唯一性,并且不能为空,一个表只能有一个主键,主键确保了表中数据行的唯一,同一张表中,可以使用多个列共同作为主键。在选择主键时,应遵循两个原则,最少性和稳定性。

      (2)唯一约束:

      保证数据行中的某一列的数据是唯一的,不重复的。这样可以添加唯一约束。

      唯一约束和主键的区别:

主键不能为空,唯一可以为空,但只允许有一个空值。
主键一张表中只有一个,而唯一可以有多个。
主键可以由多个表来组成,唯一只能是单列。
主键可以作为其他表的外键,唯一不可以。
  

  1. 域完整性:

      域完整性是指给定列的输入的有效性。通过数据类型、检查约束、输入格式、外键约束、默认值、非空约束等方法来实现。

  2. 引用完整性:

      引用完整性是指为两个表中存在一定的联系,从而保证数据的完整性。例如:班级和学生,学生所在班级一定是在班级表中所存在的,不然就会出现不准确。引用完整性我们可以通过外键约束来实现。

  3. 自定义完整性:

      用户自己定义约束规则。主要通过存储过程和触发器对象来实现。

三大范式

第一范式:列具有原子性,不能再拆分
第二范式:一般用户联合主键
第三范式:主键不能传递依赖

表之间的联系

1对1 :把常用的放到一张表,不常用的放另一张表,主键一样
1对多:1的主键是多的外键
多对多:注意拆开成两个一对多,引入中间表

子查询

子查询是一个select语句,可以在外部select语句的from,where,having等子句中使用,另外在update和delete语句中也可以使用子查询。

在子查询汇总可以使用两种比较操作符:单行操作符和多行操作符
1. 单行操作符(返回单行或者零行的记录)  例如 = , > , >= , < , <= , <>不等于 ,!= 
2. 多行操作符  
    all,
    any,
    in,针对于单个字段  eg:select * from stu where sno in (select。。。。。。) 单个字段sno
    exists
可以把子查询分为两种类型:
    单行子查询和多行子查询
1. 单行子查询: 向外部的sql语句只返回一行数据,或者不返回任何内容
               单行子查询可以放到select语句的where子句和having子句中
2. 多行子查询: 向外部的sql语句返回多行。要处理返回多行记录的子查询,外部查询需要使用多行操作符。

分组统计函数(聚合函数)

COUNT(*) 表示计算所有的行的行数,包括完全相同的行和空行;
COUNT(column) 表示计算列中存在值的行的数目,不包括该列为空的行;
count(0) 第一列 count(1) 第二列
COUNT(DISTINCT column) 类似于COUNT(column),但在计算时不包括重复值
AVG():求出平均值;
SUM():求和;
MAX():求出最大值;
MIN():求出最小值;

分组子句

group by:分组查询(查询搜索的字段要么是分组的条件字段要么是聚合函数),注意,只要from前面有聚合函数,如果还有其他的搜索字段,就必须利用其他所有字段进行分组;

    group by分组后,select时只能选择进行分组的字段。例如要显示出sno和sname,需要对它们进行分组

having :having应在 GROUP BY 子句后面指定。 HAVING 子句中,只能出现GROUP BY 子句中出现的列。
        对分组的条件进一步进行筛选

内连接(等值连接)(共有的数据,交集)

直接用where的子句判断关联的字段相等(隐式内连)
INNER JOIN(显示内连)

外连接

左(外)连接:LEFT OUTER JOIN…ON;把右表中不存在,而左表有的数据列出来,(查得更多的是左边)
右(外)连接:RIGHT OUTER JOIN…ON;
(oracle简单的写法:哪张的表补空,就在哪张表的条件后面加上 (+) 的符号)
全(外)连接:FULL OUTER JOIN…ON;-->把两张表中没有的数据都显示

事务的特性

原子性(atomic),
一致性(consistent)数据库的数据要有一致性,
隔离性(isolated)两个用户操作的数据不应该受到彼此的影响,用乐观锁,
持久性(durable),不管事务的成功与否都应该被保存下来

事务的实现(操作)

1. jdbc事务:commit或者rollback (重点关注)
2. oracle事务操作:
    set transaction 设置事务的属性
    commit 提交事务
    savepoint 设置保存点
    rollback 回滚事务
    rollback to savepoint 回滚至保存点 

jdbc连接数据库的步骤(以oracle为例)

1. 导入ojdbc*.jar包(oracle)
2. 注册JDBC驱动程序,加载数据库驱动,可以将它放在静态代码块中
    static{ Class.forName("oracle.jdbc.OracleDriver");
    }
3. 数据库URL配置
    指定url———》jdbc:oracle:thin:@地址:端口号:实例名
        jdbc:oracle:thin:@localhost:1521:orcl
    指定user———》用户名称
    指定password———》对应的密码
4. 利用数据库URL配置,创建连接对象(调用DriverManager对象的getConnection()方法来建立实际的数据库连接,这里用的是getConnection(String url, String user, String password)),可以作为一个静态方法,供多处调用
    Connection conn = DriverManager.getConnection(url, user, password);
5. 利用statement,或者preparestatement 两个的executeQuery(),executeUpdate()方法处理数据
6. 释放连接
    需要释放的有ResultSet res, Statement st, Connection conn,可以作为一个静态方法,供多处调用

* 总结jdbc:
    可以将注册JDBC驱动程序,加载数据库驱动,数据库URL配置,创建连接对象的方法,释放连接的方法放在一个类中,就可以多处调用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值