删除一条记录
语法:
delete from 表名;=========》删除表中所有记录
delete from 表名 where 条件=====》删除表中单条记录
删除test表中编号为2的记录;
delete from test where id = 2;
删除test表中所有记录;
delete from test;
级联删除
主表:
create table test1(
t1_id number primary key
);
子表:
create table test2(
t2_id number primary key,
id number references test1(t1_id)
);
给级联表增加记录时必须按顺序增加
主表增加记录:
insert into test1 values(1);
insert into test1 values(2);
insert into test1 values(3);
子表增加记录
insert into test2 values(1,1);
insert into test2 values(2,2);
删除test1表中编号为1的记录;
deltet from test2 where t2_id=
delete from test1 where t1_id = 1;
级联删除属性 on delete cascade
create table test3(
t3_id number primary key
);
create table test4(
t4_id number primary key,
id number references test3(t3_id) on delete cascade
);
insert into test3 values(1);
insert into test3 values(2);
insert into test4 values(1,1);
insert into test4 values(2,2);
delect from test3 where t3_id =1;
级联删除并设置默认值(字段值设计为空)on delete set null
create table parent(
p_id number primary key
);
create table child(
c_id number primary key,
id number references parent(p_id) on delete set null
);
insert into parent values(1);
insert into child values(1,1);
delete from parent where p_id =1;
CRUD 包括:增、删、改、查
create table test(
id number,
name varchar2(32)
);
增加记录:
语法:
1、insert into 表名 values(所有值);
2、insert into 表名(字段名) values(值);
insert into test values(1,'11');
insert into test(id,name) values(2,'22');
insert into test(name,id) values(4,'44');
复制一张表(结构复杂)
语法:create table 表名 as select * from 表名 where 1!=1;
create table test1 as select * from test where 1!=1;
更改:
语法:update 表名 set 字段=值,字段=值...... where 条件
更新test表中编号为1的记录
update test set name='aaaa' where id = 1;
删除{一般删除、级联删除}
数据库事务
存款和取款
commit数据提交
回滚操作必须在事物提交前操作
rollback回滚========>上一操作
savepoint 名字; ===========》设置保存点
rollback to 保存点名字=====》保存点的操作
create table test(
n number
);
insert into test values(1);
select * from test;
rollback;
insert into test values(1);
select * from test;
commit;
insert into test values(100);
savepoint a100;
insert into test values(1000);
savepoint a1000;
insert into test values(10000);
savepoint a10000;
rollback to a100;
修改表、表结构
修改 alter
增加字段:
语法:alter table 表名 add(字段名 字段类型);
增加字段的关键字:add
给test表中添加一个name字段
alter table test add(name varchar2(32));
删除字段
语法:alter table 表名 drop(字段名);
删除test表中name字段
alter table test drop(name);
更改一个字段:
语法:alter table 表名 modify(字段名 更改类型);
将test表中的name字段类型改为number;
alter table test modify(name number);
增加约束
增加主键约束
语法:alter table 表名 add constraint 主键名称 primary key(字段名);
给test表中n字段增加主键
alter table test add constraint test_pk_01 primary key(n);
删除约束
删除主键约束
语法:alter table 表名 drop constraint 约束名字
将test表中的约束删除
alter table test drop constraint test_pk_01;
删除表
语法:drop table 表名
删除test这张表
drop table test;
oracle 9g之前是不可更改
更改表名
语法:rename 原有表名 to 将在更改的表名
rename test to test01;
删除大量数据
语法:truncate table 表名
删除test01表中的数据
truncate table test01;
序列:sequence
新建序列
create sequence 序列名称
[
increment by n步长
start with n开始值
maxvalue n | nomaxvalue 设置最大值或者无限大
minvalue n | nominvalue 设置最小值或者无限小
cycle | nocycle是否轮回
cache n | nocache 缓存
]
nextval ==================》取sequence的下一个值
cruuval ==================》取sequence的当前值
create table test(
id number primary key,
name varchar2(32)
);
insert into test values(1,'aa');
insert into test values(2,'dd');
新建序列
create sequence my_sequ;
select my_sequ.nextval from dual;
delete from test;
insert into test values(my_sequ.nextval,'cc');
新建序列
create sequence my_seq1 increment by 10 start with 20;
select my_seq1.nextval from dual;
insert into test values(my_seq1.nextval,'cc');
删除序列:
语句:drop sequence 序列名称
drop sequence my_seq1;
使用视图优势:
1、简化SQL语句
2、控制数据访问
视图:
新建视图
语法:create view 视图名称 as 具体的操作
一般视图:
create view my_view as select * from test;
复杂视图:
create view my_view as select s_a.last_name,s_b.last_name from s_emp s_a left outer join s_emp s_b on s_a.id = s_b.manager_id;
查看视图
select * from my_view;
删除视图
语法:drop view 视图名称
使用索引的优势:
1、查询多、增删改少
2、数据量大的时候才会用索引
索引:
唯一索引:
一般索引:
创建索引:
唯一索引语法:create unique index 索引名
一般索引语法:create index 索引名
新建表
create table test(
id number
);
给test表中的id增加索引
create unique index my_index on test(id);
给test表中的name增加索引
create index my_index on test(name);
删除索引
语法:drop index 索引名;
查看数据库中所有的索引
select * from user_indexex;
select index_name from user_indexex;