一. docker 模式下进入数据库

ubuntu@jiang:~$ sudo docker ps -a
sudo: unable to resolve host jiang
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f096e625bcd3 oracleinanutshell/oracle-xe-11g "/bin/sh -c '/usr/sb…" About an hour ago Up About an hour /tcp, /tcp, 0.0.0.0:->/tcp compassionate_lamport ubuntu@jiang:~$ sudo docker exec -it f096e625bcd3 /bin/bash
sudo: unable to resolve host jiang
root@f096e625bcd3:/#

二.

1. 打开终端窗口并执行oraenv 命令以设置环境变量。

2. 执行以下语句以系统管理员身份连接到数据库:

sqlplus sys / <password> as sysdba;

3.默认情况下,HR模式已锁定。执行以下语句以解锁HR模式。

ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK; # 演示用户

4.行以下命令以连接到HR 模式:

  connect hr/hr

SQL> connect hr/hr
Connected.

5. DESCRIBE命令提供了一个指定的表或视图的描述。表和视图的描述包含以下信息:

  • 列名
  • 是否允许每列的空值(NULLNOT NULL
  • 列的数据类型,例如 DATENUMBER, VARCHAR2
  • 柱的精度,例如VARCHAR2(50)

语法:DESC [RIBE] <table >

执行以下命令以查看EMPLOYEES表的说明:

DESCRIBE EMPLOYEES;

SQL> desc employees
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NOT NULL NUMBER()
FIRST_NAME VARCHAR2()
LAST_NAME NOT NULL VARCHAR2()
EMAIL NOT NULL VARCHAR2()
PHONE_NUMBER VARCHAR2()
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2()
SALARY NUMBER(,)
COMMISSION_PCT NUMBER(,)
MANAGER_ID NUMBER()
DEPARTMENT_ID NUMBER()

三.表操作

  查询表

1. select 语句

语法:SELECT {* | [DISTINCT] column | expression [alias],...} 
      FROM 
    <table>;

1). 查询表的所有数据

SELECT * FROM departments; //

SQL> SELECT * FROM departments;

DEPARTMENT_ID DEPARTMENT_NAME             MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
Administration
Marketing
Purchasing

2).  SELECT 语句中指定列名来显示表中的特定数据列

select JOB_ID,JOB_TITLE FROM jobs;

SQL> select JOB_ID,JOB_TITLE FROM jobs;

JOB_ID       JOB_TITLE
---------- -----------------------------------
AD_PRES President
AD_VP Administration Vice President

2. 限制数据

1. where

修改SELECT语句。执行以下查询以将行数限制为DEPARTMENT_ID 60:

SELECT *
FROM departments
WHERE department_id = ;

2.order by 排序子句

升序

SELECT  LAST_NAME, JOB_ID, HIRE_DATE
FROM employees
WHERE JOB_ID='SA_REP' ORDER
BY HIRE_DATE;

降序

SELECT  LAST_NAME, JOB_ID, HIRE_DATE
FROM employees
WHERE JOB_ID='SA_REP' ORDER
BY HIRE_DATE DESC;

三. 创建架构

示例:您将创建一个名为ONLINE_SHOPPE的模式。该模式描绘了一个与客户群和商品一起运营的在线商店。有关客户的信息存储在CUSTOMERS表中,有关商品的信息存储在COMMODITIES表中,订单详细信息存储在ORDERS表中。

1. 创建用户

  

  数据库管理员执行许多任务 其中一个更常见的任务是创建数据库用户并为其分配唯一的用户名。用户使用用户名和密码登录数据库后,可以发出数据库SQL语句来创建对象,查询对象和管理数据库。创建用户是一种创建模式的方法, 您将执行CREATE USER语句以创建和配置数据库用户。

语法:CREATE USER <USER> IDENTIFIED BY <password>;

1). 执行以下语句以管理员身份连接到数据库,并创建名为ONLINE_SHOPPE的用户。

CONNECT sys/<password> as sysdba;

CREATE USER online_shoppe IDENTIFIED BY online; //创建用户online-shoppe 密码为online

SQL>CREATE USER online_shoppe IDENTIFIED BY online;

User created.

在Oracle数据库中创建了名为ONLINE_SHOPPE的模式。

2. 分配权限

当多个用户访问数据库对象时,您可以使用特权控制对象的授权。权限控制用户是否可以修改另一个用户拥有的对象。通过以下方式授予或撤销它们:

      • 实例管理员
      • 具有ADMIN权限的用户
      • 对象的所有者

通常,有两种类型的权限:

      • 系统特权:对任何对象(例如表,视图和索引)执行特定操作的权限。只有实例管理员或具有ADMIN 权限的用户才能分配或撤消系统权限。
      • 对象权限对象执行特定操作或访问其他用户对象的权限。对象的所有者拥有该对象的所有对象权限,并可以将该对象的对象权限分配给其他数据库用户。

以下是一些基本的系统和对象权限:

