Oracle数据库最全笔记--基本概念(持续更新)

前言:

  1. 为什么要学习数据库?

    1.1数据库的概念

      数据库是按照数据结构组织,存储和管理数据的仓库。

      数据库,简单来说是本身可视为电子化的文件柜-存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

      它将数据以一定方式存储在一起、能够为多个用户共享、尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。

    1.2数据模型是数据库中数据的存储方式,是数据库系统的基础

      数据模型经历了:

        1.2.1层次模型:层次模型是数据库系统最早使用的一种模型,他的数据结构是一颗"有向树"

        1.2.2网状模型:网状模型以网状结构表示实体与实体之间的联系。网中的每一个节点代表一个记录类型,联系用链接指针来实现。网状模型可以表示多个从属关系的联系,也可以表示数据间的交叉关系,即数据间的横向关系和纵向关系,它是层次模型的扩展。网状模型可以方便地表示各个类型的联系,但是结构复杂,实现的算法难以规范化

        1.2.3关系型:在关系型模型中基本数据结构就是二维表,不用像层次或者网状那样的链接指针。记录之间的联系是通过不同关系中同名属性来实现的        

            关系型数据库优势:

                数据结构单一

                关系规范化,并建立在严格的理论基础上

                概念简单,操作方便

            组成

                a.单一的数据结构-----关系

                b.关系操作集合

                c.关系的数据完整性,准确性和一致性

    1.3关系型数据库:

      关系型数据库简单的可以理解为二位数据库,表的格式就如Excel,有行有列。所谓关系型数据库,是指采用了关系模型来组织的数据库。关系模型是1970年由IBM的研究院E.F.Codd博士首先提出,在之后的几十年中,关系型的概念得到了充分的发展并逐渐成为数据库结构的主流模型。简单的说,关系型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

    1.4常见关系型数据库及其基本概念:

      1.4.1常见关系型数据库:

        mysql   sqlServer  oracle  db2  sybase

      1.4.2基本概念

         a.关系:一个关系对应着一个二维表,二维表就是关系名,每张表由行和列组成

         b.元组:在二维表中的一行,成为一个元组。可以用过使用结构化查询语句(Structured Query Language)来操作元组语句  

         c.属性:元组中的一个属性值(分量)

         d.码:如果在一个关系中存在这样的一个属性,他的值就能用来唯一标识一行,则称这姓属性为关系的键或者码

         e.主键(主码):从若干个候选码中选出来的一个用来唯一标识一行数据的属性

         f.外键:用来逻辑的关联多张表的数据信息

      

  2.Oracle的认知(一个认知)

    oracle是一家公司的名字(甲骨文公司),世界上屈指可数的,是国际上非常大的巨型IT公司,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越IBM,成为继Microsoft后成为全球第二大软件公司,最有名的产品是DB,database,RDBMS,关系型数据库系统。世界第一大数据库提供商,上海研发中心,五角场,离复旦大学近。主营oracle数据库软件,全世界第二大ERP提供商,大型企业级内部管理系统,包括人力资源管理等等。Oracle是Oracle公司第一个也是最成功的一个产品,发展经历过一个漫长的过程,到1997年6月,Oracle第八版发布。Oracle支持面向对象的开发以及新的多媒体应用,这个版本也成为支持Internet、网络计算等奠基定了基础。同时这一版本开始具有同时处理大量用户和海量数据的特性。1998年9月,oracle公司正式发布oracle 8i。"i"代表Internet,这一版本中添加了大量为支持Internet而设计的特性,这一版本为数据库用户提供了全方位的Java支持,Oracle 8i成为第一个完全整个了本地Java运行时环境的数据库。然后有9i,10g,"g"代表”grid“,网格。这一版本最大的特性就是加入了网格计算功能。然后是11g,现在发展到12c,c代表cloud,也就是现在炒的非常火的云概念。

  3.三个名词:

    sql:结构化查询语句,操作oracle数据库的语言

    sqlplus:oracle软件自带的可以输入sql,且将sql执行结果显示的终端

    pl/sql:程序化的sql语句,在sql语句的基础之上加入了一定的逻辑操作,如if for,使之成为一个sql块,完成一定的功能

  4.四种对象

    table:表格,由行和列组成,列又称为字段,每一行内容为表格的一天完整数据。

    view:视图,一张表或者多张表的部分或者完整的映射,好比表格照镜子,镜子里面的虚像就是view

    出去常见的table和view两种对象外,oracle还支持如下四种对象

    sequence:序列

    index:索引,提高数据的访问效率

    synonym:同义,方便对象的操作

    program unit:程序单元,pl/sql操作的对象

  5.五种分类

  sql的五大分类

    Data retrieval:数据查询

      select

    DML:数据操作语言(行级操作语言) 操作的是表格中一条一条的数据

      insert update delete

    DDL:数据定义语言(表级操作语言) 操作的内容为表格(对象)

      create alter drop truncate rename

      transaction control(事务控制):commit rollback savepoint

    DCL:数据控制语言

      grant revoke

    delete与truncate区别:

      delete:删除表中的一条或者多条记录,并不返回表格的初始化状态

      truncate:清空表格,并返回表格的初始化状态

  6.oracle的使用

    启动:

      6.1  win+R------->cmd-------->sqlplus "as sysdba"  //以sysdba身份登陆(此时可以创建用户,分配权限等)

           win+R------->cmd-------->sqlplus username/password  //以指定用户名/密码身份登陆

          直接找到安装目录,打开sqlplus终端

      6.2  创建用户:

           create user 用户名 identified by 密码

      6.3  权限授予:

           grant resource,connect to user;

            resource:

            create trigger

            create sequence

            create type

            create procedure

            create cluster

            create operator
            create indextype
            create table
            connect:
            create session

    6.4  切换用户:

          conn username/password

    6.5  因为数据文件的默认语言环境为英语,当前windows系统是中文,中英文时间显示不一致,导入会失败,需要先修改语言环境

        alter session set nls_date_language=english;

        alter session set nls_language=english; 

        导入表给

        @ e:\oracle\summit2.sql

        start e:/oracle/summit2.sql

    6.6  查看表结构

        desc table_name;

