oracle 的使用
一. 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命令提供了一个指定的表或视图的描述。表和视图的描述包含以下信息:
- 列名
- 是否允许每列的空值(NULL或NOT NULL)
- 列的数据类型,例如 DATE,NUMBER, 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, COMMODITIES和ORDERS表。
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_ID和CUSTOMER_ID 作为外键
UNITS和TOTAL_COST为NOT 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 ...]);
执行以下语句以将数据插入CUSTOMERS,COMMODITIES和ORDERS 表。
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_SHOPPE的CREATE 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 的使用的更多相关文章
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- 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. ...
- 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 服务器安装操 ...
- Oracle 的基本操作符
!= 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 基于Oracle安装Zabbix
软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...
- Oracle Database 12c Data Redaction介绍
什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...
- 使用Oracle官方巡检工具ORAchk巡检数据库
ORAchk概述 ORAchk是Oracle官方出品的Oracle产品健康检查工具,可以从MOS(My Oracle Support)网站上下载,免费使用.这个工具可以检查Oracle数据库,Gold ...
- 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断
概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...
- 使用技术手段限制DBA的危险操作—Oracle Database Vault
概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...
随机推荐
- phpstorm 开发php入门
环境:ubuntu phpstorm apache mysql 一.安装软件 安装apache服务器 https://i.cnblogs.com/EditPosts.aspx?postid=1113 ...
- [BZOJ5407]girls
也是CF985G... 容斥+三元环计数 CF数据太弱啦 vis没赋初值-1竟然过了QAQ 所以又调了我半个小时才搞掉QAQ 数数真难QAQ 记得要写#include<vector>!!! ...
- python在windows中运行文件
"d:Program Files\python35\python.exe" hello.txt
- webpack CSS处理loader
loader概念: 首先来介绍一下loader,之前我们用webpack来处理我们写的js代码,并且webpack会自动处理js之间相关的依赖.但是,在开发中我们不仅仅有基本的js代码处理,我们也需要 ...
- 【LeetCode 84】柱状图中最大的矩形
题目链接 [题解] 维护一个单调递增的栈. 会发现栈内的第i个元素的前面一个(i-1)元素在原始的序列中的数字 都是要高于第i个元素的.(或者没有元素) 那么第i个元素往左最多可以扩展到第i-1个元素 ...
- 【Python】用python -m http.server 8888搭建本地局域网
python -m http.server 8888 由于工作中经常会用到局域网中同事之间互传文件,当文件太大时,可以采用局域网ftp之类的方式进行传输. 这里采用python的一个服务,可以快速的搭 ...
- 【BZOJ2946&SPOJ1812】公共串(后缀自动机)
题意:给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 单词的数量<=5,单词的长度至少为1,最大为2000. 思路: #include<bits/stdc++.h> us ...
- linux系统下jdk安装配置
1.有jdk包(linux版) 2.放到linux系统下 3.建议在usr下新建jdk目录之后将jdk文件放到该目录下 3.配置系统信息 /etc/profile 需要配置的信息如下:#set j ...
- BUUCTF | 高明的黑客
这一题一开始我没有理解"www.tar.gz"的涵义,还以为有一个其他的网站叫这个,后来才突然顿悟他也有可能是一个目录!!!地址栏输入”/www.tar.gz“ 然后就可以得到源码 ...
- 【ngx-ueditor】百度编辑器按下Shift键不触发contentChange事件
背景:基于Angular 6,引入ngx-ueditor 发现现象:如果以Shift键+任意键结尾,则ngModel会丢失包含shift键的字符 例如:输入“ABC+AB++++”,则ngModel中 ...