zoukankan      html  css  js  c++  java
  • oracle03

    (1)表中数据操作

    插入数据:
    a.插入单条 insert into myemp(empno,ename) values(1111,'张三');
    b.批量插入 insert into myemp select * from emp; 使用了子查询
    修改数据:
    a.修改多个列 update myemp set ename=''糯米团子 ,sal=15000 where empno=7369;
    删除数据:
    a.使用delete删除数据 delete from myemp where empno=7369;
    b.使用truncate 删除整张表数据 truncate table myemp;
    c.delete和truncate 删除数据的区别
    事务+内存+碎片+执行时间


    (2)表操作
    创建表:
    a.基本创建表语句
    create table myemp1(
    id number(10) primary key,
    name varchar2(10) not null,
    gender varchar2(4) check(gender in('男','女'))
    ---constraint myemp1_id_pk primary key(id)
    )
    b.使用子查询创建表
    create table myemp2 as select * from myemp where 1=2;
    由于1=2为假,该语句只拷贝了结构,没有拷贝数据;
    删除表:
    a.彻底删除表
    drop table myemp3 purge; 不加purge是暂时放到回收站中了
    b.drop之后的数据放到了recyclebin回收站中
    查看回收站:show recyclebin;
    彻底清除回收站:purge recyclebin;
    彻底删除表:drop table myemp3 purge;
    查看回收站表数据: select * from "BIN$YTQc8f5pTZ6kuFyu4GSeug==$0";
    c.闪回
    flashback table myemp3 to before drop;
    修改表:
    a.修改表中列
    oracle: alter table myemp3 modify ename vachar2(20); 不能带column
    mysql : alter table myemp3 modify (column) ename varchar(20);
    b.增加表中列
    oracle: alter table myemp3 add gender varchar2(4);
    mysql : alter table myemp3 add (column) gender varchar2(4);
    c.删除表中列
    oracle: alter table myemp3 drop column gender; 必须带column
    mysql : alter table myemp3 drop (column) gender;
    d.重新命名表中列名
    oracle: alter table myemp3 rename column ename to myname; 必须带column
    mysql : alter table myemp3 change (column) ename myname varchar(20);
    e.重新命名表名
    oracle: rename myemp3 to myemp4;
    mysql : rename table mysqltname3 to mysqltname4; 必须带table

    (3)事务
    a.oracle和mysql事务区别:
    oracle中事务:
    在insert/update/delete 中默认操作之后需要commit才能改变真正改变数据;
    mysql中事务:
    直接执行insert/update/delete 就已经改变了数据
    b.设置事务:
    set transaction read only;
    c.事务之保存点
    创建保存点 savepoint a;
    回滚保存点 rollback to savepoint a;
    d.oracle中支持3种事务;
    read commited, read only ,serializable

    (4)oracle中的对象(表、约束、序列、索引、视图、同义词....)
    约束(保证数据完整性):
    create table myemp3(
    id number(10),
    name varchar2(10) constraint myemp3_name_nn not null,--非空约束
    gender varchar2(4) default '男',--默认值
    deptno NUMBER(2),
    email varchar2(20),
    constraint myemp3_id_pk primary key(id), --主键约束
    constraint myemp3_gender_ck check(gender in('男','女')), --检查约束
    constraint myemp3_email_uk unique(email), --唯一约束
    constraint myemp3_deptno_fk foreign key(deptno) references dept(deptno) on delete set null --外键约束
    -- 没有这种写法constraint myemp3_name_nn not null ;
    )
    序列(主键自增使用)
    创建序列:create sequence myemp3_seq;
    使用序列:在insert into myemp3 values(myemp3_seq.nextval,'海洋','女',10,'101001@qq.com');
    获取当前值使用myemp3_seq.currval
    注意:myemp3_seq.nextval 每调用一次nextval 指针向后移动一位,也就是该序列增加一次;
    索引(提高检索速度):
    创建索引:create index myemp3_index on myemp3(name,email) 联合索引
    drop index myemp3_index;
    创建索引的场景:
    该列值很多,经常被查询
    如果该列值经常做update 操作不适合

    视图(复杂查询结果放到一张虚拟表中,对视图的操作其实是构成视图基表操作):
    创建视图:create or replace view myview_view as select * from myemp3;
    删除视图:drop view myview;
    理解:一般视图不推荐做插入、修改操作,推荐做with read only 查询、
    因为如果遇到一些特殊语句,insert,update 操作就不行。

    同义词(给其他对象取一个别名,方便其他用户调用和缩写对象名称):
    创建同义词:create synonym mysys_synonym for myemp3; for 可以是其他对象
    删除同义词:drop synonym mysys_synonym;

    (5)plsql基本结构和变量声明

         关于这部分出自 https://baike.baidu.com/item/plsql/9042661?fr=aladdin


    基本结构:
    declare
    --声明变量
    begin
    --plsql体执行其他操作
    end;
    变量声明:
    set serveroutput on --注意这里使用sqldeveloper 工具需要将控制台输出打开一次就行
    DECLARE
    id constant number(2):=1;--使用constant 关键词定义常量
    name VARCHAR2(10):='贺文锦';--定义指定类型变量
    mysal emp.sal%type;--定义引用存在表的列类型
    myrow emp%rowtype;--定义引用存在表行类型
    BEGIN
    --常量就不能再赋值了 id:=2 错误
    SELECT sal INTO mysal FROM emp WHERE empno=7369;
    SELECT * INTO myrow FROM emp WHERE empno=7369;
    dbms_output.put_line(id);
    dbms_output.put_line(name);
    dbms_output.put_line(mysal);
    dbms_output.put_line(myrow.ename || ' ' || myrow.sal);
    END;



    有的内容是自己平日积累的与工作上遇到的,有的是摘抄其他博主的精彩好文(会附上作者),愿大家共同成长。
  • 相关阅读:
    MSSQL ADO.NET
    MSSQL 详解SQL Server连接(内连接、外连接、交叉连接)
    MSSQL DBOtherSQL
    java8时间转换成字符串
    泛型
    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
    利用栈判断有效的括号
    回文数
    service层对 @NotBlank注解起作用
    集合的使用
  • 原文地址:https://www.cnblogs.com/PinkPink/p/7600464.html
Copyright © 2011-2022 走看看