Model 1 Select Rows

  1.select :
    语法:
      select [distinct] {*,column [alias],...} from table

      注:[]括起来的内容代表可有可无,* 代表所有列 ,distinct关键字只能跟在select关键字之后,select 子句后边指定要查询的列,from 子句后边跟要查询的表.

      (英文名是first_name+last_name):My name is first_name.last_name;

  2.select语句可以对指定的列的所有值进行算术运算。
    语法:
    select col_name 运算符 数字

    from tb_name;

    注意:select语句永远不对原始数据进行修改。

  3.给查询的列区别名
    语法:
    select old_column [as] new_column_name
    from tb_name;

  4.使用||可以使得多列的值或者列和特殊的字符串合并到一个列进行显示
    语法:
    select col_name||‘spe_char‘||col_name
    from tb_name
    ‘spe_char‘:如果一个列的值要跟特殊的字符串连接显示,使用该语法。

  5.对null值得替换运算
    语法:
    select nvl(col_name,change_value)
    from tb_name;

    nvl2(col_name,不为空显示的值,为空显示的值);
  6.使用distinct关键词,可以将显示中重复的记录只显示一条
    语法:
    select distinct col_name,col_name...
    from tb_name;    注意1:distinct关键词只能放在select关键词后面

    如:select id,distinct title
      from s_emp;
     该语句语法错!!!!!
    注意2:如果distinct关键词后面如果出现多列,表示多列联合去重,即多列的值都相同的时候才会认为是重复的记录。
                  test表:
                  id id2
                  1 2
                  1 3
                  2 4
                  3 4
                  3 4
          select distinct id,id2
          from test;
           显示结果为:
                 id id2
                 1 2
                 1 3
                   2 4
                                               3 4

