第8章 SQL语言(一)
1、SQL(Structured Query Language),結(jié)構(gòu)化查詢(xún)語(yǔ)言,1974年Boyce和Chhamberlin提出,是一種通用的、功能強(qiáng)大的關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言
2、SQL包含數(shù)據(jù)查詢(xún)、數(shù)據(jù)操縱、數(shù)據(jù)定義、數(shù)據(jù)控制功能
3、基本表:實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中的表(真實(shí)的表)
4、視圖:由若干個(gè)基本表或其他視圖導(dǎo)出的表,是一個(gè)虛表(虛表)
數(shù)據(jù)庫(kù)語(yǔ)言概述
1、任何一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)都應(yīng)向用戶(hù)提供一種數(shù)據(jù)庫(kù)語(yǔ)言,包含數(shù)據(jù)定義語(yǔ)言和數(shù)據(jù)操縱語(yǔ)言(不同的數(shù)據(jù)庫(kù)有自己的數(shù)據(jù)庫(kù)語(yǔ)言,例如:mysql數(shù)據(jù)庫(kù)的SQL語(yǔ)言,oracle數(shù)據(jù)庫(kù)的SQL語(yǔ)言,大部分是相同的,但是部分地方存在“方言”差異,標(biāo)注SQL也就是保證了大部分語(yǔ)法的相似)
2、SQL語(yǔ)言是集數(shù)據(jù)定義和數(shù)據(jù)操縱為一體的典型數(shù)據(jù)庫(kù)語(yǔ)言
3、數(shù)據(jù)定義語(yǔ)言(Data Definition Language,DDL),用來(lái)定義數(shù)據(jù)庫(kù)模式。包含數(shù)據(jù)庫(kù)模式定義、數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)和存取方法定義,數(shù)據(jù)庫(kù)模式的修改和刪除功能
4、數(shù)據(jù)操縱語(yǔ)言(Data Manipulation Language,DML),用來(lái)表示用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作請(qǐng)求,主要包含增刪改查(也是開(kāi)發(fā)人員最常使用到的),其中,最核心的就是數(shù)據(jù)的查詢(xún)
5、SQL特點(diǎn)
- 綜合統(tǒng)一
- 高度非過(guò)程化:進(jìn)行數(shù)據(jù)操作時(shí),只需要說(shuō)做什么,無(wú)需指出怎么做
- 面向集合的操作方式
- 兩種使用方式:用于在終端輸入sql命令對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作(也稱(chēng)為自含式語(yǔ)言),將sql語(yǔ)言嵌入到高級(jí)語(yǔ)言程序中(嵌入式語(yǔ)言)
- 語(yǔ)言簡(jiǎn)潔,易學(xué)易用,核心動(dòng)詞9個(gè),包含如下4類(lèi):
(1)數(shù)據(jù)查詢(xún):select,用于查詢(xún)數(shù)據(jù),使用最多的一個(gè)動(dòng)詞(查詢(xún))
(2)數(shù)據(jù)定義:create、drop、alter,用于創(chuàng)建新表、刪除表、修改表(表結(jié)構(gòu))
(3)數(shù)據(jù)操縱:insert、update、delete,用于數(shù)據(jù)的插入、修改和刪除(對(duì)表中的數(shù)據(jù))
(4)數(shù)據(jù)控制:grant、revoke,用于數(shù)據(jù)庫(kù)對(duì)象訪問(wèn)的權(quán)限授權(quán)和收回授權(quán)(賦予權(quán)限和收回權(quán)限)
6、SQL支持三級(jí)模式結(jié)構(gòu):外模式(視圖)、模式(基本表)、內(nèi)模式(存儲(chǔ)文件)
7、SQL的基本組成
- 數(shù)據(jù)定義語(yǔ)言:提供定義關(guān)系模式和視圖、刪除關(guān)系和視圖、修改關(guān)系模式的命令
- 交互式數(shù)據(jù)操縱語(yǔ)言:增刪改查的命令
- 事務(wù)控制:事務(wù)開(kāi)始和結(jié)束的命令
- 嵌入式sql和動(dòng)態(tài)sql:高級(jí)語(yǔ)言中混合sql命令
- 完整性:數(shù)據(jù)滿(mǎn)足完整性約束條件,不滿(mǎn)足條件則無(wú)法執(zhí)行
- 權(quán)限管理:數(shù)據(jù)定義中包含對(duì)關(guān)系和視圖的訪問(wèn)權(quán)限
8、SQL支持的內(nèi)部域類(lèi)型(SQL數(shù)據(jù)類(lèi)型)
| 類(lèi)型 | 說(shuō)明 |
| char(n) | 固定長(zhǎng)度字符串,表示n個(gè)字符的固定長(zhǎng)度字符串 |
| varchar(n) | 可變長(zhǎng)度字符串,表示最多可以有n個(gè)字符的字符串 |
| int | 整型,也可以用integer |
| smallint | 短整型 |
| numerical(p,d) | 定點(diǎn)數(shù)p為整數(shù)位,d為小數(shù)位 |
| real | 浮點(diǎn)型 |
| double | 雙精度浮點(diǎn)型 |
| float(n) | n為浮點(diǎn)型 |
| boolean | 布爾型 |
| date | 日期型 |
| time | 時(shí)間型 |
9、創(chuàng)建表(create table)
語(yǔ)法格式:create table 表名(列名1 數(shù)據(jù)類(lèi)型 列級(jí)完整性約束條件,列名2?數(shù)據(jù)類(lèi)型 列級(jí)完整性約束條件,...,表級(jí)完整性約束條件)
列級(jí)完整性約束條件主要有:非空、取值唯一等。表約束主要有外鍵等
【題外話:感覺(jué)mysql做得挺好,依據(jù)help create,看著給出的提示都能寫(xiě)出SQL代碼,還無(wú)需記憶太多,但關(guān)鍵動(dòng)詞還是要自己能記憶】
例題:建立一個(gè)供應(yīng)商、零件數(shù)據(jù)庫(kù)。其中關(guān)系供應(yīng)商S(Sno,Sname,Status, City)屬性名分別表示供應(yīng)商代碼、供應(yīng)商名、供應(yīng)商狀態(tài)和供應(yīng)商所在城市;關(guān)系零件P(Pno,Pname, Color,Weight,City)屬性名分別表示零件號(hào)、零件名、顏色、重量及產(chǎn)地。該數(shù)據(jù)庫(kù)要滿(mǎn)足如下:
(1)供應(yīng)商代碼不能為空,且值是唯一的,供應(yīng)商的名也是唯一的。
(2)零件號(hào)不能為空,且值是唯一的;零件名不能為空。
(3)一個(gè)供應(yīng)商可以供應(yīng)多個(gè)零件,而一個(gè)零件可以由多個(gè)供應(yīng)商供應(yīng)。
分析:
1、首先,根據(jù)題意,存在兩個(gè)基本表,分別是供應(yīng)商表和零件表,表名和列名都給出了,建表的時(shí)候需要注意一下約束條件即可,這兩個(gè)表的創(chuàng)建基本沒(méi)有什么問(wèn)題
2、根據(jù)(3),說(shuō)明供應(yīng)商和零件之間是多對(duì)多的關(guān)系,那么應(yīng)該建立一個(gè)聯(lián)系表,表名為SP,使用基本表的名字來(lái)構(gòu)成聯(lián)系表,應(yīng)該沒(méi)有什么問(wèn)題,哪個(gè)供應(yīng)商供應(yīng)哪一個(gè)型號(hào)的零件,故需要Sno和Pno來(lái)構(gòu)成聯(lián)系表的主碼,且分別又是基本表中的,所以還要設(shè)置外碼約束,這點(diǎn)應(yīng)該也沒(méi)有什么問(wèn)題,最難的是:聯(lián)系表中還有其他的屬性,供應(yīng)商在哪些城市進(jìn)行零件生產(chǎn),這是零件的產(chǎn)地,也應(yīng)該算一個(gè)屬性;其次是供應(yīng)商狀態(tài),對(duì)該種零件的供應(yīng)狀況。
經(jīng)過(guò)分析,創(chuàng)建表的時(shí)候需要注意單詞不要寫(xiě)錯(cuò),如:foreign primary references unique create這幾個(gè)看起來(lái)比較長(zhǎng)的單詞,還有就是經(jīng)常使用電腦,自己手寫(xiě)的時(shí)候容易寫(xiě)錯(cuò),要多練習(xí)練習(xí)。
總結(jié)
以上是生活随笔為你收集整理的第8章 SQL语言(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql8.0.23下载安装详细教程
- 下一篇: 深度之眼 | 《如何高效度论文》笔记