Oracle的DCL、DDL、DML语言学习使用——oracle入门学习(一)

news2024/10/7 0:27:21

Oracle的DCL、DDL、DML语言学习使用

  • 前言
  • 1.SQL Plus
    • 1.1 命令行SQL PLUS使用
      • sqlplus /nolog
      • sqlplus / as sysdba
    • 1.2 oracle自带SQL PLUS使用
    • 1.3 sys和system用户的区别
  • 2. Oracle的体系结构
  • 3.DCL语言
    • 什么是DCL语言
    • 3.1 查看数据文件位置和表空间
    • 3.2 创建表空间
    • 3.3 删除表空间
    • 3.4 创建表空间用户
    • 3.5 用户权限分类
    • 3.6 给用户赋权
    • 3.7 取消用户赋权
    • 3.8 修改用户密码
  • 4. DDL语言
    • 什么是DDL语言
    • 4.1 数据类型
    • 4.2 创建表
    • 4.3 修改表
    • 4.4 删除表
    • 4.5 创建视图
    • 4.6 表约束
      • 4.6.1 主键约束(Primary Key Constraint)
      • 4.6.2 唯一约束(Unique Constraint)
      • 4.6.3 外键约束(Foreign Key Constraint)
      • 4.6.4 检查约束(Check Constraint)
      • 4.6.5 非空约束(Not Null Constraint)
      • 4.6.6 Oracle表包含常用约束的示例
  • 5.DML语言
    • 5.1 插入数据
    • 5.2 更新数据
    • 5.3 删除数据
    • 5.4 查询数据

前言

本文基于oracle19c版本对于oracle的学习使用进行记录,当前使用oracle是安装在windows10上用于个人学习使用。如果需要安装可参考:
Windows10环境下载安装Oracle19c教程

1.SQL Plus

本文基于SQL Plus用于语句的执行和演示
SQL Plus是Oracle数据库附带的一种交互式命令行工具,允许用户与Oracle数据库进行交互式通信,并执行SQL语句和PL/SQL代码。它是Oracle数据库的标准工具之一,它提供了一个用户友好的界面,使用者可以登录、查询数据库对象(如表、视图、索引等)、执行数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)语句和存储过程、解释计划等

1.1 命令行SQL PLUS使用

sqlplus /nolog

CMD命令行输入sqlplus /nolog命令是启动sqlplus但是不进行连接数据库的操作,一般用于安装数据库后验证安装是否成功
在这里插入图片描述

sqlplus / as sysdba

CMD命令行输入sqlplus / as sysdba是一种简化写法,其实是省略了用户名和密码,完整的写法:

sqlplus  sys/password  as  sysdba

在这里插入图片描述

1.2 oracle自带SQL PLUS使用

开始->oracle目录->SQL Plus,双击运行
在这里插入图片描述

在这里插入图片描述

1.3 sys和system用户的区别

以下操作使用system用户进行
system:用户具有DBA权限,但是没有SYSDBA权限,用户只能用normal身份登陆。system是数据库内置的一个普通管理员,手工创建的任何用户在被授予dba角色后都跟这个用户差不多。

sys:用户具有“SYSDBA”或者“SYSOPER”权限,登陆也只能用这两个身份,不能用normal。SYS用户具有DBA权限,并具有SYS模式。只能通过SYSDBA登录数据库,是Oracle数据库中权限最高的帐号

2. Oracle的体系结构

在Oracle数据库中,存在以下层次关系:实例(Instance) > 用户(User) > 表空间(Tablespace) > 表(Table)。

  1. 实例(Instance):
    实例是Oracle数据库运行时的一个独立环境。它包括了数据库内存结构和后台进程,负责管理数据库的访问和操作。一个物理服务器上可以同时运行多个Oracle实例,每个实例都有自己的系统资源和配置。

  2. 用户(User):
    用户是数据库中的逻辑概念,用于识别和控制对数据库的访问和操作。每个用户都有自己的用户名和密码,并且被授予特定的权限和角色。用户可以创建表、视图、索引等数据库对象,并可以执行各种SQL操作。

  3. 表空间(Tablespace):
    表空间是逻辑存储单元,用于组织和管理数据库中的表、索引和其他对象。一个数据库可以包含多个表空间,每个表空间由一个或多个数据文件组成,这些文件存储了实际的数据和索引。

  4. 表(Table):
    表是数据库中的基本存储结构,用于存储数据。表由一个或多个列组成,每列定义了特定的数据类型。表包含行(记录),每行代表一个数据实体。用户可以在自己的模式中创建表,并使用SQL语句对表进行插入、更新、删除和查询操作。

