DML
insert关键字
作用:往表中插入一条(多条)数据

语法1:元祖值式的插入
语法1: insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN); 
      insert   into    表名      (列1      ,列2    ,...., 列N  ) values(值1  ,值2,.... , 值N)

如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values

insert   into    表名  values(值1  ,值2,.... , 值N)

语法2:查询结果式的插入
语法2: insert into tablename sub-query

delete关键字
作用:从表中删除数据
语法: delete [from] tablename [where condition]

update关键字
作用:更新表中的数据
语法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition]

事务

事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。

目的:保证数据库的完整性

特点:事务不能嵌套

如何开启事务:
    一个DML语句(insert、delete、update)的执行

如何关闭事务:
    1.显示的调用commit或rollback
    2.当执行DDL(Create、Alter、Drop)语句事务自动提交
    3.用户正常断开连接时,事务自动提交。
    4.系统崩溃或断电时事务自动回滚

序列

一、概念:
    序列(sequence):oracle专有的专有对象
二、作用:
    产生一个自动递增的数列

三、创建一个序列:

    create sequence seq_name
increment by 1
start with 1

四、使用序列:
    序列名.nextval
    序列名.currval

视图

一、定义:
    视图(view):一种不占用物理空间的虚表。

二、作用:
    将一些查询复杂的SQL语句变为视图,便于查询

三、语法:

create [or replace] view v$_name
as sub-query
[with read only]

四、需要注意的点:
    1.视图也可以从视图中产生
    2.我们把用于产生视图的表称之为基表
    3.我们对视图进行数据修改就是对基表进行数据修改,反之亦然
    4.不能对多张表的数据,通过视图进行修改。

五、使用视图需要注意
    1.一般来讲,只有重复出现非常多次的SQL语句,才会创建视图
    2.数据库迁移,视图也得随之迁移,否则在新数据中是不能用的
    3.创建视图时,尽量不要带or replace

数据类型

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

DDL

1.create关键字作用:用于创建数据库对象(表、视图、序列等)

语法:    create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
语法2: create table tablename as subquery

2.alert关键字
作用:用于修改数据库对象(表、视图、序列等)

语法:
    1) alter table tablename add(columnname dataType) 
    2) alter table tablename modify( columnname dataType) 
    3) alter table tablename drop [column] columnname

3.drop关键字
作用:用于删除数据库对象(表、视图、序列等)

语法:
     drop table tablename

使用_例子:

DML

--insert关键字

--作用:往表中插入一条(多条)记录

--元祖(tuple)值式的插入(一次插入一条记录)
--语法1: insert into tablename(column1,column2,...,columnN) values(val1,val2,...,valN) 
--例子:

insert into emp(empno,ename,sal,deptno) values(9527,'hua%an',100,40);

--如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values

insert into emp values(8888,'xiaoqiang','aaa',9527,sysdate,0,null,40);

--查询结果式的插入
--语法2: insert into tablename sub-query 
--例子:

insert into emp_temp (select * from emp where deptno = 20)

--创建一个emp的临时复制表

create table emp_temp as select * from emp where 1 = 2

--delete关键字

--作用:删除表中的数据
--语法: delete [from] tablename [where condition] 
--例子:

delete emp_temp where empno = 8888;

小心使用  delete emp_temp;

--update关键字

--作用:更新表中的数据
--语法: update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition] 
--例子:

update emp_temp set sal = sal*1.2 where ename = 'SMITH';

事务

--转账

update emp_temp set sal = sal - 500 where ename='JONES';
update emp_temp set sal = sal + 500 where ename='SMITH';
commit;
rollback; create table aaa(id number,name varchar2(20)); insert into emp_temp(empno,ename) values(1111,'cai10');
insert into emp_temp(empno,ename) values(2222,'cai20');
--savepoint 存档点
savepoint sp1;
insert into emp_temp(empno,ename) values(3333,'cai30');
insert into emp_temp(empno,ename) values(4444,'cai40');
rollback to sp1;

--事务的四个特性:ACID
--原子性(A)
--一致性(C)

update emp_temp set sal = 5000 where empno=1111
update emp_temp set sal = sal+1000 where empno = 1111;

--隔离性(I)
--持久性(D)

用户管理

--1.创建一个账户

create user zhangsan identified by 123456;

--2.修改账户的密码

alter user zhangsan identified by 654321;

--3.删除一个账户 [cascade 表示是否级联删除]

drop user zhangsan;

--4.让一个用户的密码失效

alter user zhangsan password expire;

--5.锁定、解锁一个账户

alter user zhangsan account lock;
alter user zhangsan account unlock;

--DCL

--grant授予权限
--revoke收回权限

--1.给用户授权
--允许用户登录

grant create session to zhangsan;

--给账户授权可以操作表

grant all on scott.emp_temp to zhangsan;

--2.取消用户的权限

revoke all on scott.emp_temp from zhangsan;

--创建序列

create sequence seq_emp_temp
increment by 1
start with 1

--使用序列

--通过序列名.next_val
自增序列: select seq_emp_temp.nextval from dual; 
查询序列: select seq_emp_temp.currval from dual; 
使用一次加一行序列加一: insert into emp_temp(empno) values(seq_emp_temp.nextval)

视图

--登录到sys账户给scott赋予创建视图的权限: grant create view to scott;

--1.视图的创建

create view v$_emp_dept
as
select ename,sal,job,dname from emp,dept where emp.deptno = dept.deptno;

--视图也可以从视图中产生

create view v$_emp_dept_tem
as
select ename,sal from v$_emp_dept