7.sqlplus命令
  a:在当前操作的命令行追加内容
    a test
  c: 在当前操作的命令行修改内容
    c/old_char/new_char
    clear buffer:清空当前缓存的命令
  del:删除当前操作行
      del line_num指定删除第几行
  i:当前操作命令行的下一行插入内容
  l:查看缓存命令
  l line_num:查看指定的命令行
  n text:替换第n行的整行内容
  !:后面接终端命令 ------linux环境下
  !clear:清屏 ///
  $:后接终端命令
  $cls ---------> windows环境下
  /:执行缓存sql命令

  save file_name:将缓存命令保存到file_name中 (append replace)
  get file_name:将文件中的内容提取到sqlplus
  start 和 @ file_name:执行文件中的sql命令
  edit file_name:使用终端设置好的vi编辑器编辑文件(对于windows使用的是notepad)
  spool file_name 将接下来的sql语句以及sql的运行结果保存到文件中(append)
  sql1
  result1
  sql2
  result2
  ...
  spool off 关闭spool功能
  exit:退出

8.select id,last_name,first_name, salary, dept_id
  from s_emp;

    结果不好看,通过column使我们的显示界面好看。

       colu last_name format a15;
       colu first_name format a15;

    Column 有没有改变数据表里数据啊,没有,它只是改变显示。它是不是SQL命令呢? 不是,它是sqlplus命令。除了刚才这个作用之外,我们下面来看看它还有什么作用。

    COLUMN last_name HEADING ‘Employee|Name‘ FORMAT A15
       . 给last_name取别名为Employee|Name , 竖杠代表换行。
       . A15表示十五个字节长,一短横杠就是一个字节长

    COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
        . salary JUSTIFY LEFT : 仅仅改变列名显示为左齐
                   . FORMAT $99,990.00: 控制显示格式为前面加 $ 符, “,”为分隔符, 0或9代表数字(通配符),0表示替换对齐数值,位数不足会补足,可以混合使用.

COLUMN start_date FORMAT A8 NULL ‘Not hired‘
        . 如果start_date值为空的话,显示为’Not hired’;
        . Format后不能直接跟null, 要先a8或a10;
        . NULL ‘Not hired‘和nvl有点不同, nvl要求类型匹配

    column 显示所有对列格式的设置情况
    column last_name 显示对last_name列显示设置的情况
    column last_name clear 删除对last_name列格式设置的情况
    Clear column 清除所有column的格式设置

    Column某列的格式设置,这里的列并不特定于某个表.

    ex:
      1234 column 99.99 -- > ###### //出错的时候不能显示,只是显示####
      column columName 显示对列的限制

    model 2 Sorting & Limiting Selected Rows
      1、Order by 子句的使用
        1) Order by子句在整个
          select语句中的位置:
            始终位于最后
        2) order by后可以跟什么:
            列名,列的别名,表达式,
            列出现在select关键字后的
            顺序(列号);
        3) order by后可以跟多列,
            表示先按第一列排序,
            如第一列有相同值再按
            第二列进行排序,如前二列
            均有相同值,则按第三列进行排序...
        4) ASC表升序,可以省略.
            DESC表降序。
        5)空值永远是最大的。
            升序排序的时候,空值放在最后
            降序排序的时候,空值放在最前面的

      2、Where子句的使用
        语法:
          select col_name,...
          from tb_name
          where col_name 比较操作表达式
        逻辑操作符
          col_name 比较操作表达式
            1) 作用:对SQL语句返回的数据集进行筛选;
            2) 位置:紧跟在from子句后
            3) 内容:由一至多个限定条件组成,限定条件由表达式, 比较符, 字面值组成。
            4) 所有字符串和日期要用单引号括起来,数值不需要单引号。
              日期在Oracle里有特定的格式,’DD-MON-YY’(具体看日期的显示格式),
              否则作为一个字符串。
            5) 几种常见的操作符:
              1》逻辑比较操作符
                  = > < >= <= !=
              2》sql比较操作符
                  between and:在什么范围之内
                  in(list):在一个列表中
                  like:模糊查询,即值不是精确的值的时候使用
                  通配符,即可以代替任何内容的符号
                    %:通配0到多个字符
                    _: 当且仅当通配一个字符
                  转义字符:
                    默认为\,可以指定 指定的时候用escape 符号指明即可,转义字符只能转义后面的一个字符
                  between 1 and 4: 包括起止值。限定内容为1到4。
                  in (1,2,4): 限定内容为1,2,4。
              3》逻辑操作符
                  当条件有多个的时候使用
                  and:且逻辑
                  or:或逻辑
                  注意:and逻辑比or逻辑要高
                  not:非逻辑

