最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle?11g數(shù)據(jù)庫常用對(duì)象創(chuàng)建與管理方法詳解

 更新時(shí)間:2025年11月05日 11:33:20   作者:沒有魚myy  
這篇文章主要介紹了Oracle?11g數(shù)據(jù)庫常用對(duì)象創(chuàng)建與管理的相關(guān)資料,Oracle 11g數(shù)據(jù)庫是企業(yè)級(jí)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了強(qiáng)大的數(shù)據(jù)管理功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

引言

在Oracle數(shù)據(jù)庫的浩瀚世界里,數(shù)據(jù)本身固然重要,但如何高效地組織、訪問和管理這些數(shù)據(jù),才是發(fā)揮其強(qiáng)大威力的關(guān)鍵。這一切都離不開數(shù)據(jù)庫對(duì)象。無論是初入行的DBA還是后端開發(fā)人員,熟練掌握Oracle常用對(duì)象的創(chuàng)建與管理都是一項(xiàng)核心技能。

本文將帶您系統(tǒng)地了解Oracle 11g中幾種最常用的數(shù)據(jù)庫對(duì)象,包括表、視圖、序列、索引和同義詞。我們將通過清晰的語法示例和實(shí)用的管理技巧,助您夯實(shí)基礎(chǔ),提升數(shù)據(jù)庫操作能力。

一、表(Table):數(shù)據(jù)的基石

表是數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)的基本單位,由行和列組成。設(shè)計(jì)良好的表結(jié)構(gòu)是高效數(shù)據(jù)庫系統(tǒng)的前提。

1. 創(chuàng)建表

使用 CREATE TABLE 語句,你需要定義列名、數(shù)據(jù)類型和約束。

CREATE TABLE employees (
    employee_id    NUMBER(6)     PRIMARY KEY,
    first_name     VARCHAR2(20),
    last_name      VARCHAR2(25)  NOT NULL,
    email          VARCHAR2(25)  NOT NULL UNIQUE,
    hire_date      DATE          DEFAULT SYSDATE NOT NULL,
    salary         NUMBER(8,2),
    department_id  NUMBER(4),
    -- 定義外鍵約束,關(guān)聯(lián)到部門表
    CONSTRAINT fk_dept_id
        FOREIGN KEY (department_id)
        REFERENCES departments(department_id)
);

關(guān)鍵點(diǎn):

  • 數(shù)據(jù)類型: NUMBERVARCHAR2DATECLOBBLOB 等。

  • 約束: PRIMARY KEYFOREIGN KEYNOT NULLUNIQUECHECK。約束保證了數(shù)據(jù)的完整性和一致性。

2. 管理表

  • 修改表(ALTER TABLE): 用于添加、修改或刪除列,以及添加或刪除約束。

-- 添加新列
ALTER TABLE employees ADD (phone_number VARCHAR2(15));

-- 修改列數(shù)據(jù)類型
ALTER TABLE employees MODIFY (salary NUMBER(9,2));

-- 刪除列
ALTER TABLE employees DROP COLUMN phone_number;

-- 添加約束
ALTER TABLE employees ADD CONSTRAINT chk_salary CHECK (salary > 0);
  •  刪除表(DROP TABLE):
DROP TABLE employees;
-- 謹(jǐn)慎使用!會(huì)刪除表結(jié)構(gòu)和所有數(shù)據(jù)。

DROP TABLE employees CASCADE CONSTRAINTS;
-- 同時(shí)刪除與之相關(guān)的引用完整性約束
  • 重命名表(RENAME):
RENAME employees TO emp_backup;
  • 截?cái)啾恚═RUNCATE TABLE): 快速刪除表中所有數(shù)據(jù),不可回滾,并釋放表空間。
TRUNCATE TABLE emp_backup;

二、視圖(View):虛擬的邏輯窗口

視圖是基于一個(gè)或多個(gè)表的查詢結(jié)果集。它本身不存儲(chǔ)數(shù)據(jù),像一個(gè)預(yù)定義的查詢窗口,簡(jiǎn)化了復(fù)雜查詢,增強(qiáng)了數(shù)據(jù)安全性。

1. 創(chuàng)建視圖

CREATE OR REPLACE VIEW vw_emp_dept AS
SELECT e.employee_id,
       e.first_name || ' ' || e.last_name AS full_name,
       e.salary,
       d.department_name
FROM   employees e
JOIN   departments d ON e.department_id = d.department_id
WHERE  e.salary > 10000;

2. 管理視圖

  • 查詢視圖: 像查詢普通表一樣。

SELECT * FROM vw_emp_dept;
  • 刪除視圖:
