新建表
-- 新建表
CREATE TABLE "模块名"."表名" (
"字段名1" NUMBER NOT NULL,
"字段名2" VARCHAR2 ( 50 ),
"字段名3" NUMBER,
"字段名4" DATE,
PRIMARY KEY ( "字段名1" ) ); -- 主键
索引
-- 新建索引
CREATE INDEX "模块名"."索引名" ON "模块名"."表名" ( "字段名" );
-- 查看表的所有索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and
t.table_name='你的表名';
新建注释
-- 新建字段注释
COMMENT ON COLUMN "模块名"."表名"."字段名" IS '主键 ID';
COMMENT ON COLUMN "模块名"."表名"."字段名" IS '分类名称';
-- 新建表注释
COMMENT ON TABLE "模块名"."表名" IS '分类表';
序列
-- 新建主键自增序列
CREATE SEQUENCE 序列名
START WITH 1 -- 表示从1开始自增
INCREMENT BY 1 -- 表示步长为1,如果为2就每次加2
MAXVALUE 9999 -- 表示最大值,此行可以不写,无限下去
NOCYCLE -- 表示不循环
-- 去序列的值
"模型"."序列名".NEXTVAL
增加列
-- 给表加一列
ALTER TABLE "模块名"."表名" ADD( "字段名" varchar2(20) ) ;
-- Oracle 中修改列名不可以,但是可以删除列,增加列
ALTER TABLE "模块名"."表名" DROPCOLUMN "字段名"
ALTER TABLE "模块名"."表名" ADD( "字段名" varchar2(20) )
删除表
-- oracle中删除一个表的语句如下:
-- 首先你有drop的权限。
-- drop table 用户表名 ;
-- 举例 :
drop table scott.tableA;
-- 有外键约束的话是删不掉的。
复制表
-- 复制一张表
create table new_tabel as select * from old_table;
新建或修改视图
-- 新建或修改视图
create or replace view view_user_role as
select * from user_role;
去重
select distinct cum_name from table_name
查询前10条记录
select * from table_name where rownum < 11;
通过日期年份进行分组
select to_char(createtime,'yyyy'),count(*) from table_name group by to_char(createtime,'yyyy') ;
查询 case 字段不重复的记录
SELECT
CASENUM
FROM
你的表
WHERE
CASENUM NOT IN ( SELECT
CASENUM
FROM
你的表
GROUP BY
CASENUM
HAVING
COUNT(CASENUM) > 1 )
查询的时候想让某个字段始终为空或为固定的值
-- 原本为
select t.c1,t.c2 from myTable t;
-- 现在想让 c2 始终为空
select t.c1,null as c2 from myTable t;
排序
-- 通过 table1 的 col1 来排序,col1 是字符串,我们可以定义他的排序
select distinct col1 from table1 order by decode(col1,'开始',0,'过程',1,'结束',2);
-- 通过id升序,再通过createtime降序
-- DESC 是降序,ASC 是升序
select * from 表名 order by id asc,createtime desc;
网友评论