日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)

發布時間:2024/10/14 windows 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 0.前言
    • 1.思維導圖
    • 2.SQL概述
      • (1)什么是SQL?
      • (2)SQL的特點
      • (3) SQL的基本概念
    • 3.數據字典
    • 4.數據定義
      • (1)數據定義概覽
      • (2)模式的定義與刪除---SCHEMA
        • ① 定義模式
        • ② 刪除模式
      • (3)基本表的定義、刪除與修改---TABLE
        • ① 定義基本表的標準格式
        • ② 數據類型
        • ③ 修改基本表
        • ④ 刪除基本表
      • (4)索引的建立與刪除---INDEX
        • ① 建立索引的標準格式
        • ② 刪除索引


0.前言

  • 此文章是根據《數據庫系統概論》王珊老師編寫的教材做的筆記和總結,關于用到的表在我的另一篇文章里面《數據庫系統概論》之數據查詢—SELECT(單表查詢、連接查詢、嵌套查詢、集合查詢、多表查詢)
  • 數據庫是SQL Sever
  • 數據庫管理系統是Navicat Premium 15

1.思維導圖

2.SQL概述

(1)什么是SQL?

  • SQL(Structured Query Language)結構化查詢語言,是關系數據庫的標準語言
  • SQL是一個通用的、功能極強的關系數據庫語言

(2)SQL的特點

① 綜合統一

  • 集數據定義語言 DDL(Data Definition Language),數據操縱語言 DML(Data Manipulation Language),數據控制語言 DCL(Data Control Language) 功能于一體。
  • 可以獨立完成數據庫生命周期中的全部活動:
    • 定義關系模式,插入數據,建立數據庫;
    • 對數據庫中的數據進行查詢和更新;
    • 數據庫重構和維護
    • 數據庫安全性、完整性控制等
  • 用戶數據庫投入運行后,可根據需要隨時逐步修改模式,不影響數據的運行。
  • 數據操作符統一

② 高度非過程化

  • 非關系數據模型的數據操縱語言“面向過程”,必須制定存取路徑
  • SQL只要提出“做什么”,無須了解存取路徑。
  • 存取路徑的選擇以及SQL的操作過程由系統自動完成。

③ 面向集合的操作方式

  • 非關系數據模型采用面向記錄的操作方式,操作對象是一條記錄
  • SQL采用集合操作方式:
    • 操作對象、查找結果可以是元組的集合
    • 一次插入、刪除、更新操作的對象可以是元組的集合

④ 以同一種語法結構提供多種使用方式

  • SQL是獨立的語言
    • 能夠獨立地用于聯機交互的使用方式
  • SQL又是嵌入式語言
    • SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設計程序時使用

⑤ 語言簡潔,易學易用

  • SQL功能極強,完成核心功能只用了9個動詞。
SQL功能動詞
數據查詢SELECT
數據定義CREATE、DROP、ALTER
數據操縱INSERT、UPDATE、DELETE
數據控制GRANT、REVOKE

(3) SQL的基本概念

  • SQL支持關系數據庫三級模式結構


基本表

  • 本身獨立存在的表
  • SQL中一個關系就對應一個基本表
  • 一個(或多個)基本表對應一個存儲文件
  • 一個表可以帶若干索引

存儲文件

  • 邏輯結構組成了關系數據庫的內模式
  • 物理結構是任意的,對用戶透明

視圖

  • 從一個或幾個基本表導出的表
  • 數據庫中只存放視圖的定義而不存放視圖對應的數據
  • 視圖是一個虛表
  • 用戶可以在視圖上再定義視圖

3.數據字典

  • 數據字典是關系數據庫管理系統內部的一組系統表,它記錄了數據庫中所有的定義信息,包括關系模式定義、視圖定義、索引定義、完整性約束定義、各類用戶對數據庫的操作權限、統計信息等。
  • 關系數據庫管理系統在執行SQL的數據定義語句時,實際上就是在更新數據字典表中的相應信息。
  • 在進行查詢優化和查詢處理時,數據字典中的信息是其重要依據。

4.數據定義

(1)數據定義概覽

  • SQL的數據定義功能: 模式定義、表定義、視圖和索引的定義

(2)模式的定義與刪除—SCHEMA

定義模式實際上定義了一個命名空間

  • 在這個空間中可以定義該模式包含的數據庫對象,例如基本表、視圖、索引等。
  • 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
  • CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>[<表定義子句>|<視圖定義子句>|<授權定義子句>]
  • 如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>

① 定義模式

dbo database owner 數據庫的創建者,創建該對象的用戶. guest 顧客 能夠訪問數據庫中對象的數據, 要求dbo分配權限給guest, 一般給他查看的權限select

  • 這里我先創建一個數據庫用戶:

[例1]定義一個學生-課程模式S-T

CREATE SCHEMA "S-T" AUTHORIZATION BitHachi;為用戶BitHachi定義了一個模式S-T

  • 如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>
CREATE SCHEMA AUTHORIZATION BitHachi;<模式名>隱含為用戶名BitHachi這個不知道咋回事,沒出結果,默認模式BitHachi沒創建出來,沒顯示

[例2]為用戶BitHachi創建了一個模式S-T,并在其中定義了一個表TAB1。

