DML、DDL、事务、序列、数据类型、视图

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

语法1:元祖值式的插入
语法1:insert into tablename(column1,column2,...,columnN) values(value1,value2,...,valueN);
例:
insert into emp(empno,ename,sal,deptno) values(9537,'hua%an',100,40);
--如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values
:insert into emp values(8888,'xixi',sysdate,0,null,40);
语法2:查询结果式的插入
语法2:insert into tablename sub-query
:insert into emp_temp(select * from emp where deptno = 20)
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';

事务(Transaction)

是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
目的:保证数据库的完整性
特点:事务不能嵌套
如何开启事务:
    一个DML语句(insert、delete、update)的执行
如何关闭事务:
    1.显示的调用commit或rollback
:转账500
update emp_temp set sal = sal-500 where ename = 'JONES';
update emp_temp set sal = sal+500 where ename = 'SMITH';
commit;
rollback;
    2.当执行DDL(Create、Alter、Drop)语句事务自动提交
    3.用户正常断开连接时,事务自动提交。
    4.系统崩溃或断电时事务自动回滚

---savepoint 存档点
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 sp1;----设置存档点
insert into emp_temp(empno,ename) values(3333,'cai30');
insert into emp_temp(empno,ename) values(4444,'cai40');
rollback to sp1;-----回滚至存档点sp1
--事务的四个特性:ACID
--原子性(A)
--一致性(C)
--隔离性(I)
--持久性(D)

序列:

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

三、创建一个序列:
    create sequence seq_name
    increment by 1
    start with 1

四、使用序列:
    序列名.nextval
    序列名.currval
例:
    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;

 

视图:

一、定义:
    视图(view):一种不占用物理空间的虚表。
二、作用:
    将一些查询复杂的SQL语句变为视图,便于查询
三、语法:
1.视图的创建:create [or replace] view v$_name
例:
create view v$_emp_dept
as
select ename,sal,job,dename from emp,dept where emp.deptno = dept.deptno;
--视图也可以从视图中产生:as sub-query
例:
create view v$_emp_dept_tem
as
select ename,sal from v$_emp_dept
--修改视图的数据,就是修改基表的数据[with read only]
create or replace view v$_emp
as
select empno,ename from emp
with read only---只读
--视图的优点:可以使某些重复出现SQL语句变得更为简单
--视图的缺点:1.如果修改基表的结构,视图失效
         2.增加数据库的维护成本
         3.视图会被覆盖掉
         4.一般情况下,不要对视图进行DML操作
四、需要注意的点:
    1.视图也可以从视图中产生
    2.我们把用于产生视图的表称之为基表
    3.我们对视图进行数据修改就是对基表进行数据修改,反之亦然
    4.不能对多张表的数据,通过视图进行修改。

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

--视图的例子
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;

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

DDL
1.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;
2.alert关键字
作用:用于修改数据库对象(表、视图、序列等)

语法:
    1)alter table tablename add(columnname dataType)
    2)alter table tablename modify( columnname dataType)
    3)alter table tablename drop [column] columnname
--例子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;
3.drop关键字
作用:用于删除数据库对象(表、视图、序列等)

语法:
    drop table tablename
    例:drop table emp_e1;

posted on 2019-04-19 20:02  大魔王老Z  阅读(408)  评论(0)    收藏  举报

导航