oracle的数据结构与增删改总结

来源:互联网 发布:网络中立原则 编辑:程序博客网 时间:2024/06/05 10:57

oracle

oracle安装与结构

oracle的安装

  1. c/s框架
    dos命令
    配置dos命令:选中两个文件一起解压,配置环境变量
  2. sqlplus scott/tiger@192.168.18.28:1521/orcl
  3. orcale客户端工具
  4. pl/sql developer
  5. 网页版客户端 缺点:session失效

oracle的删除

  1. 删除注册表
  2. 关闭服务
  3. 删除oracle安装文件的位置,
  4. 删除开始菜单oracle的信息

oracle 块大小 8kb

表空间
1个表空间对应多个数据文件
存储用户数据 -> 数据文件中

用户:
指定表空间
角色:开发人员指定resource角色
权限:创建对象权限(表,过程,触发器等)

oracle的数据类型

CHAR    固定长度字符串     最大长度2000bytes    VARCHAR2    可变长度的字符串,   最大长度4000bytes   可做索引的最大长度749NCHAR   根据字符集而定的固定长度字符串     最大长度2000bytes    NVARCHAR2   根据字符集而定的可变长度字符串     最大长度4000bytes    DATE    日期(日-月-年)   DD-MM-YY(HH-MI-SS),经过严格测试,无千虫问题      TIMESTAMP   日期(日-月-年)   DD-MM-YY(HH-MI-SS:FF3),经过严格测试,无千虫问题     与DATE相比较,TIMESTAMP有小数位秒信息LONG    超长字符串   最大长度2G,足够存储大部头著作     RAW     固定长度的二进制数据  最大长度2000bytes   可存放多媒体图象声音等LONG RAW    可变长度的二进制数据  最大长度2G  可存放多媒体图象声音等BLOB    二进制数据   最大长度4G   CLOB    字符数据    最大长度4G   NCLOB   根据字符集而定的字符数据    最大长度4G   BFILE   存放在数据库外的二进制数据   最大长度4G   NUMBER(P,S)     数字类型    P为整数位,S为小数位      DECIMAL(P,S)    数字类型    P为整数位,S为小数位      INTEGER     整数类型    小的整数     FLOAT   浮点数类型   NUMBER(38),双精度   REAL    实数类型    NUMBER(63),精度更高

sql操作

Oracle的数据类型

表的基本管理(DDL:Data Definition Language)

表的增删改语句(insert,update,delete)(DML:Data Manipulation Language)

增删改的事务操作(DCL:Data Control Language)

表的查询语句基本结构(select)(DML:Data Manipulation Language)

表的基本管理 DDL

DDL主要关键字:create,alter,drop,truncate

  • 创建表:
    用 create table 表名(列名 类型 默认值,,,,)
    create table student(s_id,s_name,varchar2(20));

  • 命名规范:

    1. 不能和oracle关键字冲突
    2. 字符的长度不超过30个字符
    3. oracle所有的字符集
  • 给表增加列
    alter table student add s_sex char(2);

  • 修改列名
    alter table student rename colums column s_age to s_age_new

  • 修改类的类型
    alter table student modify s_name varchar2(30);

  • 删除列
    alter table student drop column s_age_new;

  • 修改表的名字
    rename student to student1;

  • 删除表
    drop table student1;

  • 直接从回收站中删除表
    drop table student purge;

  • 查看回收站中存在删除的表
    select * from user_recyclebin;//user_recyclebin回收站的表名

  • 查看回收站中表的数据 名字用引号引住
    select * from “回收站的表名”;

  • 清空回收站的信息
    purge recyclebin

  • 从回收站中还原删除的表
    flashback table student to before drop;//闪回

  • 销毁创建表
    truncate table student;

  • 清空表的记录
    truncate table student

    delete from student where s_id=102;//会造成碎片

  • 表的重构(清除碎片)
    alter table student move;

DML表的增删改

增加数据:

  • 给所有列添加数据
    insert into student values(106,’数数’);//保证值的顺序和表的列的顺序保存一致
  • 给指定列添加数据
    insert into student(s_id) values(107);

  • 通过子查询给添加数据
    insert into student select * from student;

    语法:insert into student 子查询

更新表的记录

update student set s_name='利率' where s_id=103;

删除表的记录

delete from student where s_id=103;select rowid,student.* from student;

清空表的记录

  1. delete (dml) 事务的开始,有条件的删除
  2. truncate (ddl) 事务的结束,删除重建(跟表本身的数据记录没关系)

delete与truncate的区别:

  1. delete逐条删除;truncate先摧毁表,再重建
  2. delete是DML(可以回滚) truncate是DDL(不可以回滚)
  3. delete不会释放空间 truncate会
  4. delete可以闪回(flashback) truncate不可以
  5. delete会产生碎片 truncate不会

增删改的事务操作

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

    事务的开始,dml语句开始

insert into student values(201,’得到’);//事务开始

事务的结束

  1. 显式
    commit,提交事务;rollback,回滚事务
    2.隐式
    1.使用了ddl语句,事务自动提交
    2.用户正常退出,事务自动提交
    3.用户非正常退出,事务回滚

事务的存储点

delete from student where s_id=107;//事务的提交
savepoint aa; //aa存储点的名字
update student set s_name=’savepoint’;//回滚

rollback to aa;//事务的回顾点
commit;

表的查询 DML

select 语句:
select 列,函数,子查询
from 表1,表2,子查询 或者 from 表1 inner join 表2 on 条件.
where 条件,子查询
group by 分组列,函数
having 条件,子查询
order by 排序

执行顺序:

(7)select (8)distinct
(1)from [left_table]
(3) join
(2)on
(4)where
(5)group by
(6)having
(9)order by

基本查询

  1. 查看用户 show user;
  2. 查看当前用户创建的所有表的信息 select * from tab;

  3. 给列取别名
    统计每个部门的人数
    select deptno,count(1) as 人数 from emp group by deptno;
    as可省略

  4. 查询数据字典信息
    select * from v$nls_parameters;

  5. 修改日期格式
    alter session set NLS_DATE_FORMAT=’yyyy-mm-dd’;

  6. between and 查询
    select * from emp where sal>=3000 and sal<=5000;
    select * from emp where sal between 3000 and 5000; //包含边界

7.去掉重复行 distinct
8. concat(”,”) 连接字符串

select ‘您的名字:’ || ename ‘a’ 名字 from emp;
字符串连接用||符号而不是+
select concat(‘您的名字’,ename) 名字 from emp
9. 模糊查询 like
oracle 关键字,表名,列名不区分大小写,但是表的记录大小写区分
select * from emp where ename like ‘A%’;
select * from emp where ename like ‘%\%%’escape ‘\’;
10. null值的判断
select * from emp where comm is not null;
11. desc 查看对象的定义信息
desc dept; 查看表
desc procedure_name;查看存储过程

0 0