51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4395|回复: 0
打印 上一主题 下一主题

Oracle数据库基础(一)

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-11 14:12
  • 签到天数: 535 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2020-5-27 15:06:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一、数据库简介
    1.数据库系统的发展

    文件存储方式保存数据的弊端:
    (1)缺乏对数据的整体管理,数据不便修改。
    (2)不利于数据分析和共享。
    (3)数据量急剧增长,大量数据不可能长期保存在文件中。

    2. 数据库和数据库管理系统的概念
    数据库(Database,简称DB):
    本质上讲,数据库就是信息的集合,它可以存在很长时间,往往是很多年。一般来讲,数据库就是按照数据结构来组织、存储和管理数据的仓库。**

    数据库管理系统(Database Management System,简称DBMS):
    简单来说,就是管理数据库的软件。

    3.几个主流关系型数据库的概述
    提到关系型数据库,就不得不先了解一下以下两个概念:

    关系: 描述两个元素的关联或对应关系。使用关系模型把数据组织到二维数据表(Table)中。

    表的概念: 一个关系数据库由多个数据表(Table)组成,数据表是关系数据库的基本存储结构。表是二维的,由行和列组成。表的行(Row)是横排数据,也被称作记录(Record)。表的列(Column)是纵列数据,也被称作字段(Field)。表和表之间存在关联关系。

    (1)Oracle数据库概述
    Oracle是著名的Oracle(甲骨文)公司的数据库产品。Oracle是世界上第一个商品化的关系型数据库管理系统。Oracle采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS、OS/2等多种平台。Oracle公司的产品丰富,包括Oracle服务器、Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新版本是Oracle 12C。

    (2)DB2数据库概述
    DB2是IBM公司的关系型数据库管理系统。DB2有很多不同的版本,可以允许在从掌上产品到大型机不同的终端机器上。DB2 Universal Database Personal Edition 和DB2 Universal Database Workgroup Edition分别是单用户和多用户系统,可以运行在OS/2和Windows上。DB2是Oracle的主要竞争对手。

    (3)SQL Server数据库概述
    Microsoft SQL Server是微软的产品,运行在Windows NT服务器上。Microsoft SQL Server的最初版本适用于中小型企业,但是应用范围不断扩展,已经触及到大型、跨国企业的数据库管理。

    (4)MySQL数据库概述
    MySQL是开放源码的小型关系型数据库管理系统,广泛应用于中小型网站中。总体拥有成本低、规模较Oracle和DB2小的优点。2008年1月16日,Sun收购了MySQL,2009年4月20日Sun被Oracle公司收购,所以MySQL现在属于Oracle公司。

    (5)Sybase数据库概述
    Sybase 是美国Sybase公司的关系型数据库系统。Sybase是较早采用C/S技术的数据库厂商。典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研发的PowerBuilder为开发工具,在国内大中型系统中具有广泛的应用。2010年被SAP收购。

    二、SQL概述
    SQL(Structured Query Language) :结构化查询语言。 SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据、操纵数据、定义数据、控制数据。所有数据库都使用相同或者相似的语言。

    ❤️ 注意:
    SQL语句本身不区分大小写,但是出于可读性的目的,我们通常会将SQL中的关键字全部大写,非关键字全部小写。

    SQL的分类:


    (1)数据定义语言(DDL ): Data Definition Language
    用于建立、修改、删除数据库对象。
    数据库对象包括:表、视图、索引、序列。

    包括:
    CREATE :创建表或其他对象的结构
    ALTER :修改表或其他对象的结构
    DROP:删除表或其他对象的结构
    TRUNCATE:删除表数据,保留表结构

    (2) 数据操纵语言(DML): Data Manipulation Language
    用于改变数据表中的数据。和事务相关,执行完后需要经过事务控制语句提交后才能真正的将改变应用到数据库中。

    包括:
    INSERT:将数据插入到数据表中
    UPDATE:更新数据表中已存在的数据
    DELETE:删除数据表中的数据

    (3) 事务控制语言(TCL): Transaction Control Language
    用来维护数据一致性的语句。

    包括:
    COMMIT:提交,确认已经进行的数据改变
    ROLLBACK:回滚,取消已经进行的数据改变
    SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变

    (4)数据查询语言(DQL): Data Query Language
    用来查询所需要的数据。

    SELECT语句

    (5)数据控制语言(DCL): Data Control Language
    用于执行权限的授予和收回操作。

    包括:
    GRANT:授予,用于给用户或角色授予权限
    REVOKE:用于收回用户或角色已有的权限
    CREATE USER:创建用户

    三、 SQL(DDL、DML)
    3.1 Oracle数据类型

    ❤️ 数据库中所有数据类型的默认值都是NULL

    (1)NUMBER
    NUMBER表示数字类型。经常被定义成NUMBER(P,S)形式,其中:
    P:表示数字的总位数
    S:表示小数点后面的位数

    eg:
    sal NUMBER(6,2)
    表示sal列中的数据,整数位最大为4位,小数位最大为2位,也就是最大取值:9999.99

    (2)CHAR
    表示固定长度的字符类型。经常被定义成CHAR(N)形式,N表示占用的字节数。最大长度是2000字节。

    eg:
    ename CHAR(20)
    表示ename列中最多可储存20个字节的字符串,并且占用的空间是固定的20个字节。

    (3)VARCHAR2(Oracle特有的数据类型)
    表示变长的字符类型。定义格式是VARCHAR2(N),N表示最多可占用的字节数。
    最大长度是4000字节。

    eg:
    job VARCHAR2(100)
    表示job列中最多可存储长度为100个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节。

    (4)DATE
    用于定义日期时间的数据。长度是7个字节,默认格式是:DD-MON-RR,例如:11-APR-17

    eg:
    hiredate DATE
    表示hiredate列中存放的是日期数据。

    3.2 DDL语句


    3.2.1 创建表
    (1)CREATE语句(创建表)
    eg:

    CREATE TABLE employee(
       id NUMBER(4),
       name VARCHAR2(20) NOT NULL,
       gender CHAR(1) DEFAULT 'M',
       birth DATE,
       salary NUMBER(30),
       job VARCHAR2(30),
       deptno NUMBER(2)
    );
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (2)DESC语句(查看表)
    eg:

    DESC  employee;
    1


    (3)DEFAULT语句
    在创建表的时候可以使用DEFAULT为某个字段单独指定一个默认值。
    例如,给gender列赋默认值‘M’,如果没有指定性别的员工,默认是男性

    ❤️ 注意:
    1.数据库中的字符串字面量是使用单引号的。
    2.虽然SQL语句本身不区分大小写,但是字符串的值是区分大小写的。

    (4)NOT NULL 语句
    ❤️ 注意:
    1.非空(NOT NULL)是一种约束条件,用于确保字段值不为空
    2.默认情况下,任何列都允许有空值
    3.当某个字段被设置了非空约束条件,这个字段中必须存在有效值
    4.当执行插入数据的操作时,必须提供这个列的数据
    5.当执行更新操作时,不能给这个列的值设置为NULL

    3.2.1 修改表
    3.2.1.1 修改表名
    在建表后如果希望修改表名,可以使用 RENAME语句实现
    语法如下:

    RENAME employee TO myemp
    1
    3.2.1.2 修改表结构
    (1)添加新的字段
    给表增加列可以使用ALTER TABLE 的ADD子句实现。
    语法:

    eg:

    ALTER TABLE myemp
    ADD(
    hiredate DATE DEFAULT SYSDATE
    )
    1
    2
    3
    4
    ❤️ 注意:
    列只能增加在最后,不能插入到现有的列中。

    (2)修改现有字段
    建表之后,可以改变表中列的数据类型、长度、默认值和是否为空。
    语法如下:

    eg:

    ALTER TABLE myemp
    MODIFY (
    job varchar2(40) DEFAULT 'CLERK'
    )
    1
    2
    3
    4
    ❤️ 注意:

    修改表结构都应当避免在表中有数据以后进行,若表中有数据,修改表中字段时尽量不要修改类型,若修改长度尽量增大避免缩小,否则可能导致失败。

    (3)删除现有字段
    使用ALTER TABLE 的子句DROP子句删除不需要的列。
    语法如下:

    eg:

    ALTER TABLE myemp
    DROP(
    hiredate
    )
    1
    2
    3
    4
    ❤️ 注意:
    删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间。

    3.3 DML语句


    DML是对表中的数据进行的操作
    DML伴随事物控制(TCL)
    DML:包含操作:
    增、删、改。

    3.3.1 INSERT语句
    给数据表里增加记录。
    语法如下:
    eg:

    INSERT INTO  myemp
    (id,name,salary,deptno)
    VALUES(1,'jack',5000,10)
    SELECT * FROM myemp
    COMMIT
    1
    2
    3
    4
    5
    ❤️ 注意:
    执行DML操作后,需要再执行 COMMIT语句,才算真正确认了此操作。

    如果插入的列有日期字段,需要考虑日期的格式
    默认的日期格式:‘DD-MON-RR’
    可以自定义日期格式,用TO_DATE函数转换为日期类型的数据
    eg:

    /*
    使用自定义日期格式插入记录
    */
    INSERT INTO myemp
    (id,name,job,birth)
    VALUES(
    1003,'donna','MANAGER',
    TO_DATE('2009-09-01','YYYY-MM-DD')
    )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    3.3.2 UPDATE语句
    修改表中数据
    修改表中数据要添加WHERE过滤条件,这样才会只将满足条件的记录进行修改,否则是全表所有的数据都修改。一次也可修改多个字段。
    eg:

    UPDATE myemp
    SET salary=6000, name='rose',gender='F'
    WHERE id=1
    1
    2
    3
    3.3.3 DELETE语句
    删除表中数据,删除数据通常也要添加WHERE语句来限定要删除数据的条件
    否则就是清空表操作。

    eg:

    DELETE FROM myemp
    WHERE name='rose'
    DESC myemp
    1
    2
    3
    ❤️ 注意:

    如果没有WHERE子句,则全表的数据都会被删除。

    在DDL语句中的TRUNCATE语句,同样有删除表数据的作用。

    和DELETE语句的区别:
    (1)DELETE可以有条件删除,TRUNCATE将表数据全部删除。
    (2)DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退。
    (3)如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低。
    删除全部记录:

    删除全部记录:

    DELETE FROM myemp;
    或者
    TRUNCATE  TABLEmyemp;
    ————————————————
    版权声明:本文为CSDN博主「Alive~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_43437465/java/article/details/90451274
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-19 15:26 , Processed in 0.077729 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表