返回顶部
首页 > 资讯 > 数据库 >OracleDBA表管理
  • 658
分享到

OracleDBA表管理

2024-04-02 19:04:59 658人浏览 薄情痞子
摘要

    下面是oracle表管理的部分,用到的测试表是oracle数据库中scott用户下的表做的测试,有的实验也用到了hr用户的数据,以下这些东西是我的麦库上存的当

    

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

1.表名和列名的命名规则:
  1.必须以字母开头
  2.长度不能超过30个字符
  3.不能使用oracle的保留字命名
  4.只能使用字母数字下划线,$或#;

2.oracle的数据类型
  1.字符型:
    char 定长 最长2000字符(因为是定长的,在做查询时是多位同时比较,其好处是查询速度特快)
      demo: char(10) 存放‘ab’占俩个字符后面空着的8个字符用空格补全,所以存了2个字符也占10个字符的空间;

    varchar2 变长 最大是4000字符(查询速度较慢,因为是变长,查询比较是是一位一位的比较)
      demo:varchar2(10) 存放‘ab’,就占2个字符;

    clob(character large object) 字符型大对象,最大是4G

  2.数字类型:
    number 的范围 10的-38次方---10的38次方可以表示小数也可以表示整数
    number(5,2)表示有5位有效数字,两位小数;范围 -999.99 -- 999.99
    number(5) 表示有5位整数,范围:-99999-99999;

  3.日期类型:
    date 包括年月日和时分秒
    timestamp 时间戳(毫秒级)
    在oracle中默认的日期格式是“DD-MON-YY” 如“01-5月-1992”,如果没有月则添加不成功;
    修改date的格式:

alter session set nls_date_fomat = "yyyy-mm-dd";

 

  4.大数据(存放媒体)
    blob 二进制数据 可以存放图片/声音/视频 最大是4G普通的存放媒体数据一般在数据库中存放的是所放的文件夹路径当为了安全性时才会把媒体文件放在数据库中;

3.oracle中创建表

OracleDBA表管理

1 sql>create table student( --创建名为student的数据库表2   name varchar2(20),    --名字10个变长3   idcar char(18),     --×××18个定长字符4   sex char(2),     --性别2个定长字符5   grade number(5,2)    --成绩为浮点数,有效5位小数位为2位;6 )

OracleDBA表管理

 

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

sql>alter table student add(classid number(2));

5.修改已有字段的长度

sql>alter table student modify(name varchar2(10));

6.删除表中的已有字段

sql>alter table student modify(name varchar2(10));

7.表的重命名;

sql>rename student to std;

9.往表中插入数据:
  1.省略字段名

sql>insert into student values('name','231','男',234.89);

  2.给部分字段赋值

sql>insert into student(name,idcar) values('TOM','123');

  3.查询idcard字段为空的学生

sql>select * from student where idcard is null;

 

10.修改表中的数据:

sql>update student set name='cat' where id=1;

 



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

OracleDBA表管理

  1.回滚之前先创建保存点
    sql>savepoint pointName;
  2.删除表中的记录
    sql>delete from student;;
  3.回滚
    sql>rollback to pointName;
    truncate table student; --删除表中的所有的数据,不写日志,无法回滚,删除速度极快;

OracleDBA表管理

 

 

 

Oracle中的select语句的练习,这也是难点

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

sql>select a.ename,b.ename from emp a,emp b where a.mgr=b.empno;

  2.去除重复的行,重复的行的意思是行的每个字段都相同; distinct

sql>select distinct emp.job,emp.mgr from emp;

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

OracleDBA表管理

SQL> select emp.ename as 姓名,emp.sal as 薪水, emp.job as 工作,dept.dname as 部门2 from emp,dept where emp.ename='SMITH' and emp.deptno=dept.deptno;

姓名 薪水 工作 部门---------- --------- --------- --------------SMITH 800.00 CLERK RESEARCH

OracleDBA表管理

 

  4.打开显示sql语句运行时间  

sql>set timing on;

 

  5.查询SMITH的年工资;--nvl 处理为null的字段,在表达式里如果有一个值为null则结果就为null用nvl()函数处理为空的字段,例如nvl(comm,0):如果为null则用0替换;

select emp.ename "名字", emp.sal*12+nvl(emp.comm,0)*12 "年薪" from emp where name='SMITH';

 

  6.模糊查询like %代替多个字符,_代替一个字符;

select * from emp where emp.ename like 'S%';

 

  7.or的升级in查询

select * from emp where emp.empno in(7369,7788);


  8.查询工资高于500或者是岗位是manager同时名字以J开头的雇员

