《數(shù)據(jù)庫語言SQL》PPT課件
《《數(shù)據(jù)庫語言SQL》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫語言SQL》PPT課件(97頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第 三 章 數(shù) 據(jù) 庫 語 言 SQL 概 述 SQL的 發(fā) 展1974年 , 由 Boyce和 Chamberlin提 出19751979, IBM San Jose Research Lab的關(guān) 系 數(shù) 據(jù) 庫 管 理 系 統(tǒng) 原 型 System R實(shí) 施 了這 種 語 言SQL-86是 第 一 個(gè) SQL標(biāo) 準(zhǔn)SQL-89、 SQL-92(SQL2)、 SQL-99(SQL3) 概 述 現(xiàn) 狀大 部 分 DBMS產(chǎn) 品 都 支 持 SQL, 成 為 操 作數(shù) 據(jù) 庫 的 標(biāo) 準(zhǔn) 語 言有 方 言 , 支 持 程 度 不 同 數(shù) 據(jù) 定 義 ( DDL)定 義 、 刪 除 、 修 改 關(guān)
2、 系 模 式 ( 基 本 表 )定 義 、 刪 除 視 圖 ( View)定 義 、 刪 除 索 引 ( Index) 數(shù) 據(jù) 操 縱 ( DML)數(shù) 據(jù) 查 詢數(shù) 據(jù) 增 、 刪 、 改 數(shù) 據(jù) 控 制 ( DCL)用 戶 訪 問 權(quán) 限 的 授 予 、 收 回概 述 SQL的 功 能 交 互 式 SQL一 般 DBMS都 提 供 聯(lián) 機(jī) 交 互 工 具用 戶 可 直 接 鍵 入 SQL命 令 對(duì) 數(shù) 據(jù) 庫 進(jìn) 行 操 作由 DBMS來 進(jìn) 行 解 釋概 述 SQL的 形 式 嵌 入 式 SQL能 將 SQL語 句 嵌 入 到 高 級(jí) 語 言 ( 宿 主 語 言 )使 應(yīng) 用 程 序 充
3、分 利 用 SQL訪 問 數(shù) 據(jù) 庫 的 能 力 、宿 主 語 言 的 過 程 處 理 能 力一 般 需 要 預(yù) 編 譯 , 將 嵌 入 的 SQL語 句 轉(zhuǎn) 化 為宿 主 語 言 編 譯 器 能 處 理 的 語 句概 述 SQL的 形 式 數(shù) 據(jù) 定 義Create、 Drop、 Alter 數(shù) 據(jù) 操 縱數(shù) 據(jù) 查 詢 : Select數(shù) 據(jù) 修 改 : Insert、 Update、 Delete 數(shù) 據(jù) 控 制Grant、 Revoke概 述 SQL的 動(dòng) 詞 數(shù) 據(jù) 查 詢 是 數(shù) 據(jù) 庫 應(yīng) 用 的 核 心 功 能 基 本 結(jié) 構(gòu)Select A1, A2, ., AnFrom r
4、1, r2, ., rmWhere PA1, A2, ., An(p(r1 r1 . rm)數(shù) 據(jù) 查 詢Select Where From Select語 句 的 含 義 對(duì) From 子 句 中 的 各 關(guān) 系 , 作 笛 卡 兒積 ( ) 對(duì) Where 子 句 中 的 邏 輯 表 達(dá) 式 進(jìn) 行 選擇 ( ) 運(yùn) 算 , 找 出 符 合 條 件 的 元 組 根 據(jù) Select 子 句 中 的 屬 性 列 表 , 對(duì) 上述 結(jié) 果 作 投 影 ( ) 操 作 Select語 句 的 含 義 結(jié) 果 集查 詢 操 作 的 對(duì) 象 是 關(guān) 系 , 結(jié) 果 還 是 一 個(gè) 關(guān)系 , 是 一
5、個(gè) 結(jié) 果 集 , 是 一 個(gè) 動(dòng) 態(tài) 數(shù) 據(jù) 集 Select子 句 對(duì) 應(yīng) 于 關(guān) 系 代 數(shù) 的 投 影 ( ) 運(yùn) 算 , 用以 列 出 查 詢 結(jié) 果 集 中 的 期 望 屬 性 SQL具 有 包 的 特 性 Select 子 句 的 缺 省 情 況 是 保 留 重 復(fù) 元組 ( ALL ) , 可 用 Distinct 去 除 重復(fù) 元 組Select Distinct sdept From StudentSelect All sdept From Student 去 除 重 復(fù) 元 組 :費(fèi) 時(shí) 需 要 臨 時(shí) 表 的 支 持Select子 句 重 復(fù) 元 組 Select子 句
6、 *與 屬 性 列 表 星 號(hào) * 表 示 所 有 屬 性 星 號(hào) * : 按 關(guān) 系 模 式 中 屬 性 的 順 序 排 列 ,并 具 有 一 定 的 邏 輯 數(shù) 據(jù) 獨(dú) 立 性顯 式 列 出 屬 性 名 : 按 用 戶 順 序 排 列Select * From StudentSelect Student.*, cno, gradeFrom Student, SCWhere Student.sno = SC.sno Select子 句 更 名 為 結(jié) 果 集 中 的 某 個(gè) 屬 性 改 名 使 結(jié) 果 集 更 具 可 讀 性Select sno as stu_no, cno as cours
7、e_no, gradeFrom SCSelect sno, sname, 2001 - sage as birthdayFrom Student Where 子 句 where子 句 對(duì) 應(yīng) 與 關(guān) 系 代 數(shù) 中 的 選 擇 () 查 詢 滿 足 指 定 條 件 的 元 組 可 以 通 過 Where子句 來 實(shí) 現(xiàn) 使 where子 句 中 的 邏 輯 表 達(dá) 式 返 回 True值 的元 組 , 是 符 合 要 求 的 元 組 , 將 被 選 擇 出 來 Where 子 句 運(yùn) 算 符 比 較 : 、 、 =、 =、 、 not + 確 定 范 圍 :Between A and B、 N
8、ot Between A and B 確 定 集 合 : IN、 NOT IN 字 符 匹 配 : LIKE, NOT LIKE 空 值 : IS NULL、 IS NOT NULL 多 重 條 件 : AND、 OR、 NOT Where 子 句 Like 字 符 匹 配 : Like、 Not Like 通 配 符 % 匹 配 任 意 字 符 串 _ 匹 配 任 意 一 個(gè) 字 符 大 小 寫 敏 感 Where 子 句 Like例 : 列 出 姓 張 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名 。Select sno, snameFrom StudentWhere sname LIKE 張 %
9、Where 子 句 Like例 : 列 出 張 姓 且 單 名 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名 。Select sno, snameFrom StudentWhere sname LIKE 張 _ _ Where 子 句 轉(zhuǎn) 義 符 escape 例 : 列 出 課 程 名 稱 中 帶 有 _的 課 號(hào) 及 課名 。 Select cno, cnameFrom CourseWhere cname LIKE %_% escape From 子 句 From子 句 對(duì) 應(yīng) 與 關(guān) 系 代 數(shù) 中 的 笛 卡 兒 積( ) 列 出 將 被 掃 描 的 關(guān) 系 ( 表 )例 : 列 出 所 有 學(xué)
10、 生 的 學(xué) 號(hào) 、 姓 名 、 課 號(hào) 、 成 績(jī) 。Select Sudent.sno, sname, SC.cno, gradeFrom Student, SCWhere Student.sno = SC.sno From 子 句 元 組 變 量 為 From 子 句 中 的 關(guān) 系 定 義 元 組 變 量 方 便 關(guān) 系 名 的 引 用 在 同 一 關(guān) 系 的 笛 卡 兒 積 中 進(jìn) 行 辨 別例 : 列 出 與 95001同 歲 的 同 學(xué) 的 學(xué) 號(hào) ,姓 名 ,年 齡Select T.sno,T.sname,T.sageFrom Student as T,Student as S
11、Where S.sno = 95001 ANDT.sage = S.sage Order By子 句 指 定 結(jié) 果 集 中 元 組 的 排 列 次 序 耗 時(shí) ASC( 缺 省 ) 、 DESC、 未 選 中 的 屬 性 例 : 列 出 CS系 中 的 男 生 的 學(xué) 號(hào) 、 姓 名 、 年 齡 , 并 按年 齡 進(jìn) 行 排 列 ( 升 序 )Select sno, sname,sageFrom StudentWhere sdept = CSOrder By sage ASC SQL的 集 合 操 作 SQL的 結(jié) 果 集 是 “ 包 ” 多 個(gè) Select 語 句 的 結(jié) 果 可 以 進(jìn)
12、 行 集 合 操 作 ,使 結(jié) 果 為 “ 集 合 ” ( default) SQL-92支 持 參 加 集 合 操 作 的 關(guān) 系 ( 結(jié) 果 集 ) 必 須 是 相容 的 SQL的 集 合 操 作 相 容 屬 性 個(gè) 數(shù) 必 須 一 致 對(duì) 應(yīng) 的 類 型 必 須 一 致 屬 性 名 無 關(guān) 最 終 結(jié) 果 集 采 用 第 一 個(gè) 結(jié) 果 的 屬 性 名 缺 省 為 自 動(dòng) 去 除 重 復(fù) 元 組除 非 顯 式 說 明 ALL Order By放 在 整 個(gè) 語 句 的 最 后 SQL的 集 合 操 作 并 union( 并 , 對(duì) 應(yīng) 與 關(guān) 系 代 數(shù) 的 ) , 標(biāo) 準(zhǔn)SQL都 支
13、持 的 采 用 集 合 的 觀 點(diǎn) , 合 成 多 個(gè) 查 詢 的 結(jié) 果select - without - order by . UNION ALL select - without - order by . UNION ALL select - without - order by . ORDER BY integer ASC | DESC , . 例 : 查 詢 計(jì) 算 機(jī) 系 的 學(xué) 生 或 者 年 齡 不 大 于 19歲的 學(xué) 生 , 并 按 年 齡 倒 排 序 。SQL的 集 合 操 作 并 intersect( 交 , 對(duì) 應(yīng) 與 關(guān) 系 代 數(shù) 的 ) , 并 不是 所 有
14、的 DBMS都 支 持 例 : 查 詢 計(jì) 算 機(jī) 系 的 學(xué) 生 并 且 年 齡 不 大 于 19歲 的 學(xué) 生 , 并 按 年 齡 倒 排 序 。SQL的 集 合 操 作 交 except( 差 , 對(duì) 應(yīng) 與 關(guān) 系 代 數(shù) 的 ) , 并 不 是所 有 的 DBMS都 支 持 例 : 查 詢 計(jì) 算 機(jī) 系 的 男 生 。SQL的 集 合 操 作 差 數(shù) 據(jù) 定 義 語 言 ( Data Definition Language)Create、 Drop、 Alter定 義 一 組 關(guān) 系 ( 基 本 表 ) 、 說 明 各 關(guān) 系 的 信 息 各 關(guān) 系 的 模 式 各 屬 性 的 值
15、 域 完 整 性 約 束 索 引 安 全 性 和 權(quán) 限數(shù) 據(jù) 定 義 語 言 ( DDL) 字 符 型 char(n) 、 varchar(n) 數(shù) 值 型 integer、 smallint numeric(p,d) real、 double、 float(n) 日 期 /時(shí) 間 型 date timeDDLSQL中 的 域 類 型 域 定 義 語 句 ( SQL-92支 持 )需 重 復(fù) 使 用 的Create Domain stu_name varchar(20)Create Domain zip_code char(6)DDLSQL中 的 域 類 型 Create Table r (
16、A1D1, A2D2, , AnDn,)其 中 :r 關(guān) 系 名 ( 表 名 ) 、 Ai 關(guān) 系 r 的 一 個(gè) 屬 性 名Dn 屬 性 Ai域 值 的 域 類 型主 鍵 聲 明 : primary key (Aj1 , Aj2 , , Ajvm )DDLSQL的 模 式 定 義 Create Domain stu_name varchar(20)Create Table Student (sno char(10) primary key(sno) ,sname stu_name ,sage smallint,ssex char(1),sdept char(2)DDLSQL的 模 式 定 義
17、 Create Table Course (cno char(10) primary key (cno) ,cname varchar(20) ,credit smallint )Create Table SC (sno char(10) not null ,cno char(10) not null ,grade smallint,primary key (sno, cno)DDLSQL的 模 式 定 義 用 SQL刪 除 關(guān) 系 ( 表 )將 整 個(gè) 關(guān) 系 模 式 ( 表 結(jié) 構(gòu) ) 徹 底 刪 除表 中 的 數(shù) 據(jù) 也 將 被 刪 除Drop Table rDrop Table stu
18、dent;DDL刪 除 表 結(jié) 構(gòu) Drop 刪 除 表 中 的 某 屬 性去 除 屬 性 及 相 應(yīng) 的 數(shù) 據(jù)Alter Table r Drop ADDL修 改 模 式 Alter 增 加 表 中 的 屬 性向 已 經(jīng) 存 在 的 表 中 添 加 屬 性allow null已 有 的 元 組 中 該 屬 性 的 值 被 置 為 NullAlter Table r Add A DAlter Table student phone char(16);DDL修 改 模 式 Alter 屬 性 的 默 認(rèn) 值用 戶 不 提 供 某 屬 性 的 值 時(shí) , 默 認(rèn) 值 被 使 用 初 始 值 Ti
19、meStampDDL中 :ModifyDate char(30) Default TimeStamp;Alter Table student Add ID integer Default AutoIncrement;DDL Default Value 定 義 一 個(gè) 新 的 域 ( 用 戶 定 義 的 域 )需 要 重 復(fù) 使 用 的 域必 須 具 有 相 同 類 型 的 屬 性Create Domain As ;Create Domain datelog As char(30) default timestamp 域 的 刪 除Drop Domain datelog各 DBMS的 方 法 是
20、 不 同 的 Restrict/Cascade使 用 該 域 的 屬 性 的 處 理DDL 域 定 義 索 引 是 一 種 數(shù) 據(jù) 結(jié) 構(gòu) , 是 對(duì) 照 表 、 指 針 表 索 引 是 為 了 加 速 對(duì) 表 中 元 組 的 檢 索 而 創(chuàng) 建 的 一 種分 散 存 儲(chǔ) 結(jié) 構(gòu) ( B樹 )索 引 是 對(duì) 表 而 建 立 的 , 由 除 存 放 表 的 數(shù) 據(jù) 頁 面 以 外的 索 引 頁 面 組 成索 引 是 把 雙 刃 劍 , 減 慢 更 新 的 速 度 索 引 不 是 SQL標(biāo) 準(zhǔn) 的 要 求DDL 索 引 Index 索 引 的 種 類聚 簇 索 引 ( Clustered Inde
21、x)非 聚 簇 索 引 ( Non-Clustered Index)DDL 索 引 Index 聚 簇 索 引 ( Clustered Index)表 中 的 元 組 按 聚 簇 索 引 的 順 序 物 理 地 存 放根 級(jí) 頁 面 -中 間 層 頁 面 -葉 級(jí) 頁 面 ( 數(shù) 據(jù) 頁 面 )一 個(gè) 表 中 只 能 有 一 個(gè) 聚 簇 索 引更 新 的 復(fù) 雜 性 , 需 要 大 量 的 臨 時(shí) 空 間DDL 索 引 Index 非 聚 簇 索 引 ( Non-Clustered Index)表 中 元 組 存 儲(chǔ) 的 物 理 順 序 與 索 引 的 順 序 無 關(guān)葉 級(jí) 索 引 頁 面 是
22、 指 向 數(shù) 據(jù) 頁 面 的 指 針每 個(gè) 表 可 有 多 個(gè) 非 聚 簇 索 引DDL 索 引 Index CREATE UNIQUE CLUSTERED | NONCLUSTEREDINDEX index-name On TableName(Column,Column,)Create Index YearIndex On Movie(year);Create Clustered Index SnoIndex On student(sno) ;Drop Index YearIndex;DDL 索 引 Index 查 詢 與 更 新 的 評(píng) 估查 詢 多 ?更 新 多 ? 索 引 的 覆 蓋W
23、here表 達(dá) 式Where表 達(dá) 式 的 順 序 索 引 越 多 越 好 嗎 ? 了 解 優(yōu) 化 器DDL 索 引 的 使 用 數(shù) 據(jù) 添 加用 SQL的 插 入 語 句 , 向 數(shù) 據(jù) 庫 表 中 添 加 數(shù) 據(jù)按 關(guān) 系 模 式 的 屬 性 順 序Insert Into Student Values ( 95001 , 張 三 ,27, M, CS )按 指 定 的 屬 性 順 序 , 也 可 以 只 添 加 部 分 屬 性 ( 非Null屬 性 為 必 需 )Insert Into Student ( sno, sname, sage)Values ( 95002 , 李 四 , 26
24、 ) 把 一 列 中 的 值 進(jìn) 行 聚 合 運(yùn) 算 , 返 回 單 值 的 函 數(shù) 五 個(gè) 預(yù) 定 義 的 聚 合 函 數(shù) 平 均 值 : Avg 總 和 : Sum 最 小 值 : Min 最 大 值 : Max 計(jì) 數(shù) : Count Count(*)、 Count(Distinct)數(shù) 值聚 合 函 數(shù) Group By將 查 詢 結(jié) 果 集 按 某 一 列 或 多 列 的 值 分 組 , 值 相 等的 為 一 組 , 一 個(gè) 分 組 以 一 個(gè) 元 組 的 形 式 出 現(xiàn)只 有 出 現(xiàn) 在 Group By子 句 中 的 屬 性 , 才 可 出 現(xiàn) 在Select子 句 中例 : 統(tǒng)
25、 計(jì) 各 系 學(xué) 生 的 人 數(shù) 。Select sdept, count(*) as stu_countFrom StudentGroup By sdept聚 合 函 數(shù) Having針 對(duì) 聚 合 函 數(shù) 的 結(jié) 果 值 進(jìn) 行 篩 選 ( 選 擇 ) , 它 作 用 于分 組 計(jì) 算 結(jié) 果 集跟 在 Group By子 句 的 后 面 , 沒 有 Group By則 針 對(duì) 全 表例 : 列 出 具 有 兩 門 ( 含 ) 以 上 不 及 格 的 學(xué) 生 的 學(xué) 號(hào) 、 不及 格 的 課 目 數(shù) 。Select sno, count(sno) From SCWhere grade =
26、2聚 合 函 數(shù) Having 與 Where的 區(qū) 別Where 決 定 哪 些 元 組 被 選 擇 參 加 運(yùn) 算 , 作 用 于 關(guān) 系 中的 元 組Having 決 定 哪 些 分 組 符 合 要 求 , 作 用 于 分 組聚 合 函 數(shù) 的 條 件 關(guān) 系 必 須 用 Having, Where中 不 應(yīng) 出現(xiàn) 聚 合 函 數(shù) 聚 合 函 數(shù) 聚 合 函 數(shù) 忽 略 NullCount: 不 計(jì)Sum: 不 將 其 計(jì) 入Avg: 具 有 Null 的 元 組 不 參 與Max / Min: 不 參 與例 : Select count(sdept) From StudentSelec
27、t Avg(sage) From Student聚 合 函 數(shù) Null 子 查 詢 是 嵌 套 在 另 一 查 詢 中 的 Select-From-Where 表 達(dá) 式 ( Where/Having)SQL允 許 多 層 嵌 套 , 由 內(nèi) 而 外 地 進(jìn) 行 分 析 , 子 查詢 的 結(jié) 果 作 為 父 查 詢 的 查 找 條 件可 以 用 多 個(gè) 簡(jiǎn) 單 查 詢 來 構(gòu) 成 復(fù) 雜 查 詢 , 以 增 強(qiáng)SQL的 查 詢 能 力子 查 詢 中 不 使 用 Order By 子 句 , Order By子句 只 能 對(duì) 最 終 查 詢 結(jié) 果 進(jìn) 行 排 序子 查 詢 ( Subquer
28、y ) 返 回 單 值 的 子 查 詢 , 只 返 回 一 行 一 列父 查 詢 與 單 值 子 查 詢 之 間 用 比 較 運(yùn) 算 符 進(jìn) 行 連 接運(yùn) 算 符 : 、 =、 =、 =、 、 例 : 找 出 與 95001同 齡 的 學(xué) 生Select *From StudentWhere sage = ( Select sage From Student Where sno = 95001 )子 查 詢 單 值 比 較 子 查 詢 返 回 多 行 一 列運(yùn) 算 符 : In、 All、 Some(Any)、 Exists子 查 詢 多 值 標(biāo) 量 值 與 子 查 詢 返 回 集 中 的 某
29、 一 個(gè) 相 等 , true IN 被 用 來 測(cè) 試 多 值 中 的 成 員例 : 查 詢 選 修 C01課 程 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名 。Select sno,snameFrom StudentWhere sno IN ( Select sno From SCWhere cno = C01 )子 查 詢多 行 一 列子 查 詢 多 值 成 員 In 例 : 查 詢 選 修 了 數(shù) 據(jù) 庫 的 學(xué) 生 的 學(xué) 號(hào) 和 姓 名Select sno,snameFrom StudentWhere sno IN ( Select sno From SC Where cno IN ( S
30、elect cnoFrom CourseWhere cname = 數(shù) 據(jù) 庫 )子 查 詢 多 值 成 員 In 多 值 比 較 : 多 行 一 列 父 查 詢 與 多 值 子 查 詢 之 間 的 比 較 需 用 All來 連 接 標(biāo) 量 值 s比 子 查 詢 返 回 集 R中 的 每 個(gè) 都 大 時(shí) , sAll R 為True All表 示 所 有 all、 all、 =all、 all all 等 價(jià) 于 not in例 : 找 出 年 齡 最 小 的 學(xué) 生Select * From Student Where sage Some R為 True 或 s Any R為 True So
31、me(早 期 用 Any)表 示 某 一 個(gè) ,只 要 有 一 個(gè) 即 返 回 真 some、 some、 =some、 some = some 等 價(jià) 于 in、 some 不 等 價(jià) 于 not in 子 查 詢 多 值 比 較 Some/Any 例 : 找 出 不 是 最 小 年 齡 的 學(xué) 生Select * From studentWhere sage some ( Select sage From Student )子 查 詢 多 值 比 較 例 : 找 出 具 有 最 高 平 均 成 績(jī) 的 學(xué) 號(hào) 及 平 均 成 績(jī)Select sno ,avg(grade)From SC G
32、roup By sno Having avg(grade) = all (Select avg(grade) From SC Group By sno) 子 查 詢 多 值 比 較 Exists + 子 查 詢 用 來 判 斷 該 子 查 詢 是 否 返 回 元 組當(dāng) 子 查 詢 的 結(jié) 果 集 非 空 時(shí) , Exists為 True當(dāng) 子 查 詢 的 結(jié) 果 集 為 空 時(shí) , Exists為 False不 關(guān) 心 子 查 詢 的 具 體 內(nèi) 容 , 因 此 用 Select *子 查 詢 存 在 判 斷 Exists 具 有 外 部 引 用 的 子 查 詢 , 稱 為 相 關(guān) 子 查 詢
33、( Correlated Queries)外 層 元 組 的 屬 性 作 為 內(nèi) 層 子 查 詢 的 條 件子 查 詢 相 關(guān) 子 查 詢 例 : 列 出 選 修 了 C01課 程 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名Select sno,snameFrom StudentWhere Exists ( Select * From SC Where SC.sno = Student.sno And cno = C01)子 查 詢 Correlated & Exists 例 : 列 出 得 過 100分 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名Select sno,snameFrom StudentWhe
34、re Exists ( Select * From SCWhere SC.sno = Student.sno Andgrade = 100)子 查 詢 Correlated & Exists 例 : 查 詢 選 修 了 C01課 程 的 學(xué) 生 的 系 主 任Select managerFrom departmentWhere Exists ( Select * From studentWhere sdept = department.depid And Exists ( Select *From SCWhere SC.sno = student.sno Andcno = C01)子 查 詢
35、Correlated & Exists 例 : 列 出 沒 有 選 C01課 程 的 學(xué) 生 的 學(xué) 號(hào) 、 姓 名Select sno,snameFrom StudentWhere Not Exists ( Select * From SCWhere SC.sno = Student.sno Andcno = C01)子 查 詢 Correlated & Not Exists 例 : 查 詢 選 修 了 所 有 課 程 的 學(xué) 生 的 姓 名 (ForAll)Select snameFrom StudentWhere Not Exists ( Select * From CourseWher
36、e Not Exists ( Select *From SCWhere Student.sno = SC.sno AndSC.cno = Co)這 門 課 他 沒 選這 樣 的 課 是 不 存 在 的子 查 詢 Correlated & Not Exists SQL-92支 持 多 列 的 成 員 資 格 測(cè) 試 ( ASA7.0不 支 持 )例 : 找 出 同 系 、 同 年 齡 、 同 性 別 的 學(xué) 生Select *from Student as TWhere ( T.sdept,T.sage,T.ssex) IN ( Select From student as SWhere S.s
37、no T.sno ) 子 查 詢 多 列 元 組 的 比 較 SQL-92允 許 在 From中 使 用 查 詢 表 達(dá) 式必 須 為 其 取 名例 : 查 詢 平 均 成 績(jī) 大 于 75分 的 學(xué) 號(hào) 、 姓 名 、 平 均 成 績(jī) Select stu_no,sname,avg_gradeFrom Student, (Select sno,avg(grade)From SCGroup By sno ) as S (stu_no,avg_grade)Where Student.sno = S.stu_no Andavg_grade 75派 生 關(guān) 系 NULL表 示 數(shù) 據(jù) 的 缺 失 一
38、 個(gè) 確 實(shí) 存 在 , 但 我 們 不 知 道 的 值 對(duì) 本 實(shí) 體 此 數(shù) 值 無 意 義 , 可 能 是 設(shè) 計(jì) 上 的 失 誤是 SQL的 關(guān) 鍵 字 , 用 于 任 何 類 型 描 述 缺 失 的 值UNKONW是 三 值 邏 輯 的 一 個(gè) 真 值 (True/False/Unkonw)空 值 和 連 接 NULL的 運(yùn) 算 法 則對(duì) NULL值 和 其 他 任 何 值 作 算 術(shù) 運(yùn) 算 時(shí) ,結(jié) 果 為 NULL對(duì) NULL值 和 其 他 任 何 值 作 比 較 時(shí) , 結(jié) 果為 UNKOWNIs Null / Is Not Null空 值 和 連 接 Unkown視 Tru
39、e為 1, False為 0, Unkown為 1/2AND: 取 小OR: 取 大NOT: 取 1的 補(bǔ)真 值 表 不 必 死 記 硬 背空 值 和 連 接 關(guān) 系 的 連 接連 接 操 作 是 以 兩 個(gè) 關(guān) 系 為 輸 入 、 將 另 一 個(gè) 關(guān) 系 作 為 結(jié)果 返 回笛 卡 兒 積 、 條 件 連 接 、 自 然 連 接 、 外 連 接自 然 連 接 ( Natural ) : 連 接 條 件 是 兩 個(gè) 關(guān) 系 中 具 有 公 共 名 字 的 所 有 屬 性對(duì) 均 相 等 , 不 需 要 其 他 條 件 對(duì) 每 個(gè) 相 等 屬 性 對(duì) 之 一 進(jìn) 行 投 影 ( 去 除 重 復(fù) 屬
40、 性 ) Student Natural Join SC Student SC 關(guān) 系 的 連 接內(nèi) 連 接 ( Inner Join) : 它 是 條 件 連 接 , 要 求 參 加 連 接 的 關(guān) 系 中 至 少 有 一對(duì) 元 組 滿 足 連 接 要 求 , 才 能 生 成 連 接 關(guān) 系 可 以 是 等 值 連 接 , 也 可 以 是 不 等 值 連 接 新 的 關(guān) 系 的 屬 性 集 是 參 加 連 接 的 關(guān) 系 的 屬 性 的 組合 , 不 去 除 重 復(fù) 屬 性 Inner是 缺 省 的 連 接 方 式 也 可 以 用 笛 卡 兒 積 + 選 擇 的 方 法 實(shí) 現(xiàn) Studen
41、t Inner Join SC on Student.sno = SC.sno 關(guān) 系 的 連 接外 連 接 ( Outer Join ) :它 是 條 件 連 接 , 且 條 件 是 必 需 的 。若 一 個(gè) 關(guān) 系 中 的 元 組 在 另 一 個(gè) 關(guān) 系 中 沒 有 相 匹 配 的元 組 , 則 這 些 元 組 會(huì) 在 連 接 結(jié) 果 中 出 現(xiàn) , 并 在 另 一個(gè) 關(guān) 系 的 其 他 屬 性 位 置 上 放 上 Null, 而 不 是 像 Inner 那 樣 被 忽 略 。新 的 關(guān) 系 的 屬 性 集 是 參 加 連 接 的 關(guān) 系 的 屬 性 的 組 合 ,不 去 除 重 復(fù) 屬
42、性有 左 外 連 接 、 右 外 連 接 、 全 外 連 接 關(guān) 系 的 連 接左 外 連 接 ( Left Outer Join ) :Select *From ( Student Left Outer Join SCon Student.sno = SC.sno) 右 外 連 接 ( Right Outer Join ) :Select *From ( Student Right Outer Join SCon Student.sno = SC.sno) 全 外 連 接 ( Full Outer Join ) :Select *From ( Student Full Outer Join
43、SCon Student.sno = SC.sno) 數(shù) 據(jù) 庫 的 修 改數(shù) 據(jù) 庫 修 改 包 括 插 入 數(shù) 據(jù) 、 修 改 數(shù) 據(jù) 、 刪 除 數(shù) 據(jù)數(shù) 據(jù) 刪 除 ( Delete) 只 能 對(duì) 整 個(gè) 元 組 操 作 , 不 能 只 刪 除 某 些 屬 性 上 的 值 只 能 對(duì) 一 個(gè) 關(guān) 系 起 作 用 , 若 要 從 多 個(gè) 關(guān) 系 中 刪 除 元 組 ,則 必 須 對(duì) 每 個(gè) 關(guān) 系 分 別 執(zhí) 行 刪 除 命 令Delete From r Where P 從 關(guān) 系 r 中 刪 除 滿 足 P的 元 組 , 只 是 刪 除 數(shù) 據(jù) , 而 不是 定 義 刪 除 單 個(gè) 元
44、 組例 : 刪 除 學(xué) 號(hào) 為 95001的 學(xué) 生 的 選 課 信 息Delete From SCWhere sno = 95001 刪 除 多 個(gè) 元 組例 : 刪 除 選 課 而 未 參 加 考 試 的 學(xué) 生 的 選 課 信 息Delete From SCWhere grade is null 刪 除 整 個(gè) 關(guān) 系 中 的 所 有 數(shù) 據(jù)例 : 刪 除 所 有 學(xué) 生 的 選 課 信 息Delete From SC 數(shù) 據(jù) 插 入 ( Insert)單 行 插 入 : 一 次 只 插 入 一 個(gè) 元 組例 : 新 增 一 個(gè) 學(xué) 生 信 息Insert Into StudentVal
45、ues ( 98001, Gloria,25, F, CS)多 行 插 入 : 插 入 一 個(gè) 集 合例 :給 CS系 的 學(xué) 生 開 設(shè) 必 修 課 C05, 建 立 選 課 信 息Insert Into SCSelect sno,cno,nullFrom Student,CourseWhere sdept = CS andcno = C05 數(shù) 據(jù) 更 新 ( Update)改 變 符 合 條 件 的 某 個(gè) ( 某 些 ) 元 組 的 屬 性 值例 : 將 95001學(xué) 生 轉(zhuǎn) 入 MA系Update StudentSet sdept = MAWhere sno = 95001例 : 所
46、 有 學(xué) 生 年 齡 加 1Update StudentSet sage = sage + 1 數(shù) 據(jù) 更 新 ( Update)例 : 將 選 修 C05課 程 的 學(xué) 生 的 成 績(jī) 改 為 該 課 的 平 均成 績(jī) Update SCSet grade = (Select avg(grade)From SCWhere cno = C05)Where cno = C05先 計(jì) 算 avg, 再 做 Update 視 圖 ( View)是 從 一 個(gè) 或 幾 個(gè) 基 本 表 ( 或 視 圖 ) 中 導(dǎo) 出 的 虛 表數(shù) 據(jù) 庫 中 只 保 存 它 的 定 義是 RDBMS提 供 給 用 戶
47、以 多 種 角 度 觀 察 數(shù) 據(jù) 庫 中數(shù) 據(jù) 的 重 要 機(jī) 制創(chuàng) 建 視 圖 、 刪 除Create View v as Drop View v例 : 計(jì) 算 機(jī) 系 的 花 名 冊(cè)Create View CS_Stu asSelect sno,sname,ssexFrom StudentWhere sdept = CS 視 圖 ( View)視 圖 名 可 以 出 現(xiàn) 在 任 何 關(guān) 系 名 可 以 出 現(xiàn) 的 地 方例 : 列 出 計(jì) 算 機(jī) 系 的 男 生Select sno,snameFrom CS_StuWhere ssex = M 例 : 建 立 學(xué) 生 平 均 成 績(jī) 視
48、圖Create View avg_grade(sno,avg) asSelect sno,avg(grade)From SCGroup By sno 視 圖 ( View)例 : 找 出 平 均 成 績(jī) 大 于 等 75的 學(xué) 生Select *From avg_gradeWhere avg = 75注 意 : 此 例 的 使 用 方 法 是 非 標(biāo) 準(zhǔn) 的 。 視 圖 ( View)視 圖 的 更 新 : 單 表 、 原 始 屬 性 構(gòu) 成 的 視 圖 可 以 更新 ( 像 基 本 表 那 樣 更 新 )由 多 表 構(gòu) 成 的 視 圖 由 很 大 的 限 制視 圖 中 的 非 原 始 屬 性
49、 也 不 能 更 新例 : Update avg_gradeSet avg = 100Where sno = 95001avg不 是 原始 屬 性 視 圖 ( View) 視 圖 的 作 用簡(jiǎn) 化 用 戶 的 操 作不 同 的 用 戶 可 從 不 同 的 角 度 看 待 同 一 數(shù) 據(jù)支 持 一 定 的 邏 輯 數(shù) 據(jù) 獨(dú) 立 性數(shù) 據(jù) 的 安 全 性 數(shù) 據(jù) 定 義 語 言 ( Data Definition Language)Create、 Drop、 Alter定 義 一 組 關(guān) 系 ( 基 本 表 ) 、 說 明 各 關(guān) 系 的 信 息 各 關(guān) 系 的 模 式 各 屬 性 的 值 域
50、完 整 性 約 束 索 引 安 全 性 和 權(quán) 限 各 關(guān) 系 在 磁 盤 上 的 物 理 存 儲(chǔ) 結(jié) 構(gòu)數(shù) 據(jù) 定 義 語 言 ( DDL) SQL中 的 域 類 型字 符 型 char(n) varchar(n)數(shù) 值 型 int smallint numeric(p,d) real、 double float(n)日 期 /時(shí) 間 型 date time 域 定 義 語 句 ( SQL-92支 持 )需 重 復(fù) 使 用 的Create Domain stu_name varchar(20)Create Domain zip_code char(6) SQL的 模 式 定 義Create
51、Table r (A1D1, A2D2, , AnDn,)其 中 : r 關(guān) 系 名 ( 表 名 ) Ai 關(guān) 系 r 的 一 個(gè) 屬 性 名 D n 屬 性 Ai域 值 的 域 類 型主 鍵 聲 明 : primary key (Aj1 , Aj2 , , Ajvm )校 驗(yàn) 聲 明 : check (邏 輯 表 達(dá) 式 ) ExamplesCreate Domain stu_name varchar(20)Create Table Student ( sno char(10) not null , sname stu_name ,sage smallint,ssex char(1),sde
52、pt char(2),primary key (sno),check(ssex in (M, F) Create Table Course (cno char(10) not null ,cname varchar(20) ,credit smallint,primary key (cno)Create Table SC (sno char(10) not null ,cno char(10) not null ,grade smallint,primary key (sno, cno),check(grade =0 and grade =100) 用 SQL刪 除 關(guān) 系 ( 表 )將 整
53、個(gè) 關(guān) 系 模 式 ( 表 結(jié) 構(gòu) ) 徹 底 刪 除Drop Table r 用 SQL刪 除 表 中 的 某 屬 性去 除 屬 性 及 相 應(yīng) 的 數(shù) 據(jù)Alter Table r Drop A 用 SQL增 加 表 中 的 屬 性向 已 經(jīng) 存 在 的 表 中 添 加 屬 性已 有 的 元 組 中 該 屬 性 的 值 被 置 為 NullAlter Table r Add A D 數(shù) 據(jù) 添 加用 SQL的 插 入 語 句 , 向 數(shù) 據(jù) 庫 表 中 添 加 數(shù) 據(jù)按 關(guān) 系 模 式 的 屬 性 順 序Insert Into Student Values ( 95001 , 張 三 ,2
54、7, M, CS )按 指 定 的 屬 性 順 序 , 也 可 以 只 添 加 部 分 屬 性 ( 非Null屬 性 為 必 需 )Insert Into Student ( sno, sname, sage)Values ( 95002 , 李 四 , 26 ) NullNull是 unknown與 Null的 比 較 都 返 回 unknown(unknown or unknown) unknown(true and unknown) unknown(false and unknown) = false(unknown and unknown) = unknown 練 習(xí) 針 對(duì) 學(xué) 生 -課 程 體 系 , 作 SQL查 詢列 出 各 系 的 學(xué) 生 數(shù) ( 人 數(shù) 多 的 排 在 前 面 )找 出 各 科 成 績(jī) 均 在 85分 以 上 ( 含 ) 的 學(xué) 生 的學(xué) 號(hào) 、 姓 名找 出 有 三 門 課 程 的 成 績(jī) 在 75分 以 下 的 學(xué) 生 的學(xué) 號(hào) 、 姓 名列 出 數(shù) 據(jù) 庫 成 績(jī) 的 前 五 名 學(xué) 生 的 學(xué) 號(hào) 、 姓 名 、成 績(jī)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 指向核心素養(yǎng)發(fā)展的高中生物學(xué)1輪復(fù)習(xí)備考建議
- 新課程新評(píng)價(jià)新高考導(dǎo)向下高三化學(xué)備考的新思考
- 新時(shí)代背景下化學(xué)高考備考策略及新課程標(biāo)準(zhǔn)的高中化學(xué)教學(xué)思考
- 2025屆江西省高考政治二輪復(fù)習(xí)備考建議
- 新教材新高考背景下的化學(xué)科學(xué)備考策略
- 新高考背景下的2024年高考化學(xué)二輪復(fù)習(xí)備考策略
- 2025屆高三數(shù)學(xué)二輪復(fù)習(xí)備考交流會(huì)課件
- 2025年高考化學(xué)復(fù)習(xí)研究與展望
- 2024年高考化學(xué)復(fù)習(xí)備考講座
- 2025屆高考數(shù)學(xué)二輪復(fù)習(xí)備考策略和方向
- 2024年感動(dòng)中國十大人物事跡及頒獎(jiǎng)詞
- XX教育系統(tǒng)單位述職報(bào)告教育工作概述教育成果展示面臨的挑戰(zhàn)未來規(guī)劃
- 2025《增值稅法》全文解讀學(xué)習(xí)高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 初中資料:400個(gè)語文優(yōu)秀作文標(biāo)題
- 初中語文考試專項(xiàng)練習(xí)題(含答案)