orace表基本操作sql语句记录
1、修改表注释、字段注释
comment on table 表名 is '注释内容'
comment on column 表名.字段名 is '注释内容'
2.删除某一列
alter table tableName drop column columnName;
3.增加一列
alter table tableName add columnName dataType;
例如:
alter table CIF_FROZEN_JNL add POINT_ACCT_DETAIL_ID VARCHAR(32);
3.1增加一列 带默认值、且非空
alter table tableName add columnName dataType default 'N' not null;
eg:
alter table DEPT_ACCT add CURRENT_STATE VARCHAR(2) default '00' not null;
4.修改列为可空、修改列为不可空
alter table tableName modify columnName dataType NULL;
alter table tableName modify columnName dataType NOT NULL;
5.找出带有列名为ACCESS_JNL_NO的表名,并且将这些列字段长度由32修改为64:
select table_name from USER_TAB_COLS where column_name = 'ACCESS_JNL_NO'
select ' alter table ' || table_name || ' modify ' || column_name || ' VARCHAR(64);' from USER_TAB_COLS where column_name = 'ACCESS_JNL_NO'
USER_TAB_COLS: 可以通过USER_TAB_COLS查看当前账号所有的表和视图,以及对应的列信息。
USER_TAB_COLUMNS 视图提供当前用户拥有的表和视图中的所有列的信息。
USER_TAB_COMMENTS视图提供当前用户定义的表和视图中注释相关的信息。
USER_TAB_COLUMNS是Oracle数据库中的一个系统视图,它提供关于用户拥有的表(包括视图和索引)的列信息。 该视图以字段列名表示,每行对应于给定表中的一个列。
该视图可以使用此类查询来检索列信息:
SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ‘TABLE_NAME’;
此查询将返回表名为TABLE_NAME的所有列信息,其中包括每列的名称、数据类型、大小、默认值等等。 此外,可以使用此查询过滤出拥有特定类型列的表:
SELECT * FROM USER_TAB_COLUMNS WHERE DATA_TYPE=’DATE’;
此查询将返回拥有日期(DATE)类型的所有列的信息。
6.Oracle基于SQL的不重复计数实现
SELECT DISTINCT 姓名 FROM students;
SELECT COUNT(DISTINCT 姓名) AS “不重复姓名数” FROM students;
7.找出重复的记录
--查询重复的商户,带上rowid
select rowid, * from MKT_MERCHANT_INFO where MERCHANT_NO in
(select MERCHANT_NO from MKT_MERCHANT_INFO group by MERCHANT_NO having count(*) > 1)
order by MERCHANT_NO;
--找出商户表中重复记录的最小rowid的那条记录
select min(rowid) from MKT_MERCHANT_INFO group by MERCHANT_NO having count(*) > 1;
--找出待删除的重复商户的记录,rowid非最小的那条
select * from MKT_MERCHANT_INFO
where MERCHANT_NO in
(select MERCHANT_NO from MKT_MERCHANT_INFO group by MERCHANT_NO having count(*) > 1)
and rowid not in
(select min(rowid) from MKT_MERCHANT_INFO group by MERCHANT_NO having count(*) > 1)
--上面sql执行后,删除这些重复的商户记录
--验证,总条数和不重复商户号的条数一致,就代表没有重复的商户记录了
select count(*) from MKT_MERCHANT_INFO;
select count(distinct MERCHANT_NO) from MKT_MERCHANT_INFO
8.删除索引
drop index index_name
--