DROP VIEW vw_emp_dept;

優(yōu)點(diǎn):

  • 簡(jiǎn)化操作: 將復(fù)雜的多表查詢封裝成一個(gè)簡(jiǎn)單的視圖。

  • 安全性: 可以只暴露視圖中的特定列給用戶,隱藏敏感數(shù)據(jù)。

  • 邏輯獨(dú)立性: 即使底層表結(jié)構(gòu)發(fā)生變化,只需修改視圖定義,而不影響應(yīng)用程序。

三、序列(Sequence):自動(dòng)編號(hào)發(fā)生器

序列是一個(gè)數(shù)據(jù)庫對(duì)象,用于生成唯一的、連續(xù)的整數(shù)編號(hào),通常為主鍵字段提供值。

1. 創(chuàng)建序列

CREATE SEQUENCE seq_emp_id
  INCREMENT BY 1    -- 每次增加1
  START WITH 1000   -- 從1000開始
  NOMAXVALUE        -- 無最大值(或 MAXVALUE 9999)
  NOCYCLE           -- 不循環(huán)
  CACHE 20;         -- 緩存20個(gè)序列值以提高性能

2. 使用序列

  • NEXTVAL: 獲取序列的下一個(gè)值。

  • CURRVAL: 獲取序列的當(dāng)前值(必須先使用 NEXTVAL)。

INSERT INTO employees (employee_id, first_name, last_name, email)
VALUES (seq_emp_id.NEXTVAL, '張', '三', 'zhangsan@example.com');

SELECT seq_emp_id.CURRVAL FROM dual;

3. 管理序列

-- 修改序列(不能修改START WITH,通常用于修改增量、緩存值等)
ALTER SEQUENCE seq_emp_id INCREMENT BY 2;

-- 刪除序列
DROP SEQUENCE seq_emp_id;

四、索引(Index):加速查詢的引擎

索引是一種提高數(shù)據(jù)檢索速度的數(shù)據(jù)庫結(jié)構(gòu),類似于書的目錄。

1. 創(chuàng)建索引

  • 單列索引:

CREATE INDEX idx_emp_last_name ON employees(last_name);
  • 復(fù)合索引:
CREATE INDEX idx_emp_dept_salary ON employees(department_id, salary DESC);
  • 唯一索引:(通常由UNIQUE或PRIMARY KEY約束自動(dòng)創(chuàng)建,也可手動(dòng))
CREATE UNIQUE INDEX idx_emp_email ON employees(email);

2. 管理索引

-- 重建索引(優(yōu)化索引性能)
ALTER INDEX idx_emp_last_name REBUILD;

-- 刪除索引
DROP INDEX idx_emp_last_name;

索引使用場(chǎng)景:

  • 經(jīng)常出現(xiàn)在 WHEREJOIN、ORDER BY 子句中的列。

  • 表的數(shù)據(jù)量很大。

注意事項(xiàng):

  • 索引會(huì)占用存儲(chǔ)空間。

  • 會(huì)降低 INSERTUPDATEDELETE 數(shù)據(jù)的速度,因?yàn)樗饕残枰S護(hù)。

五,作業(yè)

1.Views表:

Column NameType
article_idint
author_idint
viewer_id int
view_datedata

此表可能會(huì)存在重復(fù)行。(換句話說,在 SQL 中這個(gè)表沒有主鍵)

此表的每一行都表示某人在某天瀏覽了某位作者的某篇文章。

請(qǐng)注意,同一人的 author_id 和 viewer_id 是相同的。

請(qǐng)查詢出所有瀏覽過自己文章的作者。

結(jié)果按照作者的 id 升序排列。

查詢結(jié)果的格式如下所示:

輸入:

-- 創(chuàng)建 Views 表
CREATE TABLE Views (
    article_id INT,
    author_id INT,
    viewer_id INT,
    view_date DATE
);

-- 插入示例數(shù)據(jù)
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (1, 3, 5, DATE '2019-08-01');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (1, 3, 6, DATE '2019-08-02');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (2, 7, 7, DATE '2019-08-01');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (2, 7, 6, DATE '2019-08-02');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (4, 7, 1, DATE '2019-07-22');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (3, 4, 4, DATE '2019-07-21');
INSERT INTO Views (article_id, author_id, viewer_id, view_date) VALUES (3, 4, 4, DATE '2019-07-21');

-- 查詢驗(yàn)證
SELECT * FROM Views;

輸入結(jié)果:

輸出:

SELECT DISTINCT author_id AS id
FROM Views
WHERE author_id = viewer_id
ORDER BY author_id;

