表的基本操作:数据的增、删、改、查
增
语法格式:
insert into [方案名].表名 [列名] values(值);
[]里面的可写可不写,需要注意的是,如果列名没写,则插入记录的值的顺序要与表的列名的顺序一致。
当列名不止一个时,
insert into [方案名].表名
(列名1,列名2,列名3,···,列名n)
values
(值1,值2,值3,···,值n);
如何复制一个表
1.直接复制
create table 新建的表的名字 as select * from 要复制的表的名字;
2.先创建新表,再把要复制的表的内容复制过去
//创建表
create table 表名
(
列名1 类型1(值) [约束条件],
列名2 类型2(值) [约束条件],
··········,
constraint 主键名 primary key(列名)
);
//复制表
insert into 新表的名字 select * from 旧表的名字;
//如果新建的表的列名的顺序与旧表的顺序不一致,则使用这条语句
insert into 新表的名字
(列名1,列名2,···,列名n)
select 列名1,列名2,···,列名n from 旧表的名字;
当我们需要同步多张表时,发现上述语句无法执行,则需要用到merge(合并)语句。
语法格式
merge into 表2 //表2为需要同步的表
using 表1 on(表2.列名1=表1.列名1) //表1为源表
when matched then
update set 表2.列名2=表1.列名2,表2.列名3=表1.列名3 //set后面的字段不能加上on后面的字段
when not matched then
insert (列名1,列名2,列名3,···) //如果两张表的字段名的顺序一致,insert后面的列名可省略不写
values (表1.列名1,表1.列名2,表1.列名3,···); //两张表的字段的顺序要一致
删
1.使用delete语句删除表中的记录
//删除全部记录
delete from 表名;
//删除某条记录
delete from 表名
where 条件;
2.使用truncate语句删除表中的记录
truncate table 表名;
两者的区别 :delete可删除指定的某条记录,也可删除全部记录,删除效率较低;truncate只能删除全部记录,效率高。
改
//修改一个值
update 表名或视图名
set 字段名=字段值
where 条件;
//修改同一条记录中的多个值
update 表名或视图名
set
字段名1=字段值1,字段名2=字段值2,···,字段名n=字段值n
where 条件;
加上where条件,则是对表中指定的记录修改。
修改默认值
1.创建表时添加
create table 表名
(
列名 列的类型(长度) default 值[,列名n 列的类型(长度) default 值]
)
2.修改表时添加
alter table 表名
add
(
列名 列的类型(长度) default 值[,列名n 列的类型(长度) default 值]
)
3.修改原有的列的默认值
alter table 表名
modify 列名 default 值;
查
查询表
//查询表中所有的字段
select * from 表名;
//查询表中指定的字段
select 列名1,列名2 from 表名;
索引
作用 :提高查询速度
创建索引
1.创建表时创建索引
create [unique∣bitmap] index [方案名.]索引名称 //unique∣bitmap为索引类型
on [方案名.]表名(列名,···,n) | cluster [方案名.]簇名
[initrans 整数] --分配给表的事物条目的初始值
[maxtrans 整数] --事物的最大并发数
[pctfree 整数] --为将来更新表所保留的百分比
[pctused 整数] --维持表的每个数据块已用空间的百分比
[tablespace 表空间名] /*索引所属表空间*/
[storage storage_clause] /*为索引建立存储特征*/
[nosort] /*数据库中的行以升序保存,在创建索引时不必对行排序。*/
[reverse] /*指定以反序索引块的字节,不包含行标识符*/
2.使用SQL developer图形化工具创建索引(略)
索引重命名
alter index 原索引名
rename to 新索引名;
删除索引
drop index 索引名;