SQL> select * from emp where (emp.sal>500 or emp.job='MANAGER') and emp.ename like 'J%';

 

  9.按照工资从低到高排序 order by语句; desc是降序(从高到低),asc是升序(从低到高 默认)

SQL>select * from emp order by emp.sal asc;

  10.按照部门号升序(asc),员工号降序(desc)

SQL>select * from emp order by emp.deptno ,emp.empno desc;

 

  11.使用列的别名排序:按年薪降序(desc)

SQL>select emp.sal*12 "年薪" from emp order by "年薪" desc;

 

数据的分组————min,max,avg,sum,count;

  1.查询员工的最高工资和最低工资; min()和max() 的使用

select max(sal) "最高工资", min(sal) "最低工资" from emp;

  2.查询所有员工的工资总和和平均工资 sun() 和 avg() 的使用;

SQL> select sum(sal) "工资总和", avg(sal) "平均工资" from emp;

  3.查询员工的总人数:

SQL> select count(*) from emp;

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

SQL>select * from emp where sal=(select max(sal) from emp);//ERROR 不能使用分组函数
error: select * from emp where sal = max(sal);--error;error: select ename,max(sal) from emp; -error;

    select 后面若有分组函数子可以跟分组函数


  5.显示工资高于平均工资的员工信息:

SQL>select * from emp where sal=(select max(sal) from emp);//ERROR 不能使用分组函数
error: select * from emp where sal = max(sal);--error;error: select ename,max(sal) from emp; -error;

   

 

group by 和 having子句
  group by 用于对查询的结果进行分组统计
  having子句用于限制分组显示结果


  1.显示每个部门的平均工资和最高工资;

 select avg(sal),max(sal),deptno from emp group by deptno;

  2.显示每个部门的每种岗位的平均工资和最高工资

SQL> select avg(sal),max(sal),deptno,job from emp group by deptno,emp.job order by deptno;

 

  3.显示平均工资小于2000的部门号和他们的平均工资:

SQL> select emp.deptno,avg(sal) from emp group by emp.deptno having avg(sal)<2000;

DEPTNO AVG(SAL)------ ----------30 1566.66666

分组函数只能出现在选择列表,having,order by子句中
如果select中同时有group by ,having ,order by 则三者的顺序为group by ,having, order by;

 

 

多表查询:
  1.显示雇员名,雇员工资,所在部门名称;

SQL> select emp.empno,emp.sal,dept.dname from emp,dept where emp.deptno=dept.deptno;

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

SQL> select emp.empno,emp.sal,dept.dname from emp,dept where emp.deptno=10 and emp.deptno=dept.deptno;

 

  3.显示雇员名,雇员工资,工资的级别;

SQL> select emp.ename,emp.sal,salgrade.grade          from emp,salgrade        where emp.sal between salgrade.losal and salgrade.hisal;

 

子查询: SQL中执行顺序是从右到左执行
  1.查询与SMITH在同一部门的所有员工;

SQL> select * from emp where emp.deptno=(         select emp.deptno from emp where emp.ename='SMITH');

 

  2.查询和部门10的工作相同的员工的信息

SQL> select * from emp where emp.job in( 
         select emp.job from emp where emp.deptno=10);

 

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

SQL> select * from emp where sal>all(         select sal from emp where emp.deptno=30);
或者(下面的效率要高的多)
SQL> select * from emp where sal>(         select max(sal) from emp where emp.deptno=30);

 

  4.显示工资比部门号为30的一个员工的工资都高的员工信息;

SQL> select * from emp where sal>any(         select sal from emp where emp.deptno=30);
或者(下面的效率要高的多)
SQL> select * from emp where sal>(         select min(sal) from emp where emp.deptno=30);

 

返回多字段的子查询:
   1.查询与SMITH在同一部门并且职位也相同的员工信息;

SQL> select * from emp where (deptno,job)=(         select deptno,job from emp where ename='SMITH');

 

    2.查询员工比自己部门的平均工资高的员工信息;(把查询出的信息当作一张表起一个别名)

SQL> select * from emp a,(         select deptno,avg(sal) mysal from emp group by deptno) a2         where a.deptno = a2.deptno and a.sal>a2.mysal;

 

在from中使用子查询时查询的结果会当作一个视图来对待,因此也叫做内嵌视图
必须给内嵌视图命一个别名


您可能感兴趣的文档:

--结束END--

本文标题: OracleDBA表管理

