--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 from 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';

select * from emp_temp;

select * from emp_temp

--转账
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));

--savepoint 存档点
insert into emp_temp(empno,ename) values(1111,'cai10');
insert into emp_temp(empno,ename) values(2222,'cai20');
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)

select * from emp_temp;

--登录到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;

SQL 序列-DML-DML-数据类型-用户管理、权限-事务-视图的更多相关文章

  1. Oracle 用户管理权限

    Oracle 用户管理权限 一.创建用户的Profile文件 SQL> create profile student limit // student为资源文件名 FAILED_LOGIN_AT ...

  2. Linux_用户管理&权限管理

    2017年1月11日, 星期三 Linux_用户管理&权限管理 1.  Linux用户管理&权限管理 终端的概念: tty  查看登录的终端 类型  user group    oth ...

  3. Ubuntu 用户管理/权限管理

    Ubuntu 用户管理/权限管理 小小记录一下 Ubuntu 下用户/权限管理常用的一些命令 用户管理 组管理 文件权限 给用户添加 sudo 权限 给用户添加 sudo 权限 首先先给出几个文件 / ...

  4. mysql用户管理,权限管理

    mysql权限 相关操作: 授予的权限分为四组: 列权限:和表中的一个具体列相关,例如:使用update 语句更新test表中name 列的值 表权限:和一个具体的表的所有数据相关,例如:使用 sel ...

  5. CRM、用户管理权限

    CRM目录结构 from django.shortcuts import HttpResponse,render,redirect from django.conf.urls import url f ...

  6. Oracle用户角色权限相关视图

    常用相关视图概述 DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 当前用户所拥有的系统权限 SESSION_PRIVS: 当前用户所拥有的全部权限 ROLE ...

  7. mysql 用户管理 权限控制

    添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...

  8. Linux用户管理 权限管理 内存管理 网络管理命令 (第四天)

    默认添加的用户会自动加入和用户名一样的组中su 切换用户查看当前登陆的用户: whoami id`查看当前用户属于哪个组:groupsgroupadd 组名 添加组groupdel 组名 删除组gre ...

  9. jenkins 添加用户管理权限

    一.前言 小组开会通知 想把jenkins 构建的权限给开发,这样的话效率会增加.运维也不必每次帮助开发去构建发布. 1.规划 jenkins 四个项目分别对应三个人负责.项目下的只负责 CI.UAT ...

随机推荐

  1. $(document).ready()和onload() html渲染时的区别

    不谈调用次数,加载先后问题,只看渲染时区别 1.都在数据绑定完加载. 2.ready可以有多个,且都执行,onload虽可以写多个,但是只执行最后一个. 3. $.ready = function ( ...

  2. PostgreSQL快速入门

    一.PostgreSQL是什么? PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS). 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们. PostgreSQ ...

  3. 【转载】Vue自定义指令实现pc端加载更多

    转载来源:https://www.86886.wang/detail/5a6f19e644f9da55274c3bbd,谢谢作者分享! 原理 document.documentElement.scro ...

  4. vue-地址插件 v-region

    demo地址:https://terryz.gitee.io/vue/#/region/demo

  5. 【oracle唯一主键SYS_GUID()】

    现在给大伙介绍另外的一钟防止主键相同的方法. 唯一主键 使用 SYS_GUID() 生成32位的唯一编码.来生成唯一主键 例如: create table test ( id raw(16) defa ...

  6. 七天开发进度(七)(微信小程序版(二)记账本)

    终于把小程序版弄完了,不过这并不能称之为是我的作品,因为我还没有彻底学会小程序,对JavaScript语言还有很多不会的地方,没有掌握, 这次的程序是通过学习网上的多个教程,多个案例结合拼凑模仿者人家 ...

  7. Mac OS X系统下,svn: Can't remove file Operation not permitted.解决方案

    当你的svn出现类似以下错误时,提示Operation not permitted之类的问题,说明项目下 .svn文件夹内的文件权限有问题. 一般是由于windows和mac操作系统同时操作同个svn ...

  8. Felx布局基础教程

    网页布局即layout是css的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...

  9. xilinx和altera的fpga的不同之处!----如果不知道,你将为之付出代价! --转载

    本人从2004年接触fpga开始,至今已经8年了.开发过altera的flex系列和cyclone3系列:开发过xilinx的vii和v5系列.下面谈谈本人对二者的一些不同,以便引起开发者对一些细节上 ...

  10. 数据库链接池c3p0的配置

    由于我看的是远古教程,所以里面各种驱动jar包还有c3p0包都是远古版本,对于最新版本的jdbc已经失去的作用,所以我在这里重写一下! 1.首先是c3p0的位置,package的外面,src的里面 2 ...