Oracle数据库(一)概述、基础与简单操作

数据库:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

数据库分类:

  关系型数据库

  非关系型数据库

数据库

类型

特性

优点

缺点

关系型数据库

SQLite、Oracle、mysql

1、关系型数据库,是指采用了关系模型来组织数据的数据库;

2、关系型数据库的最大特点就是事务的一致性;

3、简单来说,关系模型指的就是二维表格模型,

而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;

2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;

3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;

4、支持SQL,可用于复杂的查询。

1、为了维护一致性所付出的巨大代价就是其读写性能比较差;

2、固定的表结构;

3、高并发读写需求;

4、海量数据的高效率读写;

非关系型数据库

MongoDb、redis、HBase

1、使用键值对存储数据;

2、分布式;

3、一般不支持ACID特性;

4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

1、无需经过sql层的解析,读写性能很高;

2、基于键值对,数据没有耦合性,容易扩展;

3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。

1、不提供sql支持,学习和使用成本较高;

2、无事务处理,附加功能bi和报表等支持也不好;

Oracle的常见版本

  Oracle8、Oracle8i,i表示开始支持internet

  Oracle9i,8的稳定版

  Oracle10g,g表示Oracle开始基于网格计算

  Oracle11g,Oracle10g的稳定版

  Oracle12c,c表示云计算

Oracle用户

  超级管理员 sys

  次级管理员 system

  普通用户 scott

  大数据用户 (实例方案数据库) sh

Oracle基础

表空间:

  Oracle数据库对数据的管理是基于表空间的概念来的, 各种数据的以及存储数据的优化, 实际上也是通过优化表空间来实现的

表空间分类:

永久表空间

  用来存放表的数据, 视图, 存储过程或者函数等需要永久保存的对象的空间

临时表空间

  用来存放查询结果等临时数据的空间

UNDO表空间

用于存放回滚数据, 已经删除数据等对象的表空间

Oracle基础数据类型

  字符型:字符串

    char(最大2000)--->固定长度,

    nchar(最大1000, 支持unicode)--->固定长度

    varchar2(最大4000),

    nvarchar2(最大2000, 支持unicode)--->可变长度

    oracle中字符串的表示使用单引号:'字符串'

  数字类型:包括整数和小数

    number(有效数字, 总位数)---最大11;

    number

    number(8)

    number(5,2)---总位数5位, 小数点后2位

    ?float--->存储二进制类型的数据, 1-126位0.30103

  日期类型:时间

    date:取值范围:公元前4712年1月1号---公元9999年12月31号, 可以直接精确到秒

    timestamp(时间戳: 更精确的数据, 可以精确到毫秒)

    其它类型:大文本, 文件

    blob: 最大4g, 以二进制的形式来存放数据

    clob: 最大4g, 以字符串的形式存放

oracle运算符和表达式

  表达式类似于java, 可以是常量, 可以是变量, 也可以是表中的一个字段

  算术运算符(+ - * / 注意这个地方没有取余的运算符, 取余使用mod函数)

  比较运算符(> >= < <= = <>/!=)

  逻辑运算符(and or not)

  字符串连接符(||)

sql语句四种类型:

  数据定义语言(ddl)、

  数据操作语言(dml)、

  数据控制语言(dcl)

  事务控制语言(tcl)。

data definition language(ddl)

ddl使我们有能力创建或删除表格。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
create database - 创建新数据库
alter database - 修改数据库
create table - 创建新表
alter table - 变更(改变)数据库表
drop table - 删除表
create index - 创建索引(搜索键)
drop index - 删除索引

data manipulation language(dml)

供用户实现对数据的追加、删除、更新、查询等操作。
select - 从数据库表中获取数据
update - 更新数据库表中的数据
delete - 从数据库表中删除数据
insert into - 向数据库表中插入数据

data control language(dcl)

grant - 授权
revoke - 撤销授权
deny - 拒绝授权

transaction control language(tcl)

savepoint - 设置保存点
rollback - 回滚
commit - 提交

oracle数据库约束:

定义规则
定义要输入的这个值是一个什么样的值, 或者是哪个范围内的值

作用: 确保完整性, 确保精确性

  1, 非空约束
记录一条信息的时候如果用户名和密码没有被记录, 那么这条记录是没有实际意义的, 创建表的时候默认是可以为空的
  2, 主键约束
确保表中每一行的数据的唯一性
非空, 唯一
一个表中只能有一个主键, 但是这个主键可以由多个字段(联合主键, 复合主键)来构成
可以在建表的时候写上设置为主键的关键字, primary key
或者写个表前约束设置
constraint 主键名称 primary key(字段名1, 字段名2)

  3, 外键约束
唯一一个涉及两个表中的字段约束
插入数据的时候, 从表中的关联关系的字段, 要么是一个主表主键的关联, 要么是一个空值

  4, 唯一约束(unique)