本文链接: https://www.lsjlt.com/news/52659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OracleDBA表管理
        下面是Oracle表管理的部分,用到的测试表是oracle数据库中scott用户下的表做的测试,有的实验也用到了hr用户的数据,以下这些东西是我的麦库上存的当...
    99+
    2024-04-02
  • OracleDBA之数据库管理
        以下这些东西是我的麦库上存的当时学Oracle的学习笔记今天拿出来和大家分享一下,转载请注明出处,下面用的Oracle的版本是10g,用的时WinServer...
    99+
    2024-04-02
  • Sqlite—数据库管理与表管理
    创建数据库 [root@localhost ~]# sqlite3 testDB.db       ...
    99+
    2017-07-03
    Sqlite—数据库管理与表管理
  • 如何管理MySQL表
    下面讲讲关于如何管理MySQL表,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完如何管理MySQL表这篇文章你一定会有所受益。MySQL数据导入把系统文件的内容存储到数据库的表里...
    99+
    2024-04-02
  • oracle 表空间管理
    oracle增减表空间的四种方法Meathod1:给表空间增加数据文件ALTER TABLESPACE app_data ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORAD...
    99+
    2024-04-02
  • Oracle表空间管理
    创建表空间命令:CREATE TABLESPACE userdataDATAFILE '/u01/oradata/userdata01.dbf' SIZE 100MAUTOEXTEND ON NEXT 5M...
    99+
    2024-04-02
  • Oracle表空间管理和用户管理介绍
    目录Oracle介绍1. Oracle表空间2. Oracle用户权限管理3. 查看用户及权限信息总结Oracle介绍 Oracle(甲骨文)公司 1977年,三人合伙创办(Soft...
    99+
    2024-04-02
  • 【⑩MySQL】:表管理,让数据管理不再困难
    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL表/数据库创建和管理的讲解✨ 目录 前言1. 基础知识2. 创建和管理数据库3.创建表4. 修改表5. 删除表6.总结 1. 基础知识 ✨1.1 表的基本概...
    99+
    2023-08-17
    mysql android 数据库
  • MySQL创建和管理表
    创建和管理表 基础知识 一条数据的存储 标识符命名规则 MySQL中的数据类型 常用 创建和管理数据库 删除后,除非有备份,否则,不能恢复 创建数据库 方式一:直接创建 CREATE DATABASE mytest1; ...
    99+
    2018-01-02
    MySQL创建和管理表
  • oracle表的管理方式
    本篇内容主要讲解“oracle表的管理方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle表的管理方式”吧!oracle 支持的数据类型 ...
    99+
    2024-04-02
  • MySQL InnoDB表空间管理
    作者:禅与计算机程序设计艺术 1.简介 什么是MySQL InnoDB表空间 InnoDB存储引擎是MySQL默认的事务型存储引擎,而在InnoDB中,表数据和索引都存放在一个称之为表空间的数据结构...
    99+
    2023-10-23
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • Oracle UNDO表空间的管理
    UNDO表空间的管理是Oracle DBA最重要的日常工作之一,UNDO表空间用来暂时存储DML操作的数据,其主要作用有:1、事务回滚2、实例恢复3、读一致性4、闪回下面是对UNDO表空间的一些操...
    99+
    2024-04-02
  • Oracle 表空间管理(tablespace managment)
    <span style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;ba...
    99+
    2024-04-02
  • 数据库和表的管理
    1、数据库文件类型:①数据文件主要数据文件:后缀 .mdf ,有且只有一个,默认已创建,包含启动信息、数据对象次要数据文件:后缀 .ndf ,可有任意个,默认无文件流数据:存储图片、音频等文件②事务日志文件...
    99+
    2024-04-02
  • Oracle数据表如何管理
    这篇文章主要介绍了Oracle数据表如何管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、SQLDeveloper工具的介绍Oracle...
    99+
    2024-04-02
  • mysql如何创建管理表
    这篇“mysql如何创建管理表”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql如何...
    99+
    2022-11-30
    mysql
  • Oracle表空间管理和用户管理的示例分析
    这篇文章将为大家详细讲解有关Oracle表空间管理和用户管理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Oracle介绍Oracle(甲骨文)公司1977年,三人合伙创办(Software D...
    99+
    2023-06-22
  • SQL数据库和表的管理
          SQL数据库和表的管理(二)利用SSMS数据库管理工具登陆数据库创建一个名为db_class的数据库设置数据库为自动收缩将数据库分离,以便数据库...
    99+
    2024-04-02
  • MySQL数据库及表的管理
    库管理1.创建数据库mysql> help create database; CREATE {DATABASE | SCHEMA}&nbs...
    99+
    2024-04-02
  • sqlserver表和库的管理方法
    本篇内容介绍了“sqlserver表和库的管理方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.1.&...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作