輸出結(jié)果:

2、表:Tweets

Column Name Type
tweet_idint
content varchar

在 SQL 中,tweet_id 是這個(gè)表的主鍵。

content 只包含字母數(shù)字字符,'!',' ',不包含其它特殊字符。

這個(gè)表包含某社交媒體 App 中所有的推文。

查詢所有無效推文的編號(hào)(ID)。當(dāng)推文內(nèi)容中的字符數(shù)嚴(yán)格大于 15 時(shí),該推文是無效的。

以任意順序返回結(jié)果表。

查詢結(jié)果格式如下所示:

輸入:

-- 創(chuàng)建 Tweets 表
CREATE TABLE Tweets (
    tweet_id INT PRIMARY KEY,
    content VARCHAR2(4000)
);

-- 插入示例數(shù)據(jù)
INSERT INTO Tweets (tweet_id, content) VALUES (1, 'Vote for Biden');
INSERT INTO Tweets (tweet_id, content) VALUES (2, 'Let us make America great again!');

-- 查詢驗(yàn)證
SELECT * FROM Tweets;

輸入結(jié)果:

輸出:

SELECT tweet_id
FROM Tweets
WHERE LENGTH(content) > 15;

輸出結(jié)果:

3、表:Visits

Column NameType
visit_idint
 customer_idint

visit_id 是該表中具有唯一值的列。

該表包含有關(guān)光臨過購(gòu)物中心的顧客的信息

Column NameType
transaction_idint
visit_id      int
amountint

transaction_id 是該表中具有唯一值的列。

此表包含 visit_id 期間進(jìn)行的交易的信息。

有一些顧客可能光顧了購(gòu)物中心但沒有進(jìn)行交易。請(qǐng)你編寫一個(gè)解決方案,來查找這些顧客的 ID ,以及他們只光顧不交易的次數(shù)。

返回以 任何順序 排序的結(jié)果表。

返回結(jié)果格式如下例所示。

輸入:

-- 創(chuàng)建 Visits 表
CREATE TABLE Visits (
    visit_id INT PRIMARY KEY,
    customer_id INT
);

-- 創(chuàng)建 Transactions 表
CREATE TABLE Transactions (
    transaction_id INT PRIMARY KEY,
    visit_id INT,
    amount INT
);

-- 插入 Visits 示例數(shù)據(jù)
INSERT INTO Visits (visit_id, customer_id) VALUES (1, 23);
INSERT INTO Visits (visit_id, customer_id) VALUES (2, 9);
INSERT INTO Visits (visit_id, customer_id) VALUES (4, 30);
INSERT INTO Visits (visit_id, customer_id) VALUES (5, 54);
INSERT INTO Visits (visit_id, customer_id) VALUES (6, 96);
INSERT INTO Visits (visit_id, customer_id) VALUES (7, 54);
INSERT INTO Visits (visit_id, customer_id) VALUES (8, 54);

-- 插入 Transactions 示例數(shù)據(jù)
INSERT INTO Transactions (transaction_id, visit_id, amount) VALUES (2, 5, 310);
INSERT INTO Transactions (transaction_id, visit_id, amount) VALUES (3, 5, 300);
INSERT INTO Transactions (transaction_id, visit_id, amount) VALUES (9, 5, 200);
INSERT INTO Transactions (transaction_id, visit_id, amount) VALUES (12, 1, 910);
INSERT INTO Transactions (transaction_id, visit_id, amount) VALUES (13, 2, 970);

-- 查詢驗(yàn)證
SELECT * FROM Visits;
SELECT * FROM Transactions;

輸入結(jié)果:

輸出:

SELECT v.customer_id, COUNT(*) AS count_no_trans
FROM Visits v
LEFT JOIN Transactions t ON v.visit_id = t.visit_id
WHERE t.transaction_id IS NULL
GROUP BY v.customer_id
ORDER BY count_no_trans DESC, v.customer_id;

輸出結(jié)果:

總結(jié)   