CREATE SCHEMA "S-T" AUTHORIZATION BitHachi CREATE TABLE TAB1( COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) );

② 刪除模式

  • DROP SCHEMA <模式名> <CASCADE|RESTRICT>
  • CASCADE(級聯)
    刪除模式的同時把該模式中所有的數據庫對象全部刪除
  • RESTRICT(限制)
    如果該模式中定義了下屬的數據庫對象(如表、視圖等),則拒絕該刪除語句的執行。
  • 當該模式中沒有任何下屬的對象時才能執行。
  • 以下是運行結果,至于為什么是錯誤的,暫且放在這里,等熟悉相關知識之后,再來解決。
DROP SCHEMA "S-T" CASCADE;

DROP SCHEMA "S-T" RESTRICT;

(3)基本表的定義、刪除與修改—TABLE

① 定義基本表的標準格式

CREATE TABLE <表名>(<列名> <數據類型>[ <列級完整性約束條件> ][<列名> <數據類型>[ <列級完整性約束條件>] ]………[<表級完整性約束條件> ]);
  • 如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
  • 示例:

② 數據類型

  • SQL中域的概念用數據類型來實現

  • 定義表的屬性時 需要指明其數據類型及長度

  • 選用哪種數據類型

    • 取值范圍
    • 要做哪些運算
  • 以下是通用數據類型,不同數據庫的數據類型可能有所不同,可查相關文檔。

③ 修改基本表

ALTER TABLE <表名> [ ADD <新列名> <數據類型> [ 完整性約束 ] ] [ DROP <完整性約束名> ] [ ALTER COLUMN<列名> <數據類型> ]

[例8]向Student表增加“入學時間”列,其數據類型為日期型。

  • 不論基本表中原來是否已有數據,新增加的列一律為空值。
ALTER TABLE Student ADD S_entrance DATE;

[例9]將年齡的數據類型由字符型(假設原來的數據類型是字符型)改為整數。

ALTER TABLE Student ALTER COLUMN Sage INT;


[例10]增加課程名稱必須取唯一值的約束條件。

ALTER TABLE Course ADD UNIQUE(Cname);

④ 刪除基本表

標準格式:
DROP TABLE <表名>[RESTRICT| CASCADE];

  • RESTRICT:刪除表是有限制的。
    • 欲刪除的基本表不能被其他表的約束所引用
    • 如果存在依賴該表的對象,則此表不能被刪除
  • CASCADE:刪除該表沒有限制。
    • 在刪除基本表的同時,相關的依賴對象一起刪除

[例11] 刪除Student表

  • 基本表定義被刪除,數據被刪除
  • 表上建立的索引、視圖、觸發器等一般也將被刪除
  • 還是和上述刪除模式情況一樣,加了CASCADE和RESTRUCT刪除不了 DROP TABLE Student CASCADE ;

[例12]若表上建有視圖,選擇RESTRICT時表不能刪除

CREATE VIEW IS_Student AS SELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS';DROP TABLE Student RESTRICT;

--ERROR: cannot drop table Student because other objects depend on it

[例12]如果選擇CASCADE時可以刪除表,視圖也自動被刪除

  • 這里還是跟之前的情況一樣,刪除不了,可能是我用的數據庫不同叭
DROP TABLE Student CASCADE; --NOTICE: drop cascades to view IS_StudentSELECT * FROM IS_Student; --ERROR: relation " IS_Student " does not exist

(4)索引的建立與刪除—INDEX

建立索引的目的:·加快查詢速度·

  • 誰可以建立索引?

    • DBA 或 表的屬主(即建立表的人)
    • DBMS一般會自動建立以下列上的索引
    • PRIMARY KEY
    • UNIQUE
  • 誰維護索引?
    DBMS自動完成

  • 使用索引
    DBMS自動選擇是否使用索引以及使用哪些索引

  • RDBMS中索引一般采用B+樹、HASH索引來實現

    • B+樹索引具有動態平衡的優點
    • HASH索引具有查找速度快的特點
  • 采用B+樹,還是HASH索引 則由具體的RDBMS來決定

  • 索引是關系數據庫的內部實現技術,屬于內模式的范疇

  • CREATE INDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引

① 建立索引的標準格式

語句格式

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ])

[例13]

CREATE CLUSTERED INDEX StusnameON Student(Sname);

  • 在Student表的Sname(姓名)列上建立一個聚簇索引
  • 在最經常查詢的列上建立聚簇索引以提高查詢效率
  • 一個基本表上最多只能建立一個聚簇索引
  • 經常更新的列不宜建立聚簇索引

[例14]為學生-課程數據庫中的Student,Course,SC三個表建 立索引。

  • Student表按學號升序建唯一索引
  • Course表按課程號升序建唯一索引
  • SC表按學號升序和課程號降序建唯一索引
CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

② 刪除索引

DROP INDEX <索引名> ON <表名>;
DROP INDEX <表名>.<索引名>;

  • 刪除索引時,系統會從數據字典中刪去有關該索引的
    描述。

[例15] 刪除Student表的Stusname索引

DROP INDEX Stusno ON Student;//等價DROP INDEX Student.Stusno;

總結

以上是生活随笔為你收集整理的3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。