zoukankan      html  css  js  c++  java
  • 数据库基础(一)(oracle)

    本文由 简悦 SimpRead 转码, 原文地址 https://blog.csdn.net/qq_43437465/article/details/90451274

    一、数据库简介

    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)
     );
    

    (2)DESC 语句(查看表)

    eg:

    DESC  employee;
    

    (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
    

    3.2.1.2 修改表结构

    (1)添加新的字段

    给表增加列可以使用 ALTER TABLE 的 ADD 子句实现。
    语法:

    eg:

    ALTER TABLE myemp
     ADD(
     hiredate DATE DEFAULT SYSDATE
     )
    

    ❤️ 注意:
    列只能增加在最后,不能插入到现有的列中。

    (2)修改现有字段

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

    eg:

    ALTER TABLE myemp
     MODIFY (
     job varchar2(40) DEFAULT 'CLERK'
     )
    

    ❤️ 注意:

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

    (3)删除现有字段

    使用 ALTER TABLE 的子句 DROP 子句删除不需要的列。
    语法如下:

    eg:

    ALTER TABLE myemp
     DROP(
     hiredate
     )
    

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

    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
    

    ❤️ 注意:
    执行 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')
     )
    

    3.3.2 UPDATE 语句

    修改表中数据
    修改表中数据要添加 WHERE 过滤条件,这样才会只将满足条件的记录进行修改,否则是全表所有的数据都修改。一次也可修改多个字段。
    eg:

    UPDATE myemp
     SET salary=6000, name='rose',gender='F'
     WHERE id=1
    

    3.3.3 DELETE 语句

    删除表中数据,删除数据通常也要添加 WHERE 语句来限定要删除数据的条件
    否则就是清空表操作。

    eg:

    DELETE FROM myemp
    WHERE name='rose'
    DESC myemp
    

    ❤️ 注意:

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

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

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

    删除全部记录:
    
    DELETE FROM myemp;
    或者
    TRUNCATE  TABLEmyemp;
    
  • 相关阅读:
    python 将png图片格式转换生成gif动画
    JetBrains系IDE的设置Pycharm PHPStorm
    Nginx 静态页面POST 请求提示405 Not Allowed
    安装SSL证书 and 根域名跳转www域名
    Linux 安装qt5-designer并集成到Pycharm
    Deepin 自动挂载win NTFS磁盘
    Nginx+DNS负载均衡实现
    swoole websocket服务推送
    Linux版 php5.4 升级php7
    百度 Javascript开发 API
  • 原文地址:https://www.cnblogs.com/al88/p/12456437.html
Copyright © 2011-2022 走看看