时间: 2024-10-28 10:58:59

Oracle数据库最全笔记--基本概念(持续更新)的相关文章

达梦数据库常用功能及命令记录--持续更新

达梦数据库常用功能及命令记录 达梦数据库语句的使用总体来说跟oracle很接近的,这篇文章主要是把常用的情况和语句做了记录,并且后续还会不断的持续更新 达梦数据库常用说明 1.测试查询语句:select 1;select top 2 from v$dm_ini; select from v$dm_ini limit 2;select * from v$dm_ini where rownum<2; 2.达梦大小写:DM7.6之前版本默认密码是转为大写存储的,登录时要注意.比如用户设置test/te

oracle数据库备份(整理笔记)

   快到新一年了 ,复习一下oracle为以后做多准备 一.Oracle备份方式分类:Oracle有两类备份方式:(1)物理备份:将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,就是冷备份.热备份:   (2)逻辑备份:是利用SQL语言从数据库中抽取数据并存于二进制文件的过程,逻辑备份需要使用导入导出工具:    EXPDP/IMPDP或EXP/IMP: 两种方式有什么优缺点: oracle备份 概述 优点 缺点 冷备份 数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数

Oracle数据库备份实验笔记[不完整,内容乱]

rman target / log=/orasoft/backup/${DATE}backup1.log <<EOFrun {allocate channel c1 device type disk;allocate channel c2 device type disk;allocate channel c3 device type disk;backup database format '/orasoft/backup/db_%T%U.bak';backup current control

Android周笔记(9.8-14)(持续更新)

本笔记记录一周内的小知识点和一些心学习的Demo. 1.PopupWindow: new 一个activity_pop_window:id为popwindow的Button,id为hello123的TextView 自测2.3以下不能实现: 1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_p

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新)

这是一片学习笔记的汇总,查看内容请点击各章节介绍. 第一章,计算机基础和linux基本介绍 http://blog.51cto.com/13683480/2095433 第二章,linux基础 http://blog.51cto.com/13683480/2095427 第三章,文件管理 http://blog.51cto.com/13683480/2095428 第四章,标准I/O和管道 http://blog.51cto.com/13683480/2095434 第五章,用户组和权限管理 h

Oracle 截取、查找字符函数(持续更新)

整理一些常用的截取.查找字符函数: 1.查找某一个字符串中某一个字符(串)出现的次数 SELECT LENGTH(REGEXP_REPLACE(REPLACE('anne<br>lily<br>jane', '<br>', '@'),  '[^@]+',  '')) COUNT FROM DUAL; --返回2 2.判断某个字符是否在源字符串出现过select instr('anne<br>lily<br>jane','<br>',1

C++学习笔记--研究生期间持续更新

1. post-increment and pre-increment 的区别 来源:http://www.c4learn.com/c-programming/c-increment-operator/ #include<stdio.h> void main() { int a,b,x=10,y=10; a = x++; b = ++y; printf("Value of a : %d",a); printf("Value of b : %d",b);

oracle实例名,数据库名,服务名等概念差别与联系

数据库名.实例名.数据库域名.全局数据库名.服务名 这是几个令非常多刚開始学习的人easy混淆的概念.相信非常多刚開始学习的人都与我一样被标题上这些个概念搞得一头雾水.我们如今就来把它们弄个明确. 一.数据库名 什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样.他用參数DB_NAME表示,如果一台机器上装了多全数据库,那么每个数据库都有一个数据库名.在数据库安装或创建完毕之后,參数DB_NAME被写入參数文件之中.格式例如以下:DB_NAME=myorcl...在 创建数据库时

Oracle数据库的基本概念(转)

一.数据库 我们在安装Oracle数据库时,全局数据库名:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名. 启动数据库:也叫全局数据库,是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等.我们用这些高级权限账号登陆就可以在数据库实例中创建表空间,用户,表了. 二.数据库实例 用Oracle官方描述:实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,