系统权限:

      • 创建数据库中任何用户拥有的表,视图或索引
      • 更改数据库中的表,视图或索引
      • 删除数据库中的表,视图或索引

对象特权:

    • 将值插入表中
    • 为表创建外键依赖项
    • 从表中选择
    • 更新表格

您可以使用GRANT语句为用户和角色分配权限。要分配权限,必须为您分配ADMIN OPTION 或GRANT ANY PRIVILEGE系统特权。

语法:GRANT <grant_privilege> TO <user>;

1).

使用CREATE USER 语句创建用户时,默认情况下用户的权限域为空。管理员根据用户将来可能执行的任务为用户分配权限。ONLINE_SHOPPE 用户建立会话,创建表,并针对表写入DML语句。执行以下语句,为ONLINE_SHOPPE用户分配所需的权限:

GRANT CREATE SESSION to online_shoppe;
GRANT CREATE TABLE to online_shoppe;
GRANT UNLIMITED TABLESPACE to online_shoppe;
GRANT SELECT ANY TABLE to online_shoppe;
GRANT UPDATE ANY TABLE to online_shoppe;
GRANT INSERT ANY TABLE to online_shoppe;
GRANT DROP ANY TABLE to online_shoppe;
grant create any trigger to user_name;

2.创建表

ONLINE_SHOPPE 模式中创建表之前,您应该了解表和完整性约束的概念。

    • 表:数据库中数据存储的基本单位。在表中,数据存储在行和列中。您可以使用表名,一组列,数据类型和宽度定义表。

    • 完整性约束:表中列的规则。您可以指定这些规则以在定义它们的列中强制实施数据完整性。Oracle数据库的基本约束包括:

语法:CREATE TABLE [schema。] table 
          (column datatype [DEFAULT expr] [,...]);

执行以下步骤以在架构中创建CUSTOMERS, COMMODITIESORDERS表。

1). 连接到ONLINE_SHOPPE架构并创建CUSTOMERS表,并将CUSTOMER_ID 列作为主键。

 connect ONLINE_SHOPPE/online;  #连接到视图
CREATE TABLE customers(
customer_id VARCHAR2(),
customer_name VARCHAR2(),
address VARCHAR2(),
contact VARCHAR2(),
CONSTRAINT cust_id_pk PRIMARY KEY(customer_id) ); #customer_id作为主键约束,别名为cust_id_pk

2). 创建COMMODITIES与表COMMODITY_ID 列作为主键和UNIT_PRICE 列作为一个非空列。

CREATE TABLE commodities(
commodity_id VARCHAR2(),
commodity_name VARCHAR2(),
unit_price NUMBER(,) NOT NULL,
CONSTRAINT comm_id_pk PRIMARY KEY(commodity_id) );

3). 使用以下命令创建ORDERS表:

  • ORDER_ID列作为主键

  • COMMODITY_IDCUSTOMER_ID 作为外键

  • UNITSTOTAL_COSTNOT NULL

  • 检查数字列上的约束以接受大于零的值

CREATE TABLE orders(
order_id VARCHAR2(),
customer_id VARCHAR2(),
commodity_id VARCHAR2(),
units NUMBER(,) NOT NULL, #整数部分6位数,小数部分2位数
total_cost NUMBER(,) NOT NULL,
CONSTRAINT ordr_id_pk PRIMARY KEY(order_id),
CONSTRAINT ordr_cust_fk FOREIGN KEY (customer_id)REFERENCES customers(customer_id),
CONSTRAINT ordr_comm_fk FOREIGN KEY (commodity_id)REFERENCES commodities(commodity_id),
CONSTRAINT check_unit CHECK(units > ), #约束检查
CONSTRAINT check_totl CHECK(total_cost > ) );

3.插入,修改,删除记录

1).插入数据:执行INSERT 语句以将数据行添加到数据库表。

语法:INSERT INTO table [(column [,column ...])] 
         VALUES(value [,value ...]);

执行以下语句以将数据插入CUSTOMERSCOMMODITIESORDERS 表。

INSERT INTO customers VALUES ('C001', 'BDAVIS', 'Boston', '650.551.4876');
INSERT INTO customers VALUES ('C002', 'SSTEPHEN', 'ST.Louis', '650.501.9321');
INSERT INTO customers VALUES ('C003', 'DCARTER', 'California', '650.507.6632'); INSERT INTO commodities VALUES ('M001', 'DVD Player', );
INSERT INTO commodities VALUES ('M002', 'Cereal', );
INSERT INTO commodities VALUES ('M003', 'Scrabble', ); INSERT INTO orders VALUES ('R001', 'C003', 'M002', , );
INSERT INTO orders VALUES ('R002', 'C001', 'M003', , );
INSERT INTO orders VALUES ('R003', 'C003', 'M001', , );

2). 修改数据:使用UPDATE 语句修改数据库表中的数据行。执行以下语句将DVD播放器的单价从109美元更改为129美元:

