美文网首页
常用 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