--修改视图的数据,就是修改基表的数据

create or replace view v$_emp
as
select empno,ename from emp
with read only select * from v$_emp;
select * from emp; update emp set sal = 8888 where empno = 9527;

--视图的优点:可以使某些重复出现SQL语句变得更为简单
--视图的缺点:1.如果修改基表的结构,视图失效
--           2.增加数据库的维护成本
--           3.视图会被覆盖掉
--           4.一般情况下,不要对视图进行DML操作

--视图的例子

select dname, grade
from (select deptno, avg_sal, grade
from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
salgrade s
where t.avg_sal between s.losal and s.hisal) t1,
dept
where t1.deptno = dept.deptno
and t1.grade =
(select min(grade)
from (select deptno, avg_sal, grade
from (select deptno, avg(sal) avg_sal
from emp
group by deptno) t,
salgrade s
where t.avg_sal between s.losal and s.hisal));

--为上面的SQL中重复出现的sql语句创建视图

create view v$_dept_avgsal
as
select deptno, avg_sal, grade
from (select deptno, avg(sal) avg_sal from emp group by deptno) t,
salgrade s
where t.avg_sal between s.losal and s.hisal

--利用视图替换上面的sql语句

select dname, grade
from v$_dept_avgsal t1,
dept
where t1.deptno = dept.deptno
and t1.grade =
(select min(grade)
from v$_dept_avgsal);

--删除视图所表示的基表

create view v$_aaa
as
select * from aaa;

--删除表 aaa: drop table aaa;
--查询视图: select * from v$_aaa;
--删除视图 v$_aaa: drop view v$_aaa;

--DDL

--create

--作用:用来创建数据库的对象(表,视图,序列,索引等)
--语法1: create table tablename(column1 dataType, column2 dataType,...,columnN dataType) 
--例子:

create table t_user(
id number,
username varchar2(30),
password varchar2(30)
);

--语法2: create table tablename as subquery

--例子:

create table emp_e1 as select * from emp where 1=1;

--alter

--作用:用来修改数据库的对象(表,视图,序列,索引等)
--语法: alter table tablename [modify/add/drop] 
--例子1:

alter table emp_e1 modify(ename varchar2(10));
insert into emp_e1(empno,ename) values(9898,'cai10cai10cai');

--例子2:

alter table emp_e1 add(phone varchar2(11));

--例子3:

alter table emp_e1 drop column phone;

select * from emp_e1

--drop
--作用:用来删除数据库的对象(表,视图,序列,索引等)
--语法  drop table tablename 
 drop table emp_e1;

Oracle day04 DML_事务_序列_视图_数据类型_DDL的更多相关文章

  1. oracle中以dba_、user_、v$_、all_、session_、index_开头

    原 oracle中以dba_.user_.v$_.all_.session_.index_开头 2011年07月05日 11:26:06 clbxp 阅读数:3279   oracle中以dba_.u ...

  2. Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

  3. 『流畅的Python』第10章笔记_序列类型

    一.基础知识 “__”前缀:私有属性.方法,在__dict__中存储时被改写为“_类名__”前缀 “_”前缀:是约定俗成的保护属性.方法,不过编译器不会对之采取任何处理 二.class特殊方法介绍 在 ...

  4. Django_Restframwork_APIVIEW视图_源码分析

    Django _VIEW视图_源码分析

  5. 51nod_1236_序列求和 V3 _组合数学

    51nod_1236_序列求和 V3 _组合数学 Fib(n)表示斐波那契数列的第n项,Fib(n) = Fib(n-1) + Fib(n-2).Fib(0) = 0, Fib(1) = 1. (1, ...

  6. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

  7. 【转】oracle中的NULL、''(空字符串)以及'_'(空格)

    在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...

  8. Python基本语法_基本数据类型_序列类型详解

    目录 目录 序列 序列的标准操作符 切片操作符 一个例子 字符串的连接 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 m ...

  9. ORACLE主要的系统表和系统视图

    ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...

随机推荐

  1. data.table包使用应该注意的一些细节

    fread中nThread 参数的使用   注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数 ...

  2. 详解封装微信小程序组件及小程序坑(附带解决方案)

    一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...

  3. java:找出占用CPU资源最多的那个线程

    linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找: 1.先用top命令找出占用资源厉害的java进程id,如: 2 ...

  4. For each...in / For...in / For...of 的解释与例子

    1.For each...in for each...in 语句在对象属性的所有值上迭代指定的变量.对于每个不同的属性,执行一个指定的语句. 语法: for each (variable in obj ...

  5. XLua基础

    一.Lua文件加载 1).Resources加载xluaTest文件 2).通过loader加载  3).自定义Loader(相当于Resources加载和loader加载结合)    先自定义Loa ...

  6. External Snapshot management

    External Snapshot management Symptom As of at least libvirt 1.1.1, external snapshot support is inco ...

  7. 版本号严格遵守semver语义化标准

    地址:http://semver.org/lang/zh-CN/?spm=a219a.7629140.0.0.GUJMXE 语义化版本 2.0.0 摘要 版本格式:主版本号.次版本号.修订号,版本号递 ...

  8. [Swift]LeetCode38. 报数 | Count and Say

    The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 ...

  9. [Swift]LeetCode154. 寻找旋转排序数组中的最小值 II | Find Minimum in Rotated Sorted Array II

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. [Swift]LeetCode391. 完美矩形 | Perfect Rectangle

    Given N axis-aligned rectangles where N > 0, determine if they all together form an exact cover o ...