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    22/tcp, 8080/tcp, 0.0.0.0:1521->1521/tcp   compassionate_lamportubuntu@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 employeesName                       Null?    Type----------------------------------------- -------- ----------------------------EMPLOYEE_ID                   NOT NULL NUMBER(6)FIRST_NAME                        VARCHAR2(20)LAST_NAME                   NOT NULL VARCHAR2(25)EMAIL                       NOT NULL VARCHAR2(25)PHONE_NUMBER                        VARCHAR2(20)HIRE_DATE                   NOT NULL DATEJOB_ID                    NOT NULL VARCHAR2(10)SALARY                         NUMBER(8,2)COMMISSION_PCT                     NUMBER(2,2)MANAGER_ID                        NUMBER(6)DEPARTMENT_ID                        NUMBER(4)

三.表操作

  查询表

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
------------- ------------------------------ ---------- -----------10 Administration                200        170020 Marketing                 201        180030 Purchasing                114        1700

 

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 = 60;

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(4),customer_name  VARCHAR2(20),address        VARCHAR2(60),contact        VARCHAR2(20), 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(4),commodity_name   VARCHAR2(20),unit_price       NUMBER(8,2) 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(4),customer_id    VARCHAR2(4),commodity_id   VARCHAR2(4),units          NUMBER(8,2) NOT NULL, #整数部分6位数,小数部分2位数total_cost     NUMBER(8,2) 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 > 0),  #约束检查 CONSTRAINT check_totl CHECK(total_cost > 0) );

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', 109);
INSERT INTO commodities VALUES ('M002', 'Cereal', 03);
INSERT INTO commodities VALUES ('M003', 'Scrabble', 29);INSERT INTO orders VALUES ('R001', 'C003', 'M002', 50, 150);
INSERT INTO orders VALUES ('R002', 'C001', 'M003', 30, 87);
INSERT INTO orders VALUES ('R003', 'C003', 'M001', 6, 654);

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

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

select * from commodities where UNIT_PRICE=129;

 

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权限。

 

 

 

转载于:https://www.cnblogs.com/jiangfeilong/p/10923681.html

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

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

相关文章

sql number转varchar_MySQL 指南之 SQL 语句基础

个人所有文章整理在此篇&#xff0c;将陆续更新收录:知无涯&#xff0c;行者之路莫言终(我的编程之路)零、结构化查询语言&#xff1a;SQL(Structured Query Language)DDL 数据定义语言 管理库&#xff0c;表DML 数据操作语言 增删改查 DCL 数据控制语言 数据控制&#xff0c;权…

2018-2019-2 网络对抗技术 20165202 Exp9 Web安全基础

博客目录 一、实践内容 跨站脚本攻击XSS跨站请求伪造CSRFSQL注入攻击二、实验中遇到的问题及解决三、基础问题回答四、实验总结一、实践内容 本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。具体过程&#xff1a; 跨站脚本攻击XSS跨站请求伪造CSRFSQL注入…

xml编辑 html_【c# .net】Xml读写操作(XmlTextReader 类)

Xml读写操作&#xff08;XmlTextReader 类&#xff09;1.XML简介1&#xff09;XML 和 HTML 的设计初衷XML 被设计用来传输和存储数据HTML 被设计用来显示数据2&#xff09;什么是 XML?XML 指可扩展标记语言&#xff08;EXtensible Markup Language&#xff09;XML 是一种标记语…

macaca运行报错之chrome-driver问题处理,关闭 Chrome 的自动更新

自动更新是 Chrome 非常实用的功能之一&#xff0c;但在有些情况下可能还是有关闭自动更新的需求&#xff0c;比如需要用某一个具体的版本来测试一些东西&#xff0c;或者更新之后反而出现了新的 Bug等等。由于一般人没有这样的需求&#xff0c;所以 Google 没有公布关闭自动更…

docker启动sqlserver_Docker搭建SQLServer

一、下载镜像docker pull microsoft/mssql-server-linux二、启动容器docker-composeversion: 3services:sqlserver:image: microsoft/mssql-server-linux:latestrestart: alwaysprivileged: truecontainer_name: sqlserverports:- 1433:1433volumes:- ./data:/var/opt/mssql/da…

【Python】 子进程创建与使用subprocess

subprocess *****本文参考了Vamei大神的http://www.cnblogs.com/vamei/archive/2012/09/23/2698014.html   运用subprocess包可以在运行python的进程下进一步开启一个子进程&#xff0c;创建子进程要注意 1. 父进程是否暂停 2.创建出的子进程返回了什么 3.执行出错&#xff0c…

