Oracle数据库操作---入门(一)
由于工作原因,近期可能会开始多复习一些数据库相关的知识了,想深入了解的,也可以一起复习.学习~
前期先巩固一下基础操作,后期会一点点的加深向运维方向深入。开篇主要介绍一些数据库理论知识,不感兴趣的可以向后翻阅;如果你是开发人员可以简单看看基础就够了。废话不多说,开始我们的学习吧!
数据库版本Oracle 11g
Oracle 11g提供了多种数据库管理工具,SQL*PLUS、OEM(企业管理器)、DCA(数据库配置助手),本次复习对数据库操作使用的是SQL*PLUS,其实用什么无所谓,主要是学会使用就好了,继续吧~
要使用好Oracle,我觉得应该先了解一下它:
一》 开篇--Oracle介绍
Oracle官网链接:https://www.oracle.com/index.html
①Oracle是著名的Oracle(甲骨文)公司的数据库产品,Oracle属于关系型数据库的一种,
常见的关系型数据库还包括MySQL、SQL Server、DB2;
非关系型数据库:NoSQL、MangoDB、Memcache、Redis等等
②那么什么是关系型数据库呢?就是建立在关系模型基础上的数据库。简单理解就是将现实中各个实体(事物)及其之间的各种联系,通过数学概念和方法进行处理,以关系模型进行展现。
③数据库的E-R模型,说到模型就要提到关系型数据库设计了,设计之初首先要建立逻辑模型。
关系型数据库的逻辑模型可以通过实体(事物)和实体关系组成的图形来表示,也就是常用的E-R图,E-R图表示的逻辑模型就是E-R模型。标准的E-R模型主要由三部分组成:实体、属性和联系。而这三部分也正是我们在项目开发中,数据库设计阶段需要深入研究和合理设计数据表的重要三部分。
想要朝着项目经理方向发展的小伙伴,对于项目中数据库的设计还是需要深一步的了解的,这方面还是要通过实践去多加锻炼的。建议:自己模拟一些场景进行设计练习
二》设计范式
关系型数据库的设计范式有第一范式、第二范式、……第六范式、BCNF范式等等,通常的数据库满足前三种范式就足够了。任何关系型数据库都应该满足第一范式,不满足的数据库,则不是关系型数据库。在关系型数据库中,一般称一行数据为一个元组,而列表示的是属性,第一范式是第二、第三范式的基础;;
第一范式:数据库表的每一列都是不可分割的原子数据项,也就是说,实体中的某个属性有多个值时,必须拆分为不同的属性;
比如:班级:计算机系3班,这种就需要再进行数据拆分;
第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
比如:员工工资表,以员工编号、岗位为复合主键,属性还有姓名、年龄、学历、基本工资、绩效工资、奖金;
这种情况下,员工编号决定的是姓名、年龄和学历,而基本工资是由岗位决定的,不符合第二范式的要求。
一般设计表时,可以设计成三张表:员工管理表、岗位工资表、员工工资表,这样就可以了;
第三范式:任何非主属性不依赖于其它非主属性(在第二范式基础上消除传递依赖)
传递依赖就是如果存在关键字段A决定非关键字段B,而非关键字段B决定非关键字段C,则称非关键字段C传递依赖于关键字段A。
比如:员工编号→员工姓名、年龄、部门编号、部门经理;
这种情况下,员工编号决定部门编号,而部门编号决定部门经理;不符合第三范式
处理方式就是拆分表格:员工信息表和部门信息表;
一般我们使用的大部分都只是满足前三种范式,后几种有感兴趣的可以自行查阅,这里不再细说;我们进行数据库设计时,都希望能够消除数据冗余、更新异常、插入异常和删除异常,那就需要我们按照“规范化”的原则去存储数据。
三》数据库基本操作
Oralce操作类型中一共分为DDL(数据定义语言)、DML(数据操纵语言)、TCL(事务控制语言)、DQL(数据查询语言)、DCL(数据控制语言)
① DDL给我的个人感觉是有全局眼光的领导层语言;为啥这样形容呢?它主要用于建立、修改、删除数据库对象,面向的对象不是条条的数据,而是整个数据库或者数据表。在数据库中删表删库的操作是属于DDL的,作为程序员的你值得好好关注,不为了去实施这些操作,但多了解一些总没有坏处。
Create: 创建表或其他对象结构
Alter:修改表或其它对象结构
Drop:删除表或者其他对象结构
Truncate:删除表数据,保留表结构
② DML追究完美做到极致的技术人员;用于改变数据表中的每条数据;他和事务是好兄弟,一般执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中
Insert :将数据插入到数据表中
Update:更新数据表中已经存在的数据
Delete:删除数据表中的数据
③TCL 用于维护数据一致性的语句(事务后面会详细谈一下,这个是数据库比较重要的部分)
Commit:提交,确认已经进行的数据改变
RollBack:回滚,取消已经进行的数据改变
SavePoint:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
④DQL 用于查询数据 Select (开发最常用的)
⑤DCL 用于执行权限的授予和收回操作 (DBA的日常工作,开发者用不到)
GRANT:授予,用于给用户或角色授予权限
Revoke:用于收回用户或角色已有的权限
Create User 创建用户
先到这里吧!下一篇开始SQL语句的复习~
Oracle数据库操作---入门(一)的更多相关文章
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- Oracle数据库基础入门《一》Oracle服务器的构成
Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...
- C语言与数据库操作入门
https://blog.csdn.net/flyingqd/article/details/78763652 C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1 ...
- C语言与数据库操作入门(Win版)
C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1387 数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的 ...
- Oracle数据库从入门到精通 单行函数问题
视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 Oracle数据库从入门到精通-单行函数 在数据库中,为了方便用户的数据开发,往往会提供一系列的支持函数 ...
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
基于OCILIB的oracle数据库操作总结 1. 类图 2. 基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
- (转)C# Oracle数据库操作类
原文地址:http://www.cnblogs.com/haibing0107/p/6143922.html using System;using System.Data;using System.C ...
- C# Oracle数据库操作类
using System; using System.Data; using System.Collections.Generic; using System.Configuration; using ...
随机推荐
- .net core 使用 AspectCore 实现简易的AopCache。
(第一次写博客,好紧张!!!) 源码地址:传送门 项目中有很多缓存的需求,能自己定义缓存key和时间,能根据key去清理缓存. 网上找了一圈,有很多基于aop的缓存组件,但是都不满足我的需求.故造了个 ...
- C# 动态创建SQL数据库(一)
最近在做项目中要求能够要求动态添加数据库并建表.具体思路如下 1 提供数据名,根据数据库创建数据库 2 自定数据库与数据表,提供数据表自定与数据类型创建表 创建sqlhelper类,用于数据库操作 u ...
- Asp.Net MVC记住用户登录信息 下次登录无需输入密码
有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo ...
- 「PKUSC2018」真实排名(组合)
一道不错的组合数问题! 分两类讨论: 1.\(a_i\) 没有翻倍,那些 \(\geq a_i\) 和 \(a_j\times 2<a_i\) 的数就没有影响了.设 \(kth\) 为 \(a_ ...
- JavaScript基础(3)-JS中的面向对象、定时器、BOM、位置信息
一.创建对象的几种常用方式. 1.使用Object或对象字面量创建对象: a.使用Object()内置的构造函数来创建对象,例如: var student = new Object(); // 创建一 ...
- GC日志时间分析
在GC日志里,一条完整的GC日志记录最后,会带有本次GC所花费的时间,如下面这一条新生代GC: [GC [DefNew: 3298K->149K(5504K), secs] [Times: us ...
- Shell - 简明Shell入门12 - 定制输出(ColorOutput)
示例脚本及注释 #!/bin/bash echo -e "\033[32m" # 设置输出属性,绿色字体 echo "This is a test!" echo ...
- Python使用动态的变量名
当我们在使用Python处理一些重复性很高的事情时,有时候需要很多的变量来存放一些暂行性的数据,由于这些变量的数量很大,所以这使我们就会想到能不能使用循环来像生成数据值一样生成变量名呢,当然是可以的 ...
- Windows+MyEclipse+MySQL【连接数据库报错caching_sha2_password】
在MyEclipse中打开[窗口]->[显示视图]-> MyEclipse Database Browser -> (图片里倒三角)New.... ①Driver template: ...
- (转)CentOS一键安装Nginx脚本
原文:https://www.xiaoz.me/archives/10301 https://blog.slogra.com/post-676.html-----centos7一键安装nginx脚本