总结:
Oracle数据库中,实例是运行数据库的环境,用户是数据库的访问和操作者,表空间是逻辑存储单元,用于管理数据库对象的存储,而表是存储数据的基本单位。用户可以在自己的模式中创建表,并使用分配给他们的表空间来存储数据。

在这里插入图片描述

3.DCL语言

什么是DCL语言

DCL(Data Control Language)语言是一种用于管理数据库访问权限的语言。它包括以下三种命令:

  • GRANT:用于给用户或用户组授予访问数据库的权限。

  • REVOKE:用于从用户或用户组中撤销访问数据库的权限。

  • DENY:用于阻止用户或用户组访问数据库。

DCL语言是SQL(Structured Query Language)的一部分,通常与DDL(Data Definition Language)和DML(Data Manipulation Language)一起使用来管理数据库。它可以保护数据库免受未经授权的访问和数据泄露。

以下操作使用system用户进行

3.1 查看数据文件位置和表空间

语法:

# 查询数据文件位置
select name from v$datafile;
# 查看表空间
select TABLESPACE_NAME from dba_tablespaces;

在这里插入图片描述

3.2 创建表空间

语法:

create tablespace 表空间的名称
datafile '文件的路径'
size 初始化大小
autoextend on
next 每次扩展的大小;

示例:
表空间名称为zqtestts,文件路径: ‘E:\PERSONAL\ORACLE\ORADATA\ORCL\zqtestts.DBF’,初始大小为1024m(1GB),自动扩展大小100m

create tablespace zqtestts 
datafile 'E:\PERSONAL\ORACLE\ORADATA\ORCL\zqtestts.DBF'
size 1024m 
autoextend on 
next 100m;

在这里插入图片描述

3.3 删除表空间

语法:

drop tablespace 表空间名称;

示例:

drop tablespace zqtestts;

在这里插入图片描述

3.4 创建表空间用户

语法:

create user 用户名 identified by 密码 default tablespace 表空间名;

示例:

create user  zhouquan identified by 123456 default tablespace zqts;

在这里插入图片描述

3.5 用户权限分类

系统权限分类:(系统权限只能由DBA用户授出)

  • DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
  • RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  • CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

实体权限分类
select、update、insert、alter、index、delete、all

3.6 给用户赋权

语法:

grant 系统权限列表 to 用户名;
grant 实体权限列表 on 表名称 to 用户名;

示例:

grant DBA,RESOURCE,CONNECT to zhouquan;
grant all on Student to zhouquan;

在这里插入图片描述

3.7 取消用户赋权

语法:

revoke 系统权限列表 from 用户名;
revoke 实体权限列表 on 表名称 from 用户名;

示例:

revoke connect from zhouquan;
revoke insert on Student from zhouquan;

在这里插入图片描述

3.8 修改用户密码

语法:

alter user 用户名 identified by "密码";

示例:

alter user zhouquan identified by "zhouquan123";

在这里插入图片描述

4. DDL语言

什么是DDL语言

DDL(Data Definition Language,数据定义语言)是Oracle数据库管理系统中的一种命令语言,它用于创建、修改和删除数据库中的各种对象,如表、索引、视图、触发器等。
DDL语言操作的对象包括数据库、表空间、表、列、索引、视图、序列、触发器、存储过程、函数等,DDL语言方式包括CREATE、ALTER和DROP三种。
CREATE是创建语句、ALTER是修改语句、DROP是删除语句。

4.1 数据类型