保证字段值的唯一性
与主键的区别: 唯一约束可以为空值, 唯一约束可以有多个
使用语句创建唯一约束只能写多条语句, 类似于insert into
  5, 检查约束
作用: 使表当中的值更具有实际意义
比如定义一个值的范围
checks(sno>0 and sno<1000)

常用关键字

insert into---插入数据
delete---删除数据
update---更新一条数据
select---实际工作中尽量不要写*
where---给执行的语句加限制条件
in---在某个范围内
like(%, _)---模糊查询, %表示任意个字符, _表示单个字符
order by---(列名或者写索引:1, 2)
group by---按照某几列分组
having---分组之后的过滤
case...when...---类似于分支
set---设置某些属性
distinct---去除重复
between...and(闭合区间, 即包括前面的数, 也包括后面的数)
all---表示一个集合中所有的元素
any/some---表示一个集合中任意一个元素

通过SQLPLUS登录数据库

  运行-sqlplus-用户名-密码

  即可连接到数据库

  Oracle数据库(一)概述、基础与简单操作Oracle数据库(一)概述、基础与简单操作Oracle数据库(一)概述、基础与简单操作

  Oracle数据库(一)概述、基础与简单操作

使用plsql操作

查询

--查询数据库所有信息
select t.*, t.rowid from P_DEPT t
select *, t.rowid from P_DEPT
--查询数据库中dname的值为SALES的数据的deptno信息
select t.deptno from P_DEPT t where t.dname='SALES'

*代表所有

t代表给数据的一个别名,或者说id,在查询较多时便于区分

t.rowid

where后面是查询条件

增加

--增加信息
insert into p_dept(deptno,dname,loc)
,'ceshi','ceshi');
commit;
insert into p_dept
,'ceshi','ceshi');
commit;
insert into p_dept(deptno)
);
commit;

向表中增加信息,注意:表明后面的列名要和values后面的值对应起来,也可以表名后面不写列名,这样在values后面就要写全部的列的内容

更新 / 修改

--修改deptno为60的数据dname为ceshi2

删除数据

--删除数据
;
commit;

Oracle数据库常用命令整理:

--查询当前系统中的所有用户
select * from all_users

--查当前用户下所有的表:
select * from tab where tname not like '%$%'

--查看当前用户下所有的表(详细信息)
select * from user_tables

--查数据库中所有的表
select * from all_tables

--创建一个用户(进行这项操作的当前用户必须拥有DBA权限)
create user 用户名 identified by 密码

--创建表空间
create tablespace ts_mytest
logging
datafile 'f:\oracle_xe_datafile\mytest.dbf'
size 32m
autoextend on next 10m maxsize unlimited

--删除表空间
drop tablespace hoteldata including contents and datafiles;

/*
用户分三种类型
  sys;//系统管理员,拥有最高权限
  system;//本地管理员,次高权限
  scott;//普通用户,密码默认为tiger,默认未解锁
    新建用户未授权全部为普通用户
*/

--删除用户(级联)
drop user testuser cascade

--授予该用户权限(进行这项操作的当前用户必须拥有DBA权限)
grant connect, resource to 用户名

--connect角色是授予最终用户的典型权利,最基本的
  --修改会话
    alter session
  --建立会话
    create session
  --建立聚簇
    create cluster
  --建立数据库链接
    create database link
  --建立序列
    create sequence
  --建立同义词
    create synonym
  --建立视图
    create view

--resource角色是授予开发人员的
  --建立聚簇
    create cluster
  --建立存储过程
    create procedure
  --建立序列
    create sequence
  --建表
    create table
  --建立触发器
    create trigger
  --建立类型
    create type 

--修改用户口令格式
alter user 用户名 identified by 密码

--锁定 / 解锁oracle用户
alter user 用户名 account unlock
alter user 用户名 account lock

--更改表的结构:
))

--查询所有用户默认表空间
select username, default_tablespace from dba_users

--查看某一个用户使用了哪些表和表空间
select t.table_name, t.tablespace_name from dba_all_tables t where t.owner='COLLEGE'

--查询当前用户连接
select count(*) from v$session

--查看当前用户权限
select * from session_privs; 

--添加主键
alter table test add constraint pk_test primary key (userid);

--删除主键
alter table 表名 drop constraint 主键名

--查看当前数据库所有用户
select * from dba_users

--添加外键
alter table 表2 add constraint 外键名 foreign key(表2中需要建外键的字段) references 表1

--删除外键
alter table test2 drop constraint fk_test2

--查询某个时间点的数据(可以用于恢复数据, 但是如果删除表中信息用的truncate, 就无法查询了)
select * from t_person as of timestamp to_date('2017-04-21 21:30:00','yyyy-mm-dd hh24:mi:ss');
上一篇:使用jquery获取url及url参数的方法(转)


下一篇:jQuery事件绑定方式(转)