關係資料庫—SQL(學習筆記)
SQL的特點:
- 綜合統一
- 高度非過程化(存取路徑的選擇以及SQL的操作過程由系統自動完成)
- 面向集合的操作方式,以同一種語法結構提供多種使用方法(可以在終端鍵盤上直接鍵入SQL命令對資料庫進行操作,也能夠嵌入到高級語言(C,C++,JAVA)程序中)
模式,外模式,和內模式:
關係模型支持三級模式結構:模式,外模式,和內模式;
模式:是指資料庫中全體數據的邏輯結構和特徵的描述,是所有用戶的公共數據視圖。它涉及的僅僅是對於某一類數據的結構和屬性的描述。模式的一個具體值稱為模式的一個實例,同一模式下可以有很多個實例。模式是相對穩定的,而實例是相對變動的。
外模式:也稱子模式,或用戶模式,是資料庫用戶能夠看見和使用的局部數據的邏輯結構和特徵的表述,是資料庫用戶的數據視圖。是與某一應用有關的數據的邏輯表示。
內模式:也稱存儲模式,一個資料庫只有一個內模式。他是數據物理結構和存儲方式的描述,是資料庫內部的組織方式。
模式與外模式的關係:一對多。
外模式與應用的關係:一對多。
其中外模式包括若干視圖和部分基本表,資料庫模式包括若干基本表,內模式包括若干存儲文件。
資料庫,模式,表的關係:
一個資料庫可以建立多個模式,一個模式下通常包括多個表,視圖和索引等資料庫對象;
SQL資料庫定義語句:
- 模式 :創建:create schema 刪除:drop schema
- 表: 創建:create table 刪除:drop table
- 視圖:創建:create view 刪除:drop view
- 索引:創建:create index 刪除:drop index
模式的定義與刪除:
1.定義模式:
Create schema 模式名 authorization 用戶名
定義模式實際上定義了一個命名空間,建立了一個資料庫的命名空間,一個框架。在創建模式時,同時也可以創建基本表,以及視圖,並且可以定義授權。
2.刪除模式:
drop schema 模式名 cascade或者drop schema 模式名 restrict
cascade:為級聯,表示刪除該模式時,刪除該模式中所有的資料庫對象。
Restrict:為限制,表示如果該模式中已經定義了下屬的資料庫對象,則拒絕執行該語句。
基本表:
1.定義基本表:
Create table 表名 (列名 數據類型 列級完整性約束條件,
列名 數據類型 列級完整性約束條件,
表級完整性約束條件);
如果完整性約束涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在表級也可以定義在列級。
例如:
Create table course(Cno char(4) primary key,/* primary key標示主碼*/Cname char(40) not NULL,/* 列級完整性約束條件,Cname 不能為空*/Cpno char(4)Ccredit smallint,foreign key(Cpno)refernces course(Cno) /* 表級完整性約束條件,Cpno是外碼,被參照表是:Cno;*/);
定義表的模式:
方法一:在表中明顯的定義模式名:
Create table 「S-T」.course(…);/*course所屬的模式是S-T*/
方法二:在創建模式的同時創建表;
方法三:設置所屬的模式。
當創建基本表時,若沒有指定模式,系統會根據搜索路徑來確定該對象所屬的模式(搜索結果中第一個存在的模式)。
顯示當前的搜索路徑:
Show search_path; /*默認值是$user,public ,首先搜索與用戶名相同的模式名,不過不存在這使用public*/
設置搜索路徑,如:
Set search_path to 「S-T」,public;
然後創建基本表:
Create table course(…);
2.修改基本表:
Alter table 表名
Add [column] 新列名 數據類型 完整性約束 /*增加新列*/
Add 表級完整性約束 /*增加表級完整性約束*/
Drop [column] 列名 cascade /**強制刪除*/
Drop [column] 列名 restrict
Alter column 列名 數據類型 /*修改原有列定義**/
3.刪除基本表:
Drop table 表名 restrict //有限制條件的刪除,不能被其他的對象引用。
或者Drop table 表名cascade //強制刪除
推薦閱讀:
※讀後感:Volcano-An Extensible and Parallel Query Evaluation System
※新手福音:巨杉資料庫教程專區上線啦!
※事務的ACID特性
※關於幼教行業,或許你有了新的認知 | 企名片&VC SaaS報告
※MySQL資料庫誤刪恢復
TAG:SQL | 資料庫 | MicrosoftSQLServer |