(day5)表的建立与删除


删除一条记录
语法:
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值