zoukankan      html  css  js  c++  java
  • oracle学习笔记第三天

    --DML(Data Manipulation Language)
    --insert关键字 插入
    ---语法1、元祖值式插入(一次插入一条记录)
    ---格式:insert into 表名(列名1,列名2...列名n) values(值1,值2...值n)
    insert into emp(ename,empno) values('xiaoqiang',7100);
    ---注:当插入一条包含所有列的数据时,可以省略表后面的字段。
    insert into emp values(6682,'hong','clerk',9527,sysdate,0,null,40);

    ---语法2、查询结果式插入
    ---格式:insert into 表名 子表查询语句
    insert into emp_temp (select * from emp where deptno=20);
    ---创建一个emp的临时复制表
    create table emp_temp as select * from emp where 1=2;

    --delete关键字 删除表中的数据
    --语法:delete [form] 表名 [where 条件]
    select * from emp_temp;
    delete emp_temp where empno = 7566;
    --注:delete 表民 删除的是整个表的数据,表此时是空表
    --如果想从表中删除所有的行,丌要使用delete,可使用truncate table 语
    --句,完成相同的工作,但是速度更快(没有事务)。

    --update关键字 更新表中的数据
    --语法:update 表名 set 列名1=值1,列名2=值2,...列名n=值名n [where 条件]
    update emp_temp set sal=800 where empno=7369;

    --事务(Transaction) 保证数据的完整性,不可嵌套
    --是一个操作序列。这些操作必须同时发生,是不可分割的,是数据库环境中的逻辑工作单位。
    --例如:转账时必须保证a转出钱与b收到钱同时发生,不能分割开;
    --开启事务:一条DML(insertm,update,delete)语句
    --关闭事务:1、回退:用户使用rollback;系统奔溃或断电时自动回退
          2、提交:用户使用commit语句
              用户使用DDL(create、alter、drop)语句事务自动提交
              用户正常断开连接时,自动提交
    select * from emp_temp;
    update emp_temp set sal=sal-100 where empno=7369;
    update emp_temp set sal=sal+100 where empno=7369;

    ---commit关键字 提交事务
    ---rollback关键字 回退事务(事务不提交)
    ---savepoint 存档点 可设置存档点,回退时可选择回退(rollback to)到哪个存档点,此时事务并未关闭


    update emp_temp set sal=sal-100 where empno=7369;

    savepoint sp01;
    update emp_temp set sal=sal-100 where empno=7369;
    rollback to sp01;
    commit;

    select * from emp_temp;

    --事务的ACID属性
    ---原子性(Atomicity)
    ---一致性(consistency)
    ---隔离性(isolation)
    ---持久性(durability)

    --用户管理 DCL
    ---1、创建一个用户
    create user xiaoming identified by 123456;
    ---2、修改账户的密码
    alter user xiaoming identified by 333777;
    ---3、删除一个账户
    drop user xiaoming;
    ---4、让一个用户的密码失效
    alter user xiaoming password expier;
    ---5、锁定、解锁一个账户
    alter user xiaoming account lock;
    alter user xioaming account unlock;
    --给用户授权 grant
    ---1、允许用户登录
    grant create session to xiaoming;
    ---2、允许操作表
    grant all on scott.emp to xiaoming;
    --取消用户的权限 revoke
    revoke all on scott.emp to xiaoming;


    --序列 sequence
    --oracle 专有的对象,产生一个自动递增的数列
    --创建序列的语法 :create sequence 序列名 increment by 递增值 start with 开始值
    create sequence seq_emp_temp
    increment by 1
    start with 1
    ---序列的使用
    ---nextval 下一个值
    ---currval 最近的值
    insert into emp_temp (empno,ename) values
    (seq_emp_temp.nextval,'lisi');
    select * from emp_temp;
    select seq_emp_temp.nextval from dual;
    select seq_emp_temp.currval from dual;

    --view 视图 (建议名字以v$_开头) 一种不占用物理空间的虚表
    ---作用:将一些复杂的sql语句设置为视图,便于chaxun,建议只用于查询
    ---语法:create [or replace] view 视图名 as 子查询 [with read only]
    ---注:1.视图可以由物理表或视图产生
    ---       2.产生视图的表称为基表
       3.视图与基表是同一份数据
       4.不能对多表的数据通过视图修改
    ---使用视图需要注意
    1.一般来讲,只有重复出现非常多次的SQL语句,才会创建视图
    2.数据库迁移,视图也得随之迁移,否则在新数据中是不能用的
    3.创建视图时,尽量不要带or replace
    ---先用sys账户给scott授权,再切回scott账户操作
    grant create view to scott;
    create view v$_emp as select ename from emp;
    ---查询视图与查询表一样
    select * from v$_emp;
    ---删除视图
    drop view v$_aaa;

    --DDL(Data definition language)
    ---1.create关键字 创建数据库的对象(表、视图、序列、账户等)
    ---语法格式1:creat table 表名 (列名1 数据类型,列名1 数据类型 ...列名n 数据类型)
    ---语法格式2:creat table 表名 as 子查询
    create table grade (gname varchar2(30),gra number(10,0));
    select * from grade;
    insert into grade(gname,gra) values('小红',99);
    ---2.alter 关键字 修改数据库的对象(表、视图、序列、账户等)
    ---语法格式1:alter table 表名 add(列名 数据类型)===> 添加列
    ---语法格式2:alter table 表名 modify(列名 数据类型)===>修改列
    ---语法格斯3:alter table 表名 drop(列名) ===> 删除列
    alter table grade add(gender varchar2(3));
    alter table grade modify(gender varchar(10));
    alter table grade drop(gender);
    ---3.drop关键字 删除数据库的对象(表、视图、序列、账户等)
    ---语法格式:drop table 表名
    drop table grade;

    --数据类型
    ---数据类型分类:
    1.number(x,y) 数字类型,x表示最大长度,y表示精度
    2.varchar2(x) 可变字符串,x表示最大长度
    3.char(x) 定长字符串,x表示最大长度
    4.long 长字符串,最大2G
    5.Date,日期(年月日时分秒)
    6.TIMESTAMP 时间戳,精确到微秒

  • 相关阅读:
    树的统计Count---树链剖分
    HDU 1069---背包---Monkey and Banana
    《程序员代码面试指南》第三章 二叉树问题 判断t1树是否包含t2树全部的拓扑结构
    《程序员代码面试指南》第三章 二叉树问题 二叉树按层打印和ZigZag打印
    《程序员代码面试指南》第三章 二叉树问题 找到二叉树中最大搜索二叉树
    《程序员代码面试指南》第三章 二叉树问题 在二叉树中找见累加和为指定值的最长路径
    《程序员代码面试指南》第三章 二叉树问题 遍历二叉树的神级方法 morris
    《程序员代码面试指南》第三章 二叉树问题 二叉树的序列化和反序列化
    《程序员代码面试指南》第三章 二叉树问题 较为直观的打印二叉树
    《程序员代码面试指南》第三章 二叉树问题 逆时针打印二叉树的边界
  • 原文地址:https://www.cnblogs.com/heviny/p/10738471.html
Copyright © 2011-2022 走看看