Oracle day04 DML_事务_序列_视图_数据类型_DDL
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的更多相关文章
- 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 ...
- Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等
count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...
- 『流畅的Python』第10章笔记_序列类型
一.基础知识 “__”前缀:私有属性.方法,在__dict__中存储时被改写为“_类名__”前缀 “_”前缀:是约定俗成的保护属性.方法,不过编译器不会对之采取任何处理 二.class特殊方法介绍 在 ...
- Django_Restframwork_APIVIEW视图_源码分析
Django _VIEW视图_源码分析
- 51nod_1236_序列求和 V3 _组合数学
51nod_1236_序列求和 V3 _组合数学 Fib(n)表示斐波那契数列的第n项,Fib(n) = Fib(n-1) + Fib(n-2).Fib(0) = 0, Fib(1) = 1. (1, ...
- BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划
BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...
- 【转】oracle中的NULL、''(空字符串)以及'_'(空格)
在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...
- Python基本语法_基本数据类型_序列类型详解
目录 目录 序列 序列的标准操作符 切片操作符 一个例子 字符串的连接 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 m ...
- ORACLE主要的系统表和系统视图
ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制 ...
随机推荐
- (BUG记录)记一次与其他系统交互协作时造成的锁表问题
最近两日做公司电信某计费项目时,接收一个银行对账的任务,在完成对账后.电信和银行两方金额一致时需要进行充值.冲正操作保持金额一致.冲正服务是JAVA统一调用Tuxedo服务,这个服务已经是一个稳定可用 ...
- LSI IBM服务器阵列卡操作经历
说明:因为服务器的一个磁盘坏了,因为没有经验不敢操作.正好有一台撤下来的相同服务器,所以查找了各种教程,研究了一下各种操作.记录在这里,防止忘记.一.概念说明raid(自己百度)阵列卡组(group) ...
- framework7 入门(数据获取和传递)
数据获取 framework7自带request方法 , var app = new Framework7({...});app.request(parameters) 或者 Framework7.r ...
- DAY10函数
函数 函数就是可以重复利用的工具 函数可以完成指定代码块,函数就是是存放代码块的容器 函数的有点: 1.避免出现重复冗余的代码 2.让程序代码结构更清晰增加可读性 3 定义函数的语法 1. 函数名:使 ...
- JS 多选文件或者选择文件夹
<%--文件多选--%> <input type="file" name="file" id="file" multipl ...
- H5音乐自动播放ios//禁止安卓手机图片点击
定义音乐按钮 <div id="music-btn" class="o-play" style="width: 24px; height: 24 ...
- 在 Android 的文字编辑控件 (TEdit) 中, 如何按下 Enter 就隐藏虚拟键盘
在 Windows 的应用中,我们常常为了让使用者能够快速输入,在Edit元件中的onKeyUp或者 onKeyDown 事件中主动侦测使用者输入的字元是否有换行符号 (Enter),当使用者按下了E ...
- JavaEE开发之Spring中的依赖注入与AOP编程
上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...
- 详解AMD规范及具体实现requireJS在工程中的使用
前面的话 由CommonJS组织提出了许多新的JavaScript架构方案和标准,希望能为前端开发提供统一的指引.AMD规范就是其中比较著名一个,全称是Asynchronous Module Defi ...
- 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机
说明: 1.前段时间开源了一个网络摄像头的TCP版本 https://www.cnblogs.com/armfly/p/9173167.html,这次再来一个远程VNC的版本.使用更方便,无需大家制作 ...