Oracle序列和DML

序列是oracle专有的对象,它用来产生一个自动递增的数列
 
--在oracle中如果需要完成一个列的自增操作,必须要使用序列
/*
create sequence seq_name
  increment by n  每次增长几
  start with n    从哪个值开始增长
  maxvalue n|nomaxvalue 10^27 or -1  最大值
  minvalue n|no minvalue  最小值
	cycle|nocycle           是否有循环
	cache n|nocache          是否有缓存

*/
create sequence my_sequence
increment by 2
start with 1

--如何使用?
--注意,如果创建好序列之后,没有经过任何的使用,那么不能获取当前的值,必须要先执行nextval之后才能获取当前值
--查看当前序列的值
select my_sequence.currval from dual;
--获取序列的下一个值
select my_sequence.nextval from dual;
insert into emp(empno,ename) values(my_sequence.nextval,'hehe');
--查看序列状态
select seq_empcopy_id.currval from dual
--删除序列
 drop sequence seq_empcopy_id;

SQL数据更新

Sql的数据更新包括数据插入、删除和修改3个操作.
▪ 往表中插入数据的语句是insert语句,方式有两种,一种是元组 值的插入,一种是查询结果的插入
1.新增语法
  • 元组值的插入语法如下:
INSERT INTO table [(column [, column...])] VALUES (value [, value...]);
INSERT INTO "SCOTT"."EMP" ("EMPNO", "ENAME", "JOB", "MGR", "HIREDATE", "SAL", "COMM", "DEPTNO") VALUES ('7369', 'SMITH', 'CLERK', '7902', TO_DATE('1980-12-17 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), '800', NULL, '20');
  • ert语句把一个select语句的查询结果插入到一个基本表中,语法如下

Insert into tablename(column,..)  select * from tablename2

--复制表结构和数据,不复制约束
CREATE TABLE TEMP AS SELECT * FROM EMP;
CREATE TABLE EMP4 AS  SELECT * FROM EMP WHERE 1=1
--只复制表结构,不复制数据和约束
CREATE TABLE EMP3 AS  SELECT * FROM EMP WHERE 1=2

2.删除语法

SQL的删除操作是指从基本表中删除元组,语法如下:
DELETE [FROM]  table  [WHERE condition];
▪ 其语义是从基本表中删除满足条件表达式的元组
▪ Delete from table 表示从表中删除一切元组  
▪ 如果想从表中删除所有的行,不要使用delete,可使用truncate table 语句, 完成相同的工作,但是速度更快(没有事务)。
--DELETE语法
--删除所有表数据
DELETE FROM EMP4;
--删除部分表数据,撒谎才能胡部门编号位10 的所有数据
DELETE EMP1 WHERE DEPTNO =10
--TRUNCATE 这个是永久删除,没有事务,用这个比较危险,需要慎重使用
TRUNCATE TABLE  EMP1;

3.更新语法

Update语句用于修改基本表中元组的某些列,其语法如下:
UPDATE table SET column = value [, column = value] … [WHERE condition];
▪ 其语义是:修改基本表中满足条件表达式的那些元组的列值,需 修改的列值在set子句中指出。
--UPDATE 
--更新单个列的NEIRONG
UPDATE EMP SET ENAME='蓝胖次' WHERE EMPNO=7369;
--更新多字段
UPDATE EMP SET ENAME='蓝胖次',JOB='' WHERE EMPNO=7369;

--DML:数据库操作语言
--增
--删
--改
/*
插入操作:
  元组值的插入
  查询结果的插入
*/
--最基本的插入方式
--insert into tablename values(val1,val2,....) 如果表名之后没有列,那么只能将所有的列都插入
--insert into tablename(col1,col2,...) values(val1,val2,...) 可以指定向哪些列中插入数据
--但要求省略的列必须满足下面的条件:
--1.该列定义为允许Null值。
--2.在表定义中给出默认值,这表示如果不给出值,将使用默认值。
-- 如果不符合上面两个条件,将会报错。不能成功插入。

insert into emp values(2222,'haha','clerk',7902,to_date('2019-11-2','YYYY-MM-dd'),1000,500,10);
select * from emp;
--向部分列插入数据的时候,不是想向哪个列插入就插入的,要遵循创建表的时候定义的规范
insert into emp(empno,ename) values(3333,'wangwu')

--创建表的其他方式
--复制表同时复制表数据,不会复制约束
create table emp2 as select * from emp;
--复制表结构但是不复制表数据,不会复制约束
create table emp3 as select * from emp where 1=2;

/*
删除操作:
 delete from tablename where condition

*/
--删除满足条件的数据
delete from emp2 where deptno = 10;
--把整张表的数据全部清空
delete from emp2;
--truncate ,跟delete有所不同,delete在进行删除的时候经过事务,而truncate不经过事务,一旦删除就是永久删除,不具备回滚的操作
--效率比较高,但是容易发生误操作,所以不建议使用
truncate table emp2

/*
修改操作:
   update tablename set col = val1,col2 = val2 where condition;
   可以更新或者修改满足条件的一个列或者多个列
*/
--更新单列
update emp set ename = 'heihei' where ename = 'hehe';
--更新多个列的值
update emp set job='teacher',mgr=7902 where empno = 15;
一次插入操作只插入一行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值