資料庫 - 關聯式資料庫標準語言SQL
SQL(Structured Query Language)
結構化查詢語言,是關聯式資料庫的標準語言
SQL是一個通用的、功能極強的關聯式資料庫語言
SQL特點
1.綜合統一
集資料定義語言(DDL),資料操縱語言(DML),資料控制語言(DCL)功能於一體。
可以獨立完成資料庫生命週期中的全部活動:
定義關係模式,插入資料,建立資料庫;
對資料庫中的資料進行查詢和更新;
資料庫重構和維護
資料庫安全性、完整性控制等
使用者資料庫投入執行後,可根據需要隨時逐步修改模式,不影響資料的執行。
資料操作符統一
非關係資料模型的資料操縱語言“程式導向”,必須制定存取路徑
SQL只要提出“做什麼”,無須瞭解存取路徑。
存取路徑的選擇以及SQL的操作過程由系統自動完成。
非關係資料模型採用面向記錄的操作方式,操作物件是一條記錄
SQL採用集合操作方式
操作物件、查詢結果可以是元組的集合
一次插入、刪除、更新操作的物件可以是元組的集合
SQL是獨立的語言
能夠獨立地用於聯機互動的使用方式
SQL又是嵌入式語言
SQL能夠嵌入到高階語言(例如C,C++,Java)程式中,供程式設計師設計程式時使用
SQL的基本概念
基本表
本身獨立存在的表
SQL中一個關係就對應一個基本表
一個(或多個)基本表對應一個儲存檔案
一個表可以帶若干索引
儲存檔案
邏輯結構組成了關聯式資料庫的內模式
物理結構是任意的,對使用者透明
檢視
從一個或幾個基本表匯出的表
資料庫中只存放檢視的定義而不存放檢視對應的資料
檢視是一個虛表
使用者可以在檢視上再定義檢視
學生-課程 資料庫設計
學生-課程模式 S-T :
學生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學生選課表:SC(Sno,Cno,Grade)
學號 | 姓名 | 性別 | 年齡 | 所在系 |
---|---|---|---|---|
200215121 | 張三 | 男 | 21 | CS |
200215122 | 李四 | 女 | 22 | MA |
200215123 | 王五 | 男 | 25 | IA |
定義模式
[例1]定義一個學生-課程模式S-T
CREATE SCHEMA “S-T” AUTHORIZATION WANG;
為使用者WANG定義了一個模式S-T
[例2]CREATE SCHEMA AUTHORIZATION WANG;
<模式名>隱含為使用者名稱WANG
定義模式實際上定義了一個名稱空間
在這個空間中可以定義該模式包含的資料庫物件,例如基本表、檢視、索引等。
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
CREATE SCHEMA <模式名> AUTHORIZATION <使用者名稱>[<表定義子句>|<檢視定義子句>|<授權定義子句>]
[例3]
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
為使用者ZHANG建立了一個模式TEST,並在其中定義了一個表TAB1。
刪除模式
DROP SCHEMA (模式名) (CASCADE|RESTRICT)
CASCADE(級聯)
刪除模式的同時把該模式中所有的資料庫物件全部刪除
RESTRICT(限制)
如果該模式中定義了下屬的資料庫物件(如表、檢視等),則拒絕該刪除語句的執行。
當該模式中沒有任何下屬的物件時 才能執行。
[例4] DROP SCHEMA ZHANG CASCADE;
刪除模式ZHANG
同時該模式中定義的表TAB1也被刪除
基本表的定義、刪除與修改
一、定義基本表
CREATE TABLE <表名>
(<列名> <資料型別>[ <列級完整性約束條件> ]
[,<列名> <資料型別>[ <列級完整性約束條件>] ] …
[,<表級完整性約束條件> ] );
如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
[例5] 建立“學生”表Student,學號是主碼,姓名取值唯一。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /* 列級完整性約束條件*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
[例6] 建立一個“課程”表Course
CREATE TABLE Course
( Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4) ,
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
[例7] 建立一個“學生選課”表SC
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
/* 主碼由兩個屬性構成,必須作為表級完整性進行定義*/
FOREIGN KEY (Sno) REFERENCES Student(Sno),
/* 表級完整性約束條件,Sno是外碼,被參照表是Student */
FOREIGN KEY (Cno) REFERENCES Course(Cno)
/* 表級完整性約束條件, Cno是外碼,被參照表是Course*/
);
資料型別
SQL中域的概念用資料型別來實現
定義表的屬性時 需要指明其資料型別及長度
選用哪種資料型別
取值範圍
要做哪些運算
模式與表
每一個基本表都屬於某一個模式
一個模式包含多個基本表
定義基本表所屬模式
方法一:在表名中明顯地給出模式名
Create table “S-T”.Student(……); /模式名為 S-T/
Create table “S-T”.Cource(……);
Create table “S-T”.SC(……);
方法二:在建立模式語句中同時建立表
方法三:設定所屬的模式
建立基本表(其他資料庫物件也一樣)時,若沒有指定模式,系統根據搜尋路徑來確定該物件所屬的模式
RDBMS會使用模式列表中第一個存在的模式作為資料庫物件的模式名
若搜尋路徑中的模式名都不存在,系統將給出錯誤
顯示當前的搜尋路徑: SHOW search_path;
搜尋路徑的當前預設值是:$user, PUBLIC
相關文章
- 關聯式資料庫SQL語言略解資料庫SQL
- 關聯式資料庫SQL語言詳解(轉)資料庫SQL
- 實驗一 關聯式資料庫標準語言SQL(持續更新,請重新整理)資料庫SQL
- Web Sql 關聯式資料庫WebSQL資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- 關聯式資料庫很快會替代向量資料庫資料庫
- 【資料庫】優化SQL語言資料庫優化SQL
- SQL資料庫操作語言DCLSQL資料庫
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- 資料庫SQl語言最常用的字串函式資料庫SQL字串函式
- 從關聯式資料庫遷移到NoSQL雲資料庫資料庫SQL
- 【轉載】關聯式資料庫還是NoSQL資料庫資料庫SQL
- 關聯式資料庫設計資料庫
- 關聯式資料庫之父 (轉)資料庫
- C語言標準函式庫C語言函式
- 資料庫SQL語言最常用的數字函式資料庫SQL函式
- 關聯式資料庫分片原則資料庫
- 關聯式資料庫 Query_Execution資料庫
- Oracle標準資料庫稽核Oracle資料庫
- 資料庫-SQL 語法資料庫SQL
- 【資料庫】SQL語句資料庫SQL
- - C語言標準庫C語言
- 關聯式資料庫的封建迷信資料庫
- 從關聯式資料庫遷移到CouchDB資料庫
- Profile標準化資料庫管理資料庫
- Java與資料庫 —— JDBC標準Java資料庫JDBC
- ORACLE資料庫標準審計Oracle資料庫
- 鍵值資料庫與關聯式資料庫有沒有融合的可能?資料庫
- 資料庫操作語言DDL資料庫
- SQL Server資料庫建立新使用者及關聯資料庫的方法教程SQLServer資料庫
- 資料庫關聯問題資料庫
- 資料庫常用sql 語句資料庫SQL
- 資料庫SQL拼接語句資料庫SQL
- 資料庫學習(二)資料操作語言:資料庫
- 從關聯式資料庫向NoSQL遷移資料庫SQL
- go語言標準庫 - logGo
- go語言標準庫 - timeGo
- NoSQL資料庫探討之一 - 為什麼要用非關聯式資料庫?SQL資料庫