美文网首页
常用 SQL

常用 SQL

作者: 半碗鱼汤 | 来源:发表于2019-08-21 21:20 被阅读0次

新建表

-- 新建表
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;

相关文章

网友评论

      本文标题:常用 SQL

      本文链接:https://www.haomeiwen.com/subject/cilwsctx.html