Oracle数据库中的DDL语言支持多种数据类型,以下是一些常用的数据类型示例:

  1. 字符型数据类型:
  • CHAR(size): 定长字符串,最多可以存储2000字节。
  • VARCHAR2(size): 可变长度字符串,它不会用空格填充来达到其最大长度,最多可以存储4000字节的信息
  • VARCHAR(size): 可变长度字符串,最大长度为size。
  • NCHAR(size): 定长Unicode字符串,,最多可以存储2000字节。
  • NVARCHAR2(size): 可变长度Unicode字符串,最多可以存储4000字节的信息
  • CLOB: 大字符对象,用于存储大量字符数据,最大长度4G。
  • NCLOB 根据字符集而定的字符数据 最大长度4G
  1. 数值型数据类型:
  • NUMBER(precision, scale): 数字类型,可以指定总位数和小数位数。
    precision:是有效数据总位数,取值范围为【1-38】,默认值是38
    scale:表示精确到多少位,取值范围为【-84-127】,默认值是0
  • INTEGER: 整数类型。
  • FLOAT(precision): 浮点数类型,可以指定精度,范围可以从1到126
  • BINARY_FLOAT: 单精度浮点数类型。
  • BINARY_DOUBLE: 双精度浮点数类型。
  1. 日期与时间型数据类型:
  • DATE: 日期类型,包含日期和时间。
  • TIMESTAMP: 包含日期和时间的时间戳类型。
  • INTERVAL YEAR TO MONTH: 表示年份和月份的间隔类型。
  • INTERVAL DAY TO SECOND: 表示天数、小时、分钟和秒的间隔类型。
  1. 布尔型数据类型:
  • BOOLEAN: 用于存储逻辑值,可以为TRUE、FALSE或NULL。
  1. 二进制型数据类型:
  • RAW(size): 定长二进制数据。raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
  • BLOB: 大二进制对象,用于存储大量二进制数据,最大长度4G。
  1. 其他数据类型:
  • ROWID: 行标识符,用于唯一标识表中的行。
  • UROWID: Unicode版本的ROWID。
  • XMLTYPE: 用于存储XML数据。

这些只是一些常用的Oracle数据类型示例,还有其他更多的数据类型和选项可供选择和使用,具体的数据类型选择取决于应用程序的需求和数据的特性。

4.2 创建表

语法:

CREATE TABLE table_name (
	列 数据类型 列约束
    column1 datatype constraint,
    column2 datatype constraint,
    ...
);

示例:

# 创建书目表,booname:书名,price:价格
CREATE TABLE Book (
    id number,
	bookname varchar2(50),
	price float(2)
);

在这里插入图片描述

4.3 修改表

语法:

# 增加列
ALTER TABLE table_name
ADD (column datatype constraint);

# 修改列
ALTER TABLE table_name
MODIFY (column datatype constraint);

# 删除列
ALTER TABLE table_name
DROP COLUMN column_name;

示例:

# 书目表增加作者字段
ALTER TABLE Book 
ADD (author varchar2(50));

在这里插入图片描述

# 书目表修改作者字段为20
ALTER TABLE Book 
MODIFY (author varchar2(20));

在这里插入图片描述

# 书目表删除作者字段
# 删除列
ALTER TABLE Book 
DROP COLUMN author ;

在这里插入图片描述

4.4 删除表

drop table 表名;
delete table 表名;
truncate table 表名;
  1. 语句类型:
    delete是dml语句
    truncate和drop是ddl语句
    删除速度drop > truncate > delete

  2. 表和索引所占的空间
    truncate表后,表和索引的大小恢复到所占空间初始大小。
    delete不改变表和索引所占空间的大小。
    drop将表和索引所占用的空间全部释放。

  3. 结构
    truncate与不带where条件的delete删除表数据,而不删除表的结构。
    drop 语句删除表的结构,包括约束,触发器,索引。
    依赖该表的存储过程和函数被保留,但是状态为invalid。

  4. truncate与delete
    truncate在功能上与不带where子句的delete相同,都是删除表中的全部行。但是truncate更快,且使用的系统和事务日志资源少。
    delete语句每删除一行,并在事务日志中为所删除的每行记录一项。
    truncate table通过释放存储表数据所使用的的数据页来删除数据,并且只在事务日志中记录页的释放。

4.5 创建视图

语法:

CREATE VIEW view_name AS
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;

示例:

# 书目表增加作者字段
CREATE VIEW Book_view AS
    SELECT id, bookname, price 
    FROM Book
    WHERE price > 10.0;

在这里插入图片描述

4.6 表约束

表约束可用于保证数据的完整性和一致性,并提供额外的数据验证和保护。在开发过程中根据实际需求,可以在表的列上定义一个或多个约束。
Oracle中的表约束有以下几种常见类型:

4.6.1 主键约束(Primary Key Constraint)

作用:用于唯一标识表中的每一行,并且确保列或列组合的值不重复。
示例:

CREATE TABLE employees (
    employee_id NUMBER PRIMARY KEY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50)
);

4.6.2 唯一约束(Unique Constraint)

作用:确保列或列组合的值在表中是唯一的。
示例:

CREATE TABLE products (
    product_id NUMBER,
    product_name VARCHAR2(100),
    CONSTRAINT uk_product_name UNIQUE (product_name)
);

4.6.3 外键约束(Foreign Key Constraint)

作用:用于确保两个表之间的数据完整性,保持引用表和被引用表之间的关系。
示例:

