Oracle DML(数据库操作语言)

Oracle DML(数据库操作语言)

drop table person;
create table person(
    id number(10) primary key,--主键约束
    name varchar2(200) not null,
    gender number(1) default 1,
    constraint person_name unique(name),--非空唯一约束
    --检查约束
    constraint person_gender check(gender in (1,2)) 
);

添加数据

--Oracle数据库中字符串类型使用的是单引号(‘’), mysql中的字符串可以使用单引号和双引号.
--Oracle数据库没有自增长的语句,要实现序列排序需要借助序列对象.
--在 Oracle 数据库中,一个 insert 语句就只能够插入一条数据。
 insert into 表名(列名…) values(值…); 
insert into person (id,name,gender) values (1,'aaa',2);
insert into person (id,name,gender) values (2,'bbb',1);

commit;

select * from person;

复制数据

insert into 表名
select 列名1,列名2... from 表名;
-- 复制数据的时候,两张表的字段数量和类型必须要相同。
--只复制表的结构
create table person_bak
as
select * from person where 1=2; 

--复制数据
insert into person_bak
select id, name, gender from person;


select * from person_bak;

--和以上效果一样
--创建一个 emp 表的备份表(复制表的结构和数据)
create table person_bak
as
select * from person;

修改数据

update 表名
set1=值1, 列2=值2, …
where 条件;
--更新
update person 
set name='aaaa' 
where id=2;
commit;

select * from person;

删除数据

delete from 表名 where 条件;(删除指定的数据)
delete from 表名;(删除表中的所有数据,但是不摧毁表结构)
--删除
delete from person where id=2;--删除某一个
commit;

--全表删除:
delete from person;-- 全删:它能够回滚,但是用它全删除有可能会出现碎片

truncate table person; -- 摧毁表结构,再重新创建表,效率很高,但是它不能回滚

--delete 语句是先查询在删除; truncate 是先摧毁表的结构,再重建表结构。数据大时,truncate效率高

你可能感兴趣的:(Oracle)