lrzsz   linux与windows互传

2019独角兽企业重金招聘Python工程师标准>>> lrzsz linux与windows互传 # 前提是使用 xshell 或者 securecrt 这两个远程软件&#xff0c;putty不支持 yum install -y lrzsz //安装文件包 linux向windows 传文件使用 &#xff1a; sz 文件名 回…

Spring: (一) -- 春雨润物之 核心IOC

作为一个Java人&#xff0c;想必都或多或少的了解过Spring。对于其优势也能道个一二&#xff0c;诸如方便解耦、支持AOP编程、支持声明式事务、方便测试等等。Spring也不仅仅局限于服务器端开发&#xff0c;它可以做非常多的事情&#xff0c;任何Java应用都可以在简单性、可测试…

XUbuntu22.04之跨平台音频编辑工具(平替Audition):ocenaudio(二百零二)

加粗样式 简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#…

mysql 从服务器同步设置_mysql主从同步配置

1.为什么要主从同步&#xff1f;在Web应用系统中&#xff0c;数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中&#xff0c;数据库集群已经成为必备的配置之一。集群的好处主要有&#xff1a;查询负载、数据库复制备份等。其中Master负责写操作的负载&…

每天一个LINUX命令(pwd)

每天一个LINUX命令&#xff08;pwd&#xff09; 基本信息 pwd: /bin/pwd&#xff0c;显示当前路径的绝对路径 语法&#xff1a;pwd 应用程序位置 which pwd PWD作用 pwd --help或者man pwd PWD的使用 pwd 转载于:https://www.cnblogs.com/shanshanliu/p/6542403.html

一个swiper 两个分页器的写法【总结】

写项目的时候&#xff0c;使用的是swiper插件呈现的效果是一个swiper要实现两个分页器&#xff0c;下面就来总结一下 以swiper3为例来写&#xff0c;在页面中引入jquery、swiper.min.js和swiper.min.css文件。 HTML结构&#xff1a; <div class"banner swiper-containe…

python 爬虫可视化编程_Python爬虫爬取博客实现可视化过程解析

源码&#xff1a;from pyecharts import Barimport reimport requestsnum0b[]for i in range(1,11):linkhttps://www.cnblogs.com/echoDetected/default.html?pagestr(i)headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko…

linux 一键安装lnmp

运行下面这天命令&#xff0c;回车 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp 选择数据库版本&#xff0c;回车 设置MySQL的root密码&#xff08;为了安全不…

PHP上传文件到七牛云和阿里云

七牛云上传 注册七牛云账号并认证 进入控制台找到对象存储添加一个新的仓库 添加完成之后看文档 安装 使用 Composer 安装 Composer是 PHP 依赖管理工具。你可以在自己的项目中声明所依赖的外部工具库&#xff0c;Composer 会自动帮你安装这些依赖的库文件。    1. 安装…

变态青蛙跳

2019独角兽企业重金招聘Python工程师标准>>> 题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 相比普通青蛙跳&#xff0c;这个 n级的就有点难了&#xff0c;重点是 能跳n级&…

Django——认证系统(Day72)

阅读目录 COOKIE 与 SESSION 用户认证 COOKIE 与 SESSION 概念 cookie不属于http协议范围&#xff0c;由于http协议无法保持状态&#xff0c;但实际情况&#xff0c;我们却又需要“保持状态”&#xff0c;因此cookie就是在这样一个场景下诞生。 cookie的工作原理是&#xff1a;…

12-1 12 防盗链 访问控制 php解析 代理

2019独角兽企业重金招聘Python工程师标准>>> 12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109location优先级 http://blog.lishiming.net/?p10012.13 Nginx防盗链 用来…

图片预览------photoswipe 使用

photoswipe 使用 预览图片后&#xff0c;需要点击关闭按钮才能关闭&#xff0c;点击图片事件效果是放大图片&#xff0c;和微信的效果不一致&#xff0c;最后改用微信预览图片的接口了&#xff0c;但是例子可以用&#xff0c;记录一下&#xff01;&#xff01; http://www.cnbl…

SSKeychain

Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用&#xff01; 当然是使用第三方库啦&#xff1a;sskeychain 3000星星的库不开玩笑。github地址&#xff1a;https://github.com/soffes/sskeychain 导入完之后首先&#xff0c;编译一下有无错。 如果是自己手动导入&…