zoukankan      html  css  js  c++  java
  • DML操作(新增、更新、查询、伪列)

     

    创建表:

    CREATE TABLE <table_name>(

    column1 DATATYPE [NOT NULL] [PRIMARY KEY],

    column2 DATATYPE [NOT NULL],

    ...

    [constraint <约束名> 约束类型 (要约束的字段)

    ... ] );

    create table t_student(
      s_id number(8) PRIMARY KEY,
      s_name varchar2(20) not null,
      s_sex varchar2(8),
      clsid number(8),
      constraint u_1 unique(s_name),
      constraint c_1 check (s_sex in ('MALE','FEMALE'))
    );

     

    从现有的表创建表及复制其数据

      CREATE TABLE <table_name> as <SELECT 语句>

    create table emp as select * from scott.emp;
    
    create table emp as select empno,ename from scott.emp --表结构只有empno和ename两个字段及该两字段对应的数据
    
    --如果只复制表的结构不复制表的数据则:
    create table emp as select * from scott.emp where 1=2;

     

     

    修改表:

    1、添加字段:

    ALTER TABLE <table_name> ADD (字段1 类型 [NOT NULL],   字段2 类型 [NOT NULL] ... );  

    alter table t_student add (s_age number(3),s_address varchar2(20));

    2、修改字段:

    ALTER TABLE <table_name> MODIFY(字段1 类型,字段2 类型 ... );

    alter table t_student modify(s_name varchar2(50),s_address varchar2(100));

    3、删除字段:

    ALTER TABLE <table_name> DROP(字段1,字段2... );

    alter table t_student drop(s_age,s_address);

    4、修改字段名称:

    ALTER TABLE <table_name> RENAME COLUMN 原字段名称 TO 新字段名称;

    alter table t_student rename column s_id to s_no;

     

     

    删除表:

    删除表结构及数据(删除后可在回收站查看并恢复)

    DROP TABLE <table_name>;

    删除表结构及数据(删除后不可在回收站查看并恢复)

    DROP TABLE <table_name> PURGE;

     

     

    查看回收站:

    show recyclebin; 或 select * from recyclebin;

     

    清空回收站:

    purge recyclebin;

     

     

    新增:

    INSERT INTO table_name (column1,column2,...)   VALUES ( value1,value2, ...);

    insert into emp (empno,ename) values(1111,'itcast');

    INSERT INTO <table_name> <SELECT 语句>;

    create table t1 as select * from emp where 1=2;
    insert into t1
    select * from emp where sal>2000;

    修改:

    UPDATE table_name SET column1=new value,column2=new value,...    WHERE <条件>;

    update emp set sal=3000 where ename='xxx';

    查询:

    伪表:dual是一个虚表,用来构成select的语法规则,Oracle保证dual里面永远只有一条记录

    查看当前用户:

    select user from dual;

    用来调用系统函数:

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    得到序列的下一个值或当前值

    --获得序列seq的下一个值
    select seq.nextval from dual;
    
    --获得序列seq的当前值   
    select seq.currval from dual;

    可以用做计算器

    select 2*8 from dual;

    rowid是物理结构上的,在每条记录insert到数据库中时候,都会有一个唯一的物理记录,通一条记录在不同查询中对应的rowid相同

    SELECT ROWID,字段名... FROM 表名;

    select rowid, emp.* from emp;

    伪列:rownum是根据sql查询出来的结果每行分配一个逻辑编号,每次的查询都会有不同的编号,编号从1开始

    SELECT ROWNUM,字段名... FROM 表名;

      ROWNUM 不能使用大于号“>”     

      select rownum, emp.* from emp where rownum > 2 是不对的,没有任何结果

    select rownum, emp.* from emp;

    分页:

    select * from (select rownum r,emp.* from emp where rownum < 7) where r > 3;

    排序:

    select rownum,t.* from (select empno,ename from emp order by empno desc) t;

     

     

     

                                          

     

  • 相关阅读:
    MySQL全面瓦解20:可编程性之流程控制语句
    MySQL全面瓦解19:游标相关
    MySQL全面瓦解18:自定义函数
    MySQL全面瓦解17:触发器相关
    MySQL全面瓦解16:存储过程相关
    MySQL全面瓦解15:视图
    MySQL全面瓦解14:事务
    MySQL全面瓦解13:系统函数相关
    MySQL全面瓦解12:连接查询的原理和应用
    MySQL全面瓦解11:子查询和组合查询
  • 原文地址:https://www.cnblogs.com/lzb0803/p/9096900.html
Copyright © 2011-2022 走看看