OracleDBA表管理

前端之家收集整理的这篇文章主要介绍了OracleDBA表管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是Oracle表管理的部分,用到的测试表是oracle数据库中scott用户下的表做的测试,有的实验也用到了hr用户的数据,以下这些东西是我的麦库上存的当时学Oracle的学习笔记今天拿出来和大家分享一下,转载请注明出处,下面用的Oracle的版本是10g,用的时WinServer2003的操作系统,可能有些命令和Oracle11g的有所不同,但大部分是一样的,接下来还会陆续的分享一下Oracle中对数据库的管理,对表的管理,还有Oracle中的存储过程和PL/sql编程。用到的Oracle的管理工具是PL/sql Developerl和sql PLUS,欢迎大家批评指正。  1.必须以字母开头
  3.不能使用oracle的保留字命名

2.oracle的数据类型

    char 定长 最长2000字符(因为是定长的,在做查询时是多位同时比较,其好处是查询速度特快)

      demo:varchar2(10) 存放‘ab’,就占2个字符;
    clob(character large object) 字符型大对象,最大是4G
  2.数字类型:
    number(5,2)表示有5位有效数字,两位小数;范围 -999.99 -- 999.99

    date 包括年月日和时分秒
    在oracle中默认的日期格式是“DD-MON-YY” 如“01-5月-1992”,如果没有月则添加不成功;
altersessionsetnls_date_fomat="yyyy-mm-dd";

  4.大数据(存放媒体)

3.oracle中创建表


1sql>createtablestudent(--创建名为student的数据库表2  namevarchar2(20),--名字10个变长3  idcarchar(18),--身份证18个定长字符4  sexchar(2),--性别2个定长字符5  gradenumber(5,2)--成绩为浮点数,有效5位小数位为2位;6)


4.oracle中往已有的表中新增列;


sql>altertablestudentmodify(namevarchar2(10));

6.删除表中的已有字段

7.表的重命名
sql>renamestudenttostd;

  1.省略字段名
sql>insertintostudentvalues('name','231','男',234.89);

  2.给部分字段赋值
sql>insertintostudent(name,idcar)values('TOM','123');

  3.查询idcard字段为空的学生
sql>select*fromstudentwhereidcardisnull;

10.修改表中的数据:




sql>updatestudentsetname='cat'whereid=1;


11.oracle中的回滚:(要养成创建保存点的习惯)--commit后所有的保存点都没有了



  1.emp表中的内关联查询:给出每个雇员的名字以及他们经理的名字,使用表的别名;

sql>selectdistinctemp.job,emp.mgrfromemp;

  3.查询SMITH的薪水,职位和部门:

sql>settimingon;

 

  6.模糊查询like %代替多个字符,_代替一个字符;
select*fromempwhereemp.enamelike'S%';

  8.查询工资高于500或者是岗位是manager同时名字以J开头的雇员
sql>select*fromempwhere(emp.sal>500oremp.job='MANAGER')andemp.enamelike'J%';

 

  11.使用列的别名排序:按年薪降序(desc)
sql>selectemp.sal*12"年薪"fromemporderby"年薪"desc;

数据的分组――――min,max,avg,sum,count;
  1.查询员工的最高工资和最低工资; min()和max() 的使用
selectmax(sal)"最高工资",min(sal)"最低工资"fromemp;

  2.查询所有员工的工资总和和平均工资 sun() 和 avg() 的使用;
sql>selectsum(sal)"工资总和",avg(sal)"平均工资"fromemp;

  3.查询员工的总人数:
sql>selectcount(*)fromemp;

  4.把最高工资的员工的信息输出(用到了子查询)

  5.显示工资高于平均工资的员工信息:
sql>select*fromempwheresal=(selectmax(sal)fromemp);//ERROR不能使用分组函数 error:select*fromempwheresal=max(sal);--error;error:selectename,max(sal)fromemp;-error;

   

group by 和 having子句
  having子句用于限制分组显示结果






  3.显示平均工资小于2000的部门号和他们的平均工资:
sql>selectemp.deptno,avg(sal)fromempgroupbyemp.deptnohavingavg(sal)<2000; DEPTNOAVG(SAL)----------------301566.66666

分组函数只能出现在选择列表,having,order by子句中

  1.显示雇员名,雇员工资,所在部门名称

  2.显示部门号为10的雇员名,雇员工资,所在部门名称


sql>selectemp.ename,emp.sal,salgrade.gradefromemp,salgradewhereemp.salbetweensalgrade.losalandsalgrade.hisal;

  1.查询与SMITH在同一部门的所有员工;

sql>select*fromempwhereemp.jobin(
selectemp.jobfromempwhereemp.deptno=10);

 3.显示工资比部门号为30的所有员工的工资都高的员工信息;(用 all() 或 max()实现)

 

 

  1.查询与SMITH在同一部门并且职位也相同的员工信息;
sql>select*fromempwhere(deptno,job)=(selectdeptno,jobfromempwhereename='SMITH');

 

在from中使用子查询查询的结果会当作一个视图来对待,因此也叫做内嵌视图<br style=\"\\"margin:\" padding:=\"\"/>必须给内嵌视图命一个别名

猜你在找的Oracle相关文章