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.pswp.cn/news/393558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393558.shtml
英文地址,請注明出處:http://en.pswp.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;權…

leetcode744. 尋找比目標字母大的最小字母(二分查找)

給你一個排序后的字符列表 letters &#xff0c;列表中只包含小寫英文字母。另給出一個目標字母 target&#xff0c;請你尋找在這一有序列表里比目標字母大的最小字母。 在比較時&#xff0c;字母是依序循環出現的。舉個例子&#xff1a; 如果目標字母 target ‘z’ 并且字符…

H3C交換機 匯聚接口上應用策略路由

QOS 方式的策略路由只能應用在接口或者Vlan接口上&#xff0c;無法應用在2層或者3層的匯聚接口上可以使用PBR的方式將策略路由應用到接口上&#xff0c;QOS策略路由可以和PBR策略路由共存&#xff0c;并且QOS的優先級更高&#xff0c;先匹配QOS&#xff0c;如果匹配不到再匹配P…

【Java NIO深入研究3】文件鎖

1.1概述——文件鎖 文件鎖定初看起來可能讓人迷惑。它 似乎 指的是防止程序或者用戶訪問特定文件。事實上&#xff0c;文件鎖就像常規的 Java 對象鎖 — 它們是 勸告式的&#xff08;advisory&#xff09; 鎖。它們不阻止任何形式的數據訪問&#xff0c;相反&#xff0c;它們通…

2018-2019-2 網絡對抗技術 20165202 Exp9 Web安全基礎

博客目錄 一、實踐內容 跨站腳本攻擊XSS跨站請求偽造CSRFSQL注入攻擊二、實驗中遇到的問題及解決三、基礎問題回答四、實驗總結一、實踐內容 本實踐的目標理解常用網絡攻擊技術的基本原理。Webgoat實踐下相關實驗。具體過程&#xff1a; 跨站腳本攻擊XSS跨站請求偽造CSRFSQL注入…

leetcode696. 計數二進制子串

給定一個字符串 s&#xff0c;計算具有相同數量0和1的非空(連續)子字符串的數量&#xff0c;并且這些子字符串中的所有0和所有1都是組合在一起的。 重復出現的子串要計算它們出現的次數。 示例 1 : 輸入: “00110011” 輸出: 6 解釋: 有6個子串具有相同數量的連續1和0&#…

idea無法忍受_不要成為無法忍受的軟件開發人員

idea無法忍受by Bruce Flow通過布魯斯流 不要成為無法忍受的軟件開發人員 (Don’t be the software developer you can’t stand working with) I have more than 10 years of industry experience as a software developer. I am working at one of the largest tech compani…

項目需求分析答辯總結

前言 組長成員★530 雨勤311 旭403 俊223 元437 海輝你一定也不想做的 本次作業沒什么可看的 項目需求分析看完記得投幣的 一分鐘宣傳視頻本組對其他各組評審結果 編號團隊名稱項目名稱報告格式/20演示內容/20答辯內容/20PPT制作/20演講/20總分/1001天機組指尖加密15.013.613.6…

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 是一種標記語…

jQ層級選擇器

<!DOCTYPE html><html> <head> <meta charset"utf-8" /> <title></title> </head> <body> </body></html> <h1>沁園春雪</h1> <h2>毛***</h2> <div> <span> <d…

spring 獲取url參數

1. usl格式&#xff1a; http://localhost:8080/contact/delete/3 java代碼 RequestMapping(value"/delete/{id}")public Map<String,Object> delete(PathVariable("id") Integer id){boolean result contactService.deleteContactById(id); 也可以…

leetcode475. 供暖器(二分查找)

冬季已經來臨。 你的任務是設計一個有固定加熱半徑的供暖器向所有房屋供暖。 現在&#xff0c;給出位于一條水平線上的房屋和供暖器的位置&#xff0c;找到可以覆蓋所有房屋的最小加熱半徑。 所以&#xff0c;你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑…

如何在命令行中使用jq將JSON轉換為CSV

by Knut Melvr通過納特梅爾瓦 如何在命令行中使用jq將JSON轉換為CSV (How to transform JSON to CSV using jq in the command line) The shell tool jq is awesome for dealing with JSON-data. It can also transform that data into handy CSV-files, ready for all your s…

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…

異步查詢回調函數調用

異步查詢數據&#xff0c;需要對返回的數據進行后續步驟操作&#xff0c;使用使用方法&#xff1a; 1、new promise方法使用。 2、回調函數使用 使用方式&#xff1a;   pageGetDeviceTreeInfo({deviceTypeAry:[1]},this.getTreeData); 函數&#xff1a; 1 export function p…

前端開發從項目中獲得什么_我如何獲得副項目的前10個客戶以及從他們那里學到的東西...

前端開發從項目中獲得什么by Tigran Hakobyan由Tigran Hakobyan 我如何獲得副項目的前10個客戶以及從他們那里學到的東西 (How I got my first 10 customers for my side-project and what I’ve learned from them) My name is Tigran, I’m 29, and I’m the creator of Cro…

leetcode278. 第一個錯誤的版本(二分查找)

你是產品經理&#xff0c;目前正在帶領一個團隊開發新的產品。不幸的是&#xff0c;你的產品的最新版本沒有通過質量檢測。由于每個版本都是基于之前的版本開發的&#xff0c;所以錯誤的版本之后的所有版本都是錯的。 假設你有 n 個版本 [1, 2, …, n]&#xff0c;你想找出導致…

lrzsz ??linux與windows互傳

2019獨角獸企業重金招聘Python工程師標準>>> lrzsz linux與windows互傳 # 前提是使用 xshell 或者 securecrt 這兩個遠程軟件&#xff0c;putty不支持 yum install -y lrzsz //安裝文件包 linux向windows 傳文件使用 &#xff1a; sz 文件名 回…