笔记:SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)
?SQL概述及數(shù)據(jù)定義(模式SCHEMA、表TABLE、索引INDEX)的學習筆記。修改與補充
目錄
0.前言
1.思維導圖
2.SQL概述
(1)什么是SQL?
(2)SQL的特點
(3) SQL的基本概念
3.數(shù)據(jù)字典
4.數(shù)據(jù)定義
(1)數(shù)據(jù)定義概覽
?(2)模式的定義與刪除—SCHEMA
?(3)基本表的定義、刪除與修改—TABLE
(4)索引的建立與刪除—INDEX?
0.前言
- 此文章是根據(jù)《數(shù)據(jù)庫系統(tǒng)概論》王珊老師編寫的教材做的筆記和總結(jié),關(guān)于用到的表在另一篇文章里面《數(shù)據(jù)庫系統(tǒng)概論》之數(shù)據(jù)查詢—SELECT(單表查詢、連接查詢、嵌套查詢、集合查詢、多表查詢)
- 數(shù)據(jù)庫是SQL Sever
- 數(shù)據(jù)庫管理系統(tǒng)是Navicat Premium 15
1.思維導圖
2.SQL概述
(1)什么是SQL?
- SQL(Structured Query Language)結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標準語言
- SQL是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言
(2)SQL的特點
① 綜合統(tǒng)一
- 集數(shù)據(jù)定義語言 DDL(Data Definition Language),數(shù)據(jù)操縱語言 DML(Data Manipulation Language),數(shù)據(jù)控制語言 DCL(Data Control Language) 功能于一體。
- 可以獨立完成數(shù)據(jù)庫生命周期中的全部活動:
- 定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫;
- 對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢和更新;
- 數(shù)據(jù)庫重構(gòu)和維護
- 數(shù)據(jù)庫安全性、完整性控制等
- 用戶數(shù)據(jù)庫投入運行后,可根據(jù)需要隨時逐步修改模式,不影響數(shù)據(jù)的運行。
- 數(shù)據(jù)操作符統(tǒng)一
② 高度非過程化
- 非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須制定存取路徑
- SQL只要提出“做什么”,無須了解存取路徑。
- 存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動完成。
③ 面向集合的操作方式
- 非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對象是一條記錄
- SQL采用集合操作方式:
- 操作對象、查找結(jié)果可以是元組的集合
- 一次插入、刪除、更新操作的對象可以是元組的集合
④ 以同一種語法結(jié)構(gòu)提供多種使用方式
- SQL是獨立的語言
- 能夠獨立地用于聯(lián)機交互的使用方式
- SQL又是嵌入式語言
- SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設(shè)計程序時使用
⑤ 語言簡潔,易學易用
- SQL功能極強,完成核心功能只用了9個動詞。
(3) SQL的基本概念
- SQL支持關(guān)系數(shù)據(jù)庫三級模式結(jié)構(gòu)
視圖
- 從一個或幾個基本表導出的表
- 數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù)
- 視圖是一個虛表
- 用戶可以在視圖上再定義視圖
基本表
- 本身獨立存在的表
- SQL中一個關(guān)系就對應(yīng)一個基本表
- 一個(或多個)基本表對應(yīng)一個存儲文件
- 一個表可以帶若干索引
存儲文件
- 邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式
- 物理結(jié)構(gòu)是任意的,對用戶透明
數(shù)據(jù)庫的三級模式?
數(shù)據(jù)庫標準結(jié)構(gòu)是三級模式結(jié)構(gòu),它包括外模式、概念模式、內(nèi)模式。
- 外模式,又稱用戶模式,對應(yīng)于用戶級。它是某個或某幾個用戶所看到的數(shù)據(jù)庫的數(shù)據(jù)視圖,含模式中允許特定用戶使用的那部分數(shù)據(jù)。
- 概念模式,它是由數(shù)據(jù)庫設(shè)計者綜合所有用戶的數(shù)據(jù),包含基本表,按照統(tǒng)一的觀點構(gòu)造的全局邏輯結(jié)構(gòu),是對數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的總體描述。
- 內(nèi)模式又稱存儲模式,對應(yīng)于物理級。它是數(shù)據(jù)庫中全體數(shù)據(jù)的內(nèi)部表示或底層描述,包含存儲文件,描述了數(shù)據(jù)在存儲介質(zhì)上的存儲方式和物理結(jié)構(gòu),對應(yīng)著實際存儲在外存儲介質(zhì)上的數(shù)據(jù)庫。
3.數(shù)據(jù)字典
- 數(shù)據(jù)字典是關(guān)系數(shù)據(jù)庫管理系統(tǒng)內(nèi)部的一組系統(tǒng)表,它記錄了數(shù)據(jù)庫中所有的定義信息,包括關(guān)系模式定義、視圖定義、索引定義、完整性約束定義、各類用戶對數(shù)據(jù)庫的操作權(quán)限、統(tǒng)計信息等。
- 關(guān)系數(shù)據(jù)庫管理系統(tǒng)在執(zhí)行SQL的數(shù)據(jù)定義語句時,實際上就是在更新數(shù)據(jù)字典表中的相應(yīng)信息。
- 在進行查詢優(yōu)化和查詢處理時,數(shù)據(jù)字典中的信息是其重要依據(jù)。
4.數(shù)據(jù)定義
(1)數(shù)據(jù)定義概覽
- SQL的數(shù)據(jù)定義功能:?模式定義、表定義、視圖和索引的定義
?(2)模式的定義與刪除—SCHEMA
定義模式實際上定義了一個命名空間
- 在這個空間中可以定義該模式包含的數(shù)據(jù)庫對象,例如基本表、視圖、索引等。
- 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
- CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>[<表定義子句>|<視圖定義子句>|<授權(quán)定義子句>]
- 如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>
?① 給用戶分配定義模式
dbo database owner 數(shù)據(jù)庫的創(chuàng)建者,創(chuàng)建該對象的用戶. guest 顧客 能夠訪問數(shù)據(jù)庫中對象的數(shù)據(jù), 要求dbo分配權(quán)限給guest, 一般給他查看的權(quán)限select
這里我先創(chuàng)建一個數(shù)據(jù)庫用戶:
?[例1]定義一個學生-課程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION BitHachi;為用戶BitHachi定義了一個模式S-T- 如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>
?[例2]為用戶BitHachi創(chuàng)建了一個模式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(級聯(lián))
刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象全部刪除 - RESTRICT(限制)
如果該模式中定義了下屬的數(shù)據(jù)庫對象(如表、視圖等),則拒絕該刪除語句的執(zhí)行。 - 當該模式中沒有任何下屬的對象時才能執(zhí)行。
- 以下是運行結(jié)果,至于為什么是錯誤的,暫且放在這里,等熟悉相關(guān)知識之后,再來解決。
?(3)基本表的定義、刪除與修改—TABLE
① 定義基本表的標準格式
CREATE TABLE <表名>(<列名> <數(shù)據(jù)類型>[ <列級完整性約束條件> ][,<列名> <數(shù)據(jù)類型>[ <列級完整性約束條件>] ]………[,<表級完整性約束條件> ]);- 如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
② 數(shù)據(jù)類型
-
SQL中域的概念用數(shù)據(jù)類型來實現(xiàn)
-
定義表的屬性時 需要指明其數(shù)據(jù)類型及長度
-
選用哪種數(shù)據(jù)類型
- 取值范圍
- 要做哪些運算
-
以下是通用數(shù)據(jù)類型,不同數(shù)據(jù)庫的數(shù)據(jù)類型可能有所不同,可查相關(guān)文檔。
③ 修改基本表?
ALTER TABLE <表名> [ ADD <新列名> <數(shù)據(jù)類型> [ 完整性約束 ] ] [ DROP <完整性約束名> ] [ ALTER COLUMN<列名> <數(shù)據(jù)類型> ];[例8]向Student表增加“入學時間”列,其數(shù)據(jù)類型為日期型。
- 不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。 ALTER TABLE Student ADD S_entrance DATE;
[例9]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。?
ALTER TABLE Student ALTER COLUMN Sage INT;④ 刪除基本表
標準格式:
DROP TABLE <表名>[RESTRICT| CASCADE];
- RESTRICT:刪除表是有限制的。
- 欲刪除的基本表不能被其他表的約束所引用
- 如果存在依賴該表的對象,則此表不能被刪除
- CASCADE:刪除該表沒有限制。
- 在刪除基本表的同時,相關(guān)的依賴對象一起刪除
[例11] 刪除Student表
- 基本表定義被刪除,數(shù)據(jù)被刪除
- 表上建立的索引、視圖、觸發(fā)器等一般也將被刪除
- 還是和上述刪除模式情況一樣,加了CASCADE和RESTRUCT刪除不了 DROP TABLE Student CASCADE ;
[例12]若表上建有視圖,選擇RESTRICT時表不能刪除?
CREATE VIEW IS_Student AS SELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS';DROP TABLE Student RESTRICT;[例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索引來實現(xiàn)
- B+樹索引具有動態(tài)平衡的優(yōu)點
- HASH索引具有查找速度快的特點
-
采用B+樹,還是HASH索引 則由具體的RDBMS來決定
-
索引是關(guān)系數(shù)據(jù)庫的內(nèi)部實現(xiàn)技術(shù),屬于內(nèi)模式的范疇
-
CREATE INDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引
① 建立索引的標準格式?
語句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);[例13]在Student表的Sname(姓名)列上建立一個聚簇索引
CREATE CLUSTERED INDEX StusnameON Student(Sname);- 在Student表的Sname(姓名)列上建立一個聚簇索引
- 在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率
- 一個基本表上最多只能建立一個聚簇索引
- 經(jīng)常更新的列不宜建立聚簇索引
[例14]為學生-課程數(shù)據(jù)庫中的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 <表名>.<索引名>;?
- 刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的
描述。
[例15] 刪除Student表的Stusname索引
DROP INDEX Stusno ON Student;//等價DROP INDEX Student.Stusno;總結(jié)
以上是生活随笔為你收集整理的笔记:SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瑞萨E1仿真器(R0E000010KCE
- 下一篇: 软件工程网络15个人阅读作业2(2015