UPDATE commodities SET unit_price = 129 WHERE commodity_name = 'DVD Player';

select * from commodities where UNIT_PRICE=;

3). 删除数据:使用DELETE 语句从数据库表中删除数据行。执行以下语句以删除ORDERS表中的第一条记录:

DELETE FROM orders WHERE order_id ='R001';

4.撤销和保存记录(事务)

1). 执行COMMIT语句以保存您在上一节中执行的数据操作事务。

承诺;

 

2). 执行以下语句以删除订单ID为R002的行,并查询ORDERS 表以确保删除该记录。

DELETE FROM orders WHERE order_id ='R002'; 
SELECT * FROM orders;

 


输出显示记录已成功删除。

3). 执行以下语句以撤消删除订单ID为R002的行,  并查询表以显示记录:

ROLLBACK; 
SELECT * FROM orders;

 

之前的DELETE语句已回滚。

注意:使用COMMIT 语句永久保存事务后,无法撤消事务。

5. 删除表

DROP TABLE 语句以从数据库中删除表及其数据

语法:DROP TABLE <table>;

1). 执行DROP TABLE语句以删除CUSTOMERS表。

DROP TABLE customers;

SQL> DROP TABLE ONLINE_SHOPPE.orders;
Table dropped.

由于CUSTOMER_ID 列上的引用完整性约束,将显示错误消息。

2).  包括CASCADE CONSTRAINTS子句以删除表及其参照完整性约束。

DROP TABLE customers CASCADE CONSTRAINTS;

6. 撤销权限

执行REVOKE 语句以撤消用户和角色系统特权。要撤消系统特权或角色,必须使用ADMIN OPTION为您分配特权。

1). 以SYS用户身份连接到数据库,并撤消ONLINE_SHOPPECREATE SESSION权限。

CONNECT sys/<password> as sysdba;
REVOKE CREATE SESSION FROM online_shoppe;

SQL> REVOKE CREATE SESSION FROM online_shoppe;

Revoke succeeded.

2). 以ONLINE_SHOPPE身份连接到数据库。

CONNECT online_shoppe/online;

您无法连接,因为您没有CREATE SESSION权限。

 

oracle 的使用的更多相关文章

  1. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  3. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  4. Oracle 的基本操作符

    != 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...

  5. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  6. 基于Oracle安装Zabbix

    软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...

  7. Oracle Database 12c Data Redaction介绍

    什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...

  8. 使用Oracle官方巡检工具ORAchk巡检数据库

    ORAchk概述 ORAchk是Oracle官方出品的Oracle产品健康检查工具,可以从MOS(My Oracle Support)网站上下载,免费使用.这个工具可以检查Oracle数据库,Gold ...

  9. 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断

    概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...

  10. 使用技术手段限制DBA的危险操作—Oracle Database Vault

    概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...

随机推荐

  1. CreateJS入门 -- 注释详细到爆炸(My Style)

    写在前面 首先,还是谢谢大家的支持,谢谢!记得在之前的文章中我说过自己算是一个半文艺程序员,也一直想着写一写技术性和其他偏文学性的文章.虽然自己的底子没有多么优秀,但总是觉得这个过程中可以督促自己去思 ...

  2. webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)

    webRTC API WebRTC API包括媒体捕获.音频视频的编码和解码.传输层和会话管理. getUserMedia():捕获音频和视频. MediaRecorder:录制音频和视频. RTCP ...

  3. 【leetcode】331. Verify Preorder Serialization of a Binary Tree

    题目如下: One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null ...

  4. 四轴PID思路整理

    参考资料: https://blog.csdn.net/nemol1990/article/details/45131603 https://blog.csdn.net/qq_27114397/art ...

  5. [CSP-S模拟测试]:Revive(点分治)

    题目背景 $Sparkling\ ashes\ drift\ along\ your\ flames \\ And\ softly\ merge\ into\ the\ sky$ 题目传送门(内部题1 ...

  6. Batch批处理中的 参数 路径和字符串 处理详解

    1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: @echo off set ifo=abcdefghijk ...

  7. identityserver4踩坑总结

    1.在配置id4服务端的时候要注意client里面的 AllowedScopes开放的值要和GetIdentityResources中加入的值是一样的,不然调用以后报{"error" ...

  8. nRF51822 蓝牙低功耗和 2.4GHz 专利 SoC

    DESCRIPTION nRF51822 是功能强大.高灵活性的多协议 SoC,非常适用于 Bluetooth® 低功耗和 2.4GHz 超低功耗无线应用. nRF51822 基于配备 256kB f ...

  9. gradle spring 配置解释

    plugins { id 'java' id 'eclipse' id 'idea' # 统一springboot版本号 id 'org.springframework.boot' version ' ...

  10. Mongodb 性能测试

    测试硬件环境 MacPro 处理器名称: Intel Core i7 处理器速度: 2.5 GHz 处理器数目: 1 核总数: 4 L2 缓存(每个核): 256 KB L3 缓存: 6 MB 内存: ...