一、SQL语句
1.增
(1)添加表的所有列的值
insert into 表名 values(值1,值2,......);
(2)添加表的部分列字段的值
insert into 表名(列1,列2,......)values(值1,值2,......);
(3)添加查询到表中的所有值
insert into 表2 select * from 表1;
(4)添加主键自增列
insert into 表名 values(trim(to_char(SEQWQMASTERQ.Nextval,'00000000'),值2,......);
就是将这个序列值的格式转换为字符,格式为'00000',例如'00006',trim()函数就是用于除字符串的行首和行尾的空格。
2.删
delete from 表名 where 列名 = '值';
3.改
update 表名 set 列名 = '要改的值' where 列名='条件值'
4.查
(1)内连接查询
select * from 表名1 inner join 表名2 on 表名1.a=表名2.a;
select * from 表名1,表名2 where 表名1.a=表名2.a;
(2)左连接查询
select a.*,b.* from a left join b on a.id=b.parent_id;
(3)右连接查询
select a.*,b.* from a right join b on a.id=b.parent_id
二、对表的操作
1.创建表
-- Create table
create table TS_GIFTPLAN_CONDITION_HIST
(
--primary key添加主键
insertid VARCHAR2(64) primary key,
--default sysdate默认时间值
insertdt DATE default sysdate,
insertusr VARCHAR2(32),
--not null此字段不允许为null
plancode VARCHAR2(32) not null,
conditionid VARCHAR2(32) not null,
conditiondesc VARCHAR2(256),
premium VARCHAR2(2),
amount VARCHAR2(2),
brand VARCHAR2(2),
insur VARCHAR2(2),
maxpromotioncost VARCHAR2(32),
maxpromotioncnt VARCHAR2(32)
)
tablespace APP_PICCTSDB ----表放在APP_PICCTSDB表空间
pctfree 10 ----保留10%空间给更新该块数据使用
initrans 1 -----初始化事物槽的个数
maxtrans 255 ----最大事务槽的个数
storage ----存储参数
(
initial 128K ---区段一次扩展128k
next 1M
minextents 1 ---最小区段数
maxextents unlimited --最大区段无限制
);
-- Add comments to the columns 为"maxpromotioncnt"字段添加备注
comment on column TS_GIFTPLAN_CONDITION_HIST.maxpromotioncnt
is '礼品最大点选数量';
-- Create/Recreate indexes 为"INSERTID"字段添加普通索引
--create index 索引名 on 表名(字段名)
create index IDX_TGPCH_INSERTID on TS_GIFTPLAN_CONDITION_HIST (INSERTID);
2.删除表
(1)drop table 表名;
作用:删除内容和定义,释放空间,表结构也会删除;
(2)truncate table 表名;
作用:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据而已,不删除表结构。truncate 释放空间的体现。
truncate table 表 后 向test表添加数据,id标识列连续了(体现了truncate删除是释放空间)插入的字段的id重新从1开始递增 1、2、3.....
(3)delete table 表名;
作用:删除整个表中的数据 表结构不会删除,但是过程是痛苦的(系统一行一行地删,效率较truncate低) 或delete table tb where 条件
删除内容不删除定义,不释放空间。用delete删除 数据,然后添加。可以看到添加之后id标识不连续。(说明delete删除不释放空间)
如果重新插入数据时对应的id在上次基础之上递增 4、5、6....
3.修改表名
(1)在原表上修改表名
alert table 旧表名 rename to 新表名;
(2)建新表2,将原表1的数据导进去;
create table 表2 as select * from 表1;//在原表的基础上建立新表
drop table 表1;//删除原表
4.查询表是否存在
(1)当前用户bai下是否有某个表
select count(*) from user_tables where table_name = '表名';
(2)某个用户下是否有某个表
select count(*) from dba_tables where owner = '某个用户名' and table_name = '表名';
三、列操作
(增加新列并添加备注)
ALTER TABLE TS_APPLYHIST ADD IDTYPE VARCHAR2(32);
comment on column TS_APPLYHIST.IDTYPE
is 'Id类型';
修改已存在的列属性
alter table 表名 alter column 字段bai 字段属性 not null;
--修改列属性
alter table ts_customerlabel modify contacthistcode null;
四、索引
1.查看表中的索引
(1)查看oracle单个数据表包含的索引
select * from user_indexes where table_name=upper('ts_insurinfo');
upper这个函数是将小写转换成大写。
第二个参数是索引的名字必须大写。
(2)根据索引名查看索引包含的字段
select * from user_ind_columns where index_name = 'INDEXS_NAME';
索引名大写或者通过upper函数转换成大写。
2.
3.创建索引
--普通索引 create index 索引名 on 表名(字段名)
create index TS_INSURINFO_STARTDATE on TS_INSURINFO (STARTDATE);
--唯一索引 create unique index 索引名 on 表名(字段名)
create unique index idx_t_uniid on t(data_object_id)
五、类型转换