oracle的表操作

      oracle的表操作

表操作案例:

      原始表   

学生表:

create table students(

  studentId  number,

  name   varchar2(64),

  sex     nvarchar2(1),

  birthday  date,

  fellowship number(10,2),

  resume clob

);

班级表:

create table class_(

  id number,

  name varchar2(32)

);

     表管理

//添加一个新的字段

 alter table 表名 add (新的列名 列名的数据类型);

//修改字段的类型

 alter table 表名

 modify  (columnname dataType);

//删除一个字段

 alter table 表名

 drop column(column)

//给表修改名字

rename 旧表的名字 to 新的名字

  实际操作

 1.给学生表添加班级编号

      alter table students add (classId number);

2.把学生姓名 变成  varchar2(30)

  alter table students modify(name varchar2(30));

3.删除学生表的 fellowship 字段

  alter table students drop column fellowship;

4.把学生表名student 改成stu

  rename student to stu;

5.删除stu

  drop table stu 

 

    表管理(crud)

  insert语句

    语法:

    INSERT  INTO  table [(column[, column…])]  VALUES (value[ , value…]);

    限制:

 

      (1)插入的数据应与字段的数据类型相同。

  (2)数据的大小应在规定的范围内,例如:不能将一个长度为

    80的字符串加入到长度为40的列中。

      (3) 在values中列出的数据位置必须与被加入的列排列位置相对应。

      (4) 字符类型与日期类型包含在单引号中。

      (5)插入空值,不指定或insert into value(null);

  拓展:

 

      如何一次添加多条数据?

      在sql server 中 可以通过 insert into table

                                select  字段值列表  union

                                select  字段值列表  union

                               select  字段值列表

      但数据库之间存在差异:

          oracle:

          

                    方法1:

                                    insert into 表名

                                             select       字段值列表  from dual

                                             union

                                               select       字段值列表  from dual

                            方法2:

                                     insert  all  into  表名

                      values(字段值列表)  into 表名

                                           values(字段值列表)  into 表名

                               select  1  from  dual

         

  update语句  

    语法:

       UPDATE  table  SET  column_name = expression[ , column_name = expression …]

         [WHERE where_definition]

    拓展:

       oracle怎么判断字段为空?

       字段值 = null;    --条件没成立

       字段值 is null;    --成功

       

  delete语句

       语法:

           DELETE FROM table [WHERE where_definition]

      删除的几种方法比较:

  

       delete from 表名:

    删除所有记录,表结构还在,写日志,可以恢复,数据慢

         drop  table  表名:

                              删除表的结构和数据

             truncate table 表名:

                              删除表中的所有记录,表结构还在,不写日志,无法找到删

               除的记录,速度快

      --------------------------------------

      实现原理:在删除数据前,保存节点(savepoint xx),在删除之后,可以通过

    回滚(rollback xx)之前节点恢复数据

     

  select语句

     语法:

         SELECT [distinct] * | {column1,column2,column3…}

           FROM table  [WHERE where_definition]

                ---------------------------------

                   distinct:过滤掉重复的数据

   where子句:

      如何比较日期?

      查询入职日期在1980-1-1之后的员工

      select * from emp where hiredate > ‘’1980-1-1”;  --失败

      证明:日期类型不能与字符串类型比较

      解决:

                   select * from emp where to_char( hiredate,’yyyy-mm-dd’) > ‘’1980-1-1”;

           在数值之间比较的两种方法:

          方法1:select * from emp where sal > 1000 and sal < 2000;

          方法2:  select * from emp where between 1000 and 2000;

   like运算符:

       %:表示任意0到多个字符

       _ : 表示任意单个字符

 

       案例:

         1.查询首字符为S的员工姓名和工资

                            select ename,sal from emp where ename like ‘S%’;

         2.查询第三个字符为大写的O的所有员工的姓名和工资

                    select ename,sal from emp shere ename  like ‘__O%’;

 

  in 的使用:

     查询员工号是7499,7521,7832的员工?

   (1) select * from emp where empNo = 7499 or empNo = 7521 or empNo =7832

   (2) select * from emp where empNo in (7499,7521,7832);

  

       

   拓展: 

 

        sal:工资  comm:奖金

    1.  查询雇员的年工资:

       select  sal * 13 +nvl(comm,0)*13   from emp;

       -----------------------------------------

  说明:当奖金为NULL时,它与任意数运输最终都会是NULL,

    这样不仅没有求到工资和,而且还没有了基本工资。

        解决:nvl,oracle提供的函数,当comm为空时,用0代替,如果

                             不是的,原数还原

  

       2.  ||的使用

                      需求:将多列拼接起来作为一列处理

                      例子:

                             select ename || '是一个' || job from emp;

           截图:

                

原文地址:https://www.cnblogs.com/w-gao/p/7280995.html