到此這篇關(guān)于Oracle 11g數(shù)據(jù)庫常用對(duì)象創(chuàng)建與管理方法詳解的文章就介紹到這了,更多相關(guān)Oracle 11g對(duì)象創(chuàng)建與管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Oracle查看SQL執(zhí)行計(jì)劃的常見方法總結(jié)

    Oracle查看SQL執(zhí)行計(jì)劃的常見方法總結(jié)

    在日常的運(yùn)維工作中,SQL優(yōu)化是DBA的進(jìn)階技能,SQL優(yōu)化的前提是要看SQL的執(zhí)行計(jì)劃是否正確,這篇文章主要介紹了Oracle查看SQL執(zhí)行計(jì)劃的常見方法,需要的朋友可以參考下
    2025-08-08
  • Oracle中nvl()和nvl2()函數(shù)實(shí)例詳解

    Oracle中nvl()和nvl2()函數(shù)實(shí)例詳解

    NVL函數(shù)的功能是實(shí)現(xiàn)空值的轉(zhuǎn)換,根據(jù)第一個(gè)表達(dá)式的值是否為空值來返回響應(yīng)的列名或表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Oracle中nvl()和nvl2()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • PLsql?Oracle?下載安裝圖文過程詳解

    PLsql?Oracle?下載安裝圖文過程詳解

    PL/SQLDeveloper是一款用于開發(fā)Oracle數(shù)據(jù)庫的集成開發(fā)環(huán)境,可以通過官網(wǎng)下載安裝配置,并通過配置tnsnames.ora文件及環(huán)境變量來連接Oracle數(shù)據(jù)庫,當(dāng)試用期到期時(shí),可以通過修改注冊(cè)表來重置試用期,對(duì)PLsql?Oracle?下載安裝相關(guān)操作感興趣的朋友一起看看吧
    2025-02-02
  • Oracle數(shù)據(jù)庫中創(chuàng)建自增主鍵的實(shí)例教程

    Oracle數(shù)據(jù)庫中創(chuàng)建自增主鍵的實(shí)例教程

    Oracle的字段自增功能,可以利用創(chuàng)建觸發(fā)器的方式來實(shí)現(xiàn),接下來我們就來看看Oracle數(shù)據(jù)庫中創(chuàng)建自增主鍵的實(shí)例教程,需要的朋友可以參考下
    2016-05-05
  • Oracle通過RMAN備份至MinIO且防止數(shù)據(jù)刪除的詳細(xì)步驟

    Oracle通過RMAN備份至MinIO且防止數(shù)據(jù)刪除的詳細(xì)步驟

    本文提供了一個(gè)簡(jiǎn)單的測(cè)試方案,用于將Oracle數(shù)據(jù)庫通過RMAN備份到MinIO,并重點(diǎn)配置MinIO以防止備份文件被誤刪除,方案涵蓋了環(huán)境準(zhǔn)備、MinIO和RMAN的配置、防誤刪功能測(cè)試以及恢復(fù)驗(yàn)證等步驟,需要的朋友可以參考下
    2026-03-03
  • Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡(jiǎn)單使用介紹

    Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡(jiǎn)單使用介紹

    在oracle中sequence就是所謂的序列號(hào),每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號(hào)排序的地方接下來為大家介紹下Oracle創(chuàng)建自增字段方法感興趣的各位可不要錯(cuò)過了哈
    2013-03-03
  • Oracle查詢表占用空間的三種方法

    Oracle查詢表占用空間的三種方法

    在Oracle數(shù)據(jù)庫管理中,了解特定表或索引所占用的空間對(duì)于性能調(diào)優(yōu)、存儲(chǔ)規(guī)劃以及資源分配至關(guān)重要,本文檔介紹了三種常用的方法來查詢Oracle數(shù)據(jù)庫中表占用的空間,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • Oracle 查找與刪除表中重復(fù)記錄的步驟方法

    Oracle 查找與刪除表中重復(fù)記錄的步驟方法

    案例:一個(gè)應(yīng)用表中的一個(gè)字段是主鍵,向表中插入數(shù)據(jù)時(shí),先把數(shù)據(jù)放在臨時(shí)表中(沒有主鍵)然后再插入應(yīng)用表。
    2013-04-04
  • Oracle 存儲(chǔ)過程加密方法

    Oracle 存儲(chǔ)過程加密方法

    Oracle 存儲(chǔ)過程加密方法,需要的朋友可以參考下。
    2009-10-10
  • oracle創(chuàng)建用戶過程詳解

    oracle創(chuàng)建用戶過程詳解

    這篇文章主要介紹了oracle創(chuàng)建用戶過程詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

晴隆县| 康平县| 黔东| 融水| 渭源县| 张家港市| 阿坝县| 江城| 湟源县| 壶关县| 驻马店市| 隆回县| 海丰县| 玉门市| 龙口市| 竹山县| 大田县| 偃师市| 广州市| 陆川县| 乌什县| 达州市| 大悟县| 昆山市| 清徐县| 公主岭市| 宁河县| 灵丘县| 盐亭县| 北宁市| 宝鸡市| 阿勒泰市| 色达县| 集贤县| 巫溪县| 库伦旗| 南溪县| 新河县| 宁阳县| 灵石县| 内黄县|