CREATE TABLE orders (
    order_id NUMBER,
    customer_id NUMBER,
    order_date DATE,
    CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

4.6.4 检查约束(Check Constraint)

作用:用于限制列中的值必须满足指定的条件。
示例:

CREATE TABLE employees (
    employee_id NUMBER,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    salary NUMBER,
    CONSTRAINT chk_salary CHECK (salary > 0)
);

4.6.5 非空约束(Not Null Constraint)

作用确保列中的值不为空。
示例:

CREATE TABLE customers (
    customer_id NUMBER,
    customer_name VARCHAR2(100) NOT NULL
);

4.6.6 Oracle表包含常用约束的示例

下面是一个创建Oracle表并包含常用约束的示例:

CREATE TABLE employees (
    employee_id NUMBER(10) PRIMARY KEY,
    first_name VARCHAR2(50) NOT NULL,
    last_name VARCHAR2(50) NOT NULL,
    email VARCHAR2(100) UNIQUE,
    hire_date DATE DEFAULT SYSDATE,
    salary NUMBER(10, 2) CHECK (salary > 0),
    department_id NUMBER(10),
    CONSTRAINT fk_department_id FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

在上述示例中,创建了一个名为 “employees” 的表,包含了以下常用约束:

  1. 主键约束(Primary Key Constraint):employee_id 列被定义为主键,唯一标识表中的每一行。

  2. 非空约束(Not Null Constraint):first_namelast_name 列被定义为非空,确保这些列中的值不为空。

  3. 唯一约束(Unique Constraint):email 列被定义为唯一约束,确保该列中的值在表中是唯一的。

  4. 默认约束(Default Constraint):hire_date 列使用 DEFAULT SYSDATE,即在插入数据时如果没有提供 hire_date 的值,则默认使用系统当前日期。

  5. 检查约束(Check Constraint):salary 列使用 CHECK (salary > 0) 约束,确保 salary 列中的值大于 0。

  6. 外键约束(Foreign Key Constraint):department_id 列被定义为外键约束,参考了 departments 表的 department_id 列。

在这里插入图片描述

5.DML语言

Oracle的DML(Data Manipulation Language,数据操纵语言)是用于在数据库中插入、更新和删除数据的一组语句。DML语言允许用户通过执行相应的命令来操作数据库中的数据。以下是Oracle中常用的DML语句示例:

5.1 插入数据

语法:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

示例:

INSERT INTO employees (employee_id, first_name, last_name)
VALUES (1, 'John', 'Doe');

在这里插入图片描述

5.2 更新数据

语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:

UPDATE employees
SET salary = 5000
WHERE employee_id = 1;

在这里插入图片描述

5.3 删除数据

语法:

DELETE FROM table_name
WHERE condition;

示例:

DELETE FROM employees
WHERE employee_id = 1;

在这里插入图片描述

5.4 查询数据

SELECT column1, column2, ...
FROM table_name
WHERE condition;

示例:

SELECT employee_id,first_name,last_name FROM employees;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鉴源实验室丨TBOX通讯模组AT指令测试

作者 | 李伟 上海控安安全测评部总监 来源 | 鉴源实验室 引言:上一篇文章我们讲了整车的OTA升级测试(详解车载设备FOTA测试),本篇我们介绍在车载零配件上比较少见却很实用的测试:通讯模组的AT(Attention)指…

总结Nginx的安装、配置与设置开机自启

在Ubuntu下安装Nginx有以下方法,但是如果想要安装最新版本的就必须下载源码包编译安装。 一、Nginx安装 1、基于APT源安装 sudo apt-get install nginx 安装好的文件位置: /usr/sbin/nginx:主程序 /etc/nginx:存放配置文件 /us…

高压放大器可以驱动电机吗

高压放大器可以驱动电机。事实上,高压放大器在许多应用中都是电机控制的核心部件之一。高压放大器可以将输入信号转换为高电压和高电流,从而驱动电动机。 一、高压放大器的原理 高压放大器是一种电子设备,用于将低功率信号转换为高功率信号。…

云原生之深入解析如何在Kubernetes下快速构建企业级云原生日志系统

一、概述 ELK 是三个开源软件的缩写,分别表示 Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个 FileBeat,它是一个轻量级的日志收集处理工具 (Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输…

Lombok你不知道的用法

Lombok是大家经常用的一款工具,它可以帮我们减少很多重复代码的书写,但是我们对它的使用,可能更多局限于实体类的编写,比如说通过Data注解实现减少getter/setter/toString等方法的编写,其实它还有更多的注解功能&#…

美依礼芽破圈!小红书数据解读,如何拨动二次元心弦?

今年,二次元存在感爆棚。新世代下二次元群体愈发壮大,不少博主发布二次元内容、品牌也试图融入二次元圈。那么,如何与之打成一片呢?今天,通过小红书数据,我们来解读二次元的内容方向。 点赞破8亿&#xff0…

【每日一题】1595. 连通两组点的最小成本

【每日一题】1595. 连通两组点的最小成本 1595. 连通两组点的最小成本题目描述解题思路 1595. 连通两组点的最小成本 题目描述 给你两组点,其中第一组中有 size1 个点,第二组中有 size2 个点,且 size1 > size2 。 任意两点间的连接成本…

对象的构造

问题 对象中成员变量的初始值是多少&#xff1f; 成员变量的初始值 #include <stdio.h>class Test { private:int i;int j; public:int getI() { return i; }int getJ() { return j; } };Test gt;int main() {printf("gt.i %d\n", gt.getI());printf("…

UE中使用Editor Utility Widget创建编辑器工具

在UE中可以使用EditorUtilityWidget创建编辑器面板工具&#xff0c;方便平时的开发。在UE4中使用编辑器UI需要开启对应插件&#xff0c;而UE5中则默认启用&#xff0c;下面就来学习一下。 1.UI创建 1.1.在Content Browser中右键&#xff0c;找到Editor Utilities即可创建编辑…

[MySQL]不允许你不会SQL语句之查询语句

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…

分享几个AI绘图的学习网址

AI绘图是一种使用人工智能技术来创建图形和图像的技术。 从技术角度来看&#xff0c;AI绘图是一个非常有趣和不断发展的领域。随着人工智能技术的不断进步&#xff0c;AI绘图也在不断地发展和创新&#xff0c;现在已经成为数字艺术领域中的一个重要分支。 AI绘图的出现也为许多…

2023年的深度学习入门指南(17) - 深度学习的硬件加速技术

2023年的深度学习入门指南(17) - 深度学习的硬件加速技术 有了前面的知识之后&#xff0c;想必大家对于算力需求的理解已经越来越深刻了。 除了使用CPU&#xff0c;GPU这样的通用器件之外&#xff0c;采用专用的硬件来进行加速是一个大家都能想到的选择。 其中的代表器件就是…

Docke是什么,一文带你了解

Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作原理详细讲解 随着云计算和容器化技术的发展&#xff0c;Docker作为一种轻量级的容器化技术&#xff0c;受到了越来越多的关注和应用。本文将详细介绍Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作…

memcpy 和 memmove的模拟实现

文章目录 1.函数的介绍 2.模拟实现 文章内容 1.函数的介绍 memcpy指的是C和C使用的内存拷贝函数&#xff0c;函数原型为void *memcpy(void*dest,void*src, size_t count)&#xff1b;函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中&#xff0c;即从…

内网穿透(NAT 穿透)原理+工具(部分无需管理员权限)

内网穿透&#xff0c;即 NAT&#xff08;Network Address Translation&#xff09; 穿透 内网穿透的实质是内网映射&#xff0c;内网地址转换成外网地址的实现。实现过程要有端对端数据传输&#xff0c;也有端口转发原理。内网映射方式&#xff0c;可以解决无公网IP问题&#…

Android问题笔记-Android studio 出现Failed to compile values file.错误

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

docker compose 容器编排工具

目录 docker compose是什么&#xff1f; 官网网站&#xff1a;Docker Compose overview | Docker Documentation 安装使用compose&#xff1a; 步骤&#xff1a; 1、下载并安装compose的命令行插件 2、安装完成后授予权限&#xff0c;测试compose是否可以使用 3、实例测试…

AI大模型迈入应用时代,每日互动推动“可控大模型”落地

垂直行业更需要可控大模型 当下&#xff0c;大模型正在不断精进&#xff0c;以GPT-4、文心一言为代表的大模型&#xff08;LLM&#xff09;表现出了强大的逻辑推理能力&#xff0c;并能够很好地处理复杂任务&#xff0c;使得社会生产力得到了飞跃式提升。 面对大模型热度的持…

全网最详细,自动化测试与自动化框架总结,你不知道的都在这了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 单元测试框架 单…

网络:IP地址、子网掩码、网络地址、广播地址、网段、网关

目录 一、IP地址 二、子网掩码 三、网络地址 四、广播地址 五、网段 六、网关 七、IP地址、子网掩码、网络地址、广指地址、网殷、网关的关系 参考链接 一、IP地址 IP地址是因特网协议&#xff08;IP&#xff09;中使用的一种数字标识符&#xff0c;用于唯一地标识网络…