VF第6章sql查詢語言
《VF第6章sql查詢語言》由會員分享,可在線閱讀,更多相關《VF第6章sql查詢語言(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第 六 章 SQL查 詢 語 言 的 使 用 學 習 目 標 :( 1) 了 解 SQL的 基 本 知 識( 2) 掌 握 SQL的 數(shù) 據(jù) 查 詢 操 作( 3) 熟 悉 SQL的 數(shù) 據(jù) 定 義 功 能( 4) 熟 悉 SQL的 數(shù) 據(jù) 操 縱 功 能 6.1 SQL 基 礎 知 識 SQL( Structured Query Language) 結 構 化 查詢 語 言 , 是 一 種 介 于 關 系 代 數(shù) 與 關 系 運 算 之 間 的語 言 。 SQL語 言 動 詞SQL功 能 動 詞數(shù) 據(jù) 查 詢 select數(shù) 據(jù) 定 義 creat, drop, alter數(shù) 據(jù) 操 縱 i
2、nsert, update, delete數(shù) 據(jù) 控 制 grant, revoke 6.2 SQL 的 數(shù) 據(jù) 定 義 功 能一 、 創(chuàng) 建 表格 式 1: CREATE TABLE FREE ( 類 型 (長 度 ) , 類 型 (長 度 ) )功 能 : 創(chuàng) 建 一 個 以 為 表 的 名 字 , 以 指 定的 字 段 屬 性 定 義 數(shù) 據(jù) 表 。說 明 : 定 義 表 的 各 個 屬 性 時 , 需 要 指 明 其 數(shù) 據(jù)類 型 及 長 度 。 例 1: 創(chuàng) 建 新 表 stu2, 其 結 構 和 學 生 表 相 同 。 creat table stu2(學 號 C(8), 姓 名
3、C(8), 性 別 C(2), 出 生 日 期 D, 入 校 總 分 N(3, 0), 三 好生 L, 特 長 M, 照 片 G)格 式 2: CREATE TABLE FREE ( 類 型 (長 度 ) , 類 型 (長 度 ) ) NULL|NOT NULLCHECK ERROR提 示 信 息 DEFAULT FREE: 說 明 定 義 的 表 是 自 由 表 。NULL: 允 許 一 個 字 段 為 空 值 。 如 果 一 個 或 多 個 字段 允 許 包 含 空 值 , 一 個 表 最 多 可 以 定 義 254個 字 段 。NOT NULL: 不 允 許 字 段 為 空 值 , 即
4、字 段 必 須 取一 個 具 體 的 值 。CHECK : 定 義 字 段 級 的 有 效 性 規(guī) 則 。是 邏 輯 型 表 達 式 。 ERROR 提 示 信 息 : 定 義 字 段 的 錯 誤 信 息 。 當字 段 中 的 數(shù) 據(jù) 違 背 了 字 段 的 完 整 性 約 束 條 件 時 ,Visual FoxPro就 會 顯 示 “ 提 示 信 息 ” 定 義 的 出錯 信 息 。DEFAULT : 定 義 字 段 的 默 認 值 , 的 數(shù) 據(jù) 類 型 必 須 和 字 段 類 型 一 致 。 例 2: 在 數(shù) 據(jù) 庫 xsgl.DBC中 , 使 用 命 令 建 立“ jsj.DBF” 表
5、 , 表 結 構 包 括 (學 號 C(8),姓 名 C(6),筆 試 N(5,1),上 機 N(5,1), 并 設 置 學 號為 主 索 引 , 筆 試 和 上 機 的 有 效 性 規(guī) 則 是 0, 如果 違 反 有 效 性 規(guī) 則 , 系 統(tǒng) 提 示 : “ 成 績 必 須 大于 0” 。creat database xsgl.DBCcreat table jsj.DBF (學 號 C(8) primary key,姓 名 C(6),筆 試 N(5,1)check 筆 試 0 error “ 成 績 必 須 大 于 0” ,上 機 N(5,1)check 上 機 0 error “ 成 績
6、 必 須 大 于 0” ) 二 、 修 改 表 的 結 構1、 增 加 字 段格 式 : ALTER TABLE ADD (,); NULL|NOT NULLCHECK ERROR提 示 信 息 ;PRIMARY KEY | UNIQUE功 能 : 為 指 定 的 表 的 指 定 字 段 進 行 添 加 指 定 的字 段 。 例 3: 為 xsdb表 添 加 兩 個 字 段 : “ 平 均 分 ”字 段 N(5,1)和 “ 總 分 ” 字 段 N(5,1)。alter table xsdb.dbf add 平 均 分 N(5,1) check 平 均 分 80 error “ 平 均 分 要
7、大 于 80!”alter table xsdb.dbf add 總 分 N(5,1)注 意 : check 對 非 數(shù) 據(jù) 庫 表 ( .dbc) 不 可 用 。 2、 修 改 字 段格 式 : ALTER TABLE ALTER 類型 (長 度 ) NULL|NOT NULLSET CHECK ERROR提 示 信 息 功 能 : 為 指 定 的 表 的 指 定 字 段 進 行 修 改 指 定 的 字段 。 例 4: 在 xsdb表 中 , 修 改 兩 個 字 段 : “ 學 號 ”字 段 C( 10) 和 “ 英 語 ” 字 段 N( 6,1) 。alter table xsdb.DBF
8、 alter 學 號 C(10)alter table xsdb.DBF alter 英 語 N(6,1) 例 5: 修 改 或 定 義 上 機 字 段 的 有 效 性 規(guī) 則 。alter table jsj.dbf alter 上 機 set check 上 機0 error 上 機 應 該 大 于 0! 3、 刪 除 字 段ALTER TABLE Drop Drop ;功 能 : 刪 除 指 定 的 表 中 指 定 字 段 。例 6: 刪 除 xsdb表 中 的 平 均 分 、 獎 學 金 和 備 注 字 段 。alter table xsdb.dbf drop 平 均 分 drop 獎
9、 學 金 drop 備 注 4、 修 改 字 段 名格 式 : alter table renamecolumn to 功 能 : 將 表 中 的 名 字 修 改 為 。例 7: 將 jsj表 的 筆 試 字 段 名 改 為 筆 試 成 績 。alter table jsj.dbf rename column 筆 試 to 筆 試 成 績 三 、 刪 除 表格 式 : DROP TABLE功 能 : 從 數(shù) 據(jù) 庫 和 磁 盤 上 將 表 直 接 刪 除 掉 。例 8: 刪 除 jsj表drop table jsj.dbf 四 、 視 圖 的 定 義 和 刪 除 格 式 :CREATE VIE
10、W AS SELECT-SQL命 令 。 功 能 : 按 照 AS子 句 中 的 SELECT-SQL命 令 提出 的 查 詢 要 求 , 創(chuàng) 建 一 個 本 地 或 遠 程 的 SQL視 圖 。視 圖 的 名 稱 由 命 令 中 指 定 。1、 定 義 視 圖 例 9: 從 “ xsgl”數(shù) 據(jù) 庫 所 含 有 的 學 生 和 選 課兩 個 表 中 抽 取 學 號 、 姓 名 、 和 課 程 號 3個 字 段 ,組 成 名 稱 為 “ myview”的 SQL視 圖 。 open database xsgl creat view myview as select 學 生 .學號 , 學 生
11、.姓 名 , 選 課 .課 程 號 from 學 生 .dbf,選 課 .dbf where 學 生 .學 號 =選 課 .學 號 2、 查 詢 視 圖 例 10: 查 詢 “ xsgl”數(shù) 據(jù) 庫 中 的 “ myview”視 圖 , 要 求 顯 示 學 生 姓 名 和 課 程 號 open database xsgl select 姓 名 , 課 程 號 from myview 3、 刪 除 視 圖格 式 : drop view 功 能 : 刪 除 數(shù) 據(jù) 庫 中 指 定 的 視 圖 。例 11: 刪 除 數(shù) 據(jù) 庫 “ xsgl”中 的 “ myview”視圖 open database
12、 xsgldrop view myview 6.3 SQL 的 數(shù) 據(jù) 查 詢 功 能一 、 SELECT語 句 格 式SELECT ALL | DISTINCT .AS ;FROM 聯(lián) 接 方 式 JOIN表 名 ON聯(lián) 接 條件 ;WHERE ;ORDER BY ASC/DESC;GROUP BY ;HAVING分 組 篩 選 條 件 ;INTO ;功 能 : 查 詢 。 二 、 投 影 查 詢1、 查 詢 部 分 字 段 在 select語 句 后 列 出 要 查 詢 的 字 段 , 之 間 用逗 號 隔 開 。 例 1: 從 學 生 表 中 查 詢 學 號 , 姓 名 , 性 別 和出
13、 生 日 期 。 select 學 號 , 姓 名 , 性 別 , 出 生 日 期 from 學 生 2、 查 詢 全 部 字 段 可 以 在 select后 面 列 出 全 部 字 段 , 也 可 以 用星 號 “ * ”來 表 示 全 部 字 段 。 例 2: 查 詢 教 師 表 中 的 全 部 字 段 select * from 教 師 select 教 師 號 , 姓 名 , 性 別 , 職 稱 , 工 資 , 政府 津 貼 from 教 師 或 者 3、 取 消 重 復 記 錄 使 用 distinct取 消 查 詢 結 果 中 的 重 復 記 錄 例 3: 查 詢 選 課 表 中
14、有 成 績 記 錄 的 學 生 學 號。 select distinct 學 號 from 選 課 4、 查 詢 經 過 計 算 的 表 達 式查 詢 的 列 可 以 是 字 段 , 也 可 以 是 計 算 后 的 表 達 式 。 例 4: 從 教 師 表 中 查 詢 教 師 的 姓 名 , 工 資 和漲 50%以 后 的 工 資 。 select 姓 名 , 工 資 , 工 資 *1.5 from 教 師 select 姓 名 , 工 資 , 工 資 *1.5 as 漲 后 工 資from 教 師 或 者 as用 來 修 改 查 詢 結 果 中 指 定 列 的 列 名 。 其 中as可 以
15、省 略 三 、 條 件 查 詢 使 用 where來 指 定 查 詢 條 件 , 常 用 的 比 較 運算 符 如 表 1、 簡 單 條 件 查 詢 例 5: 從 學 生 表 中 查 詢 三 好 生 的 信 息 select * from 學 生 where 三 好 生 =.t. 例 6: 從 學 生 中 查 詢 7月 份 所 生 的 學 生 的 學 號、 姓 名 、 性 別 和 出 生 日 期 select 學 號 , 姓 名 , 性 別 , 出 生 日 期 from 學 生 where month( 出 生 日 期 ) =7 例 7: 從 學 生 表 中 查 詢 入 校 總 分 大 于 6
16、00分 的女 生 或 者 入 校 總 分 小 于 600的 男 生 的 學 號 、 姓 名和 入 校 總 分 。 select 學 號 , 姓 名 , 入 校 總 分 from 學 生 where ( 入 校 總 分 600 and 性 別 =“女 ” ) or( 入 校 總 分 1990/01/01 and (入 校 總 分 =600 or 入校 總 分 80 六 、 查 詢 的 排 序 使 用 order by 可 以 按 字 段 值 排 序 , asc為 升序 , desc為 降 序 , 默 認 為 升 序 。1、 單 列 排 序 例 21: 查 詢 學 生 表 中 的 學 生 信 息
17、, 并 按 照 入校 總 分 的 降 序 排 列 。 select * from 學 生 order by 入 校 總 分 desc 例 22: 統(tǒng) 計 選 課 表 中 每 門 課 程 的 平 均 成 績 , 并按 照 平 均 分 數(shù) 的 降 序 排 列 select 課 程 號 , avg( 成 績 ) as 平 均 成 績 from 選 課 group by 課 程 號 order by 平 均 成 績 desc select 課 程 號 , avg( 成 績 ) as 平 均 成 績 from 選 課 group by 課 程 號 order by 2 desc 或 者 2表 示 以 查
18、 詢 結 果 的 第 2列 作 為 排 序 依 據(jù) 2、 多 列 排 序 例 23: 查 詢 學 生 表 中 的 學 生 信 息 , 并 按 照 入校 總 分 的 降 序 排 列 , 若 入 校 總 分 相 同 , 按 照 學 號的 升 序 排 列 。 select * from 學 生 order by 入 校 總 分 desc, 學 號 七 、 內 連 接 查 詢 連 接 條 件 : 兩 表 的 公 共 字 段 值 相 等 , 常 用 書 寫格 式 是 : 表 1.公 共 字 段 =表 2.公 共 字 段 例 23: 從 授 課 表 和 課 程 表 中 , 查 詢 各 個 教 師擔 任 的
19、 課 程 的 課 程 號 及 課 程 名 。 select 授 課 .教 師 號 , 授 課 .課 程 號 , 課 程 .課 程名 from 授 課 , 課 程 where 授 課 .課 程 號 =課 程 .課 程 號 select 授 課 .教 師 號 , 授 課 .課 程 號 , 課 程 .課 程名 from 授 課 join 課 程 on 授 課 .課 程 號 =課 程 .課 程 號 或 者 例 23: 學 生 表 和 選 課 表 中 查 詢 學 號 為s0803004和 s0803005的 學 生 的 選 課 情 況 , 顯 示 其學 號 、 課 程 號 和 成 績 。 select
20、學 生 .學 號 , 選 課 .課 程 號 , 選 課 .成 績 from 學 生 , 選 課 where 學 生 .學 號 =選 課 .學 號 and ( 學 生 .學 號 =“s08030004” or 學 生 .學 號=“s08030005”) select 學 生 .學 號 , 選 課 .課 程 號 , 選 課 .成 績 from 學 生 join 選 課 on 學 生 .學 號 =選 課 .學 號 where( 學 生 .學 號 =“s08030004” or 學 生 .學 號=“s08030005”) 或 者 八 、 自 連 接 查 詢 將 同 一 個 表 與 其 自 身 進 行
21、連 接 , 稱 為 自 連 接。 在 自 連 接 查 詢 涉 及 的 字 段 前 面 , 用 別 名 加 以 限制 。 定 義 表 別 名 的 語 法 是 : 例 24: 查 詢 入 校 總 分 大 于 謝 小 芳 的 學 生 姓 名、 入 校 總 分 。 select 學 生 .姓 名 , 學 生 .入 校 總 分 from 學 生, 學 生 b where 學 生 .入 校 總 分 b.入 校 總 分 and b.姓 名 =“謝 小 芳 ” 九 、 修 改 查 詢 去 向1、 into dbf into table 將 查 詢 結 果 保 存 到 以 命 名 的 永 久 表中 , 并 打
22、開 該 表 作 為 當 前 文 件2、 into cursor 將 查 詢 結 果 保 存 到 以 命 名的 臨 時 表 中 , 該 文 件 為 只 讀 表 , 當 關 閉 查 詢 相關 的 表 文 件 時 , 該 臨 時 文 件 會 被 自 動 刪 除 。 3、 into file addtive 將 查 詢 結 果 保 存 到 以 命 名 的 文 本文 件 中 , 擴 展 名 為 txt, 如 果 有 addtive, 查 詢 結果 追 加 到 文 本 文 件 的 尾 部 , 否 則 覆 蓋 該 文 本 文 件 。4、 into array 將 查 詢 結 果 保 存 到 指 定 的 數(shù)
23、組 中 , 一般 將 存 放 查 詢 結 果 的 數(shù) 組 作 為 二 維 數(shù) 組 來 使 用 。5、 to printer 將 查 詢 結 果 輸 出 到 打 印 機 。 十 、 嵌 套 查 詢1、 帶 比 較 運 算 符 的 嵌 套 查 詢 例 25: 查 詢 入 校 總 分 大 于 謝 小 芳 的 學 生 姓 名、 入 校 總 分 。 ( 1) 查 詢 謝 小 芳 的 入 校 總 分 select 入 校 總 分 from 學 生 where 姓 名 =“謝 小 芳 ”此 結 果 的 顯 示 為 : 謝 小 芳 入 校 總 分 為 610 ( 2) 查 詢 入 校 總 分 大 于 610分
24、 的 學 生 姓 名 、 入校 總 分 。 select 姓 名 , 入 校 總 分 from 學 生 where 入 校 總 分 ( select 入 校 總 分 from 學 生 where 姓 名 =“謝 小 芳 ” ) ( 3) 將 610用 第 ( 1) 步 中 的 select語 句 替 換 select 姓 名 , 入 校 總 分 from 學 生 where 入 校 總 分 610 2、 in謂 詞 嵌 套 查 詢 例 26: 查 詢 有 選 課 記 錄 的 學 生 信 息 。 ( 1) 在 選 課 表 中 查 詢 選 了 課 的 學 生 學 號 select (distinc
25、t 學 號 ) from 選 課 查 詢 結 果 為 “ s0803002”, “ s0803003”,“ s0803004”, “ s0803005” ( 2) 查 詢 學 號 為 “ s0803002”, “ s0803003”, “ s0803004”, “ s0803005”的 學 生 信 息 。 select * from 學 生 where 學 號 in( “ s08030002”, “ s08030003”, “ s08030004”, “ s08030005” ) ( 3) 將 “ s0803002”, “ s0803003”,“ s0803004”, “ s0803005”用
26、 第 ( 1) 步 中 的select語 句 替 換 select * from 學 生 where 學 號 in( select distinct 學 號 from 選 課 ) 3、 exists謂 詞 嵌 套 查 詢 例 27: 查 詢 學 號 為 s0803002的 學 生 選 修 的課 程 名 稱 select 課 程 名 from 課 程 where exists (select * from 選 課 where 選 課 .課 程 號 =課 程 .課程 號 and 學 號 =“s0803002”) 例 28: 查 詢 學 號 為 s0803002的 學 生 沒 有 選修 的 課 程
27、名 稱 select 課 程 名 from 課 程 where not exists ( select * from 選 課 where 選 課 .課 程 號 =課 程 .課 程 號 and 學 號 =“s0803002”) 4、 any、 all、 some謂 詞 嵌 套 查 詢例 29: 查 詢 入 校 總 分 大 于 某 個 三 好 生 的 女 生 的 信 息 。 select * from 學 生 where 入 校 總 分 any (select 入 校 總 分 from 學 生 where 三 好 生 =.t. ) and 性 別 =“女 ” 例 30: 查 詢 入 校 總 分 大
28、 于 所 有 三 好 生 的 學 生 信 息。 select * from 學 生 where 入 校 總 分 all (select 入 校 總 分 from 學 生 where 三 好 生 =.t. ) 此 處 的 any也 可 以 用 some替 換 十 一 、 集 合 查 詢用 union可 以 進 行 集 合 查 詢 例 31: 查 詢 入 校 總 分 大 于 600分 或 者 小 于590分 的 學 生 姓 名 。 要 求 使 用 集 合 查 詢 。 select 姓 名 from 學 生 where 入 校 總 分 600 union select 姓 名 from 學 生 wh
29、ere 入 校 總分 590 注 意 : 使 用 union集 合 查 詢 時 , 會 自 動 取 消重 復 記 錄 。 6.4 SQL 的 數(shù) 據(jù) 操 縱 功 能一 、 插 入 數(shù) 據(jù) 格 式 : insert into (,) values (,) 例 1、 在 課 程 表 中 插 入 一 條 新 記 錄 ( “ c170”,“ 操 作 系 統(tǒng) ” , 48) insert into 課 程 values( “ c170”, “ 操 作系 統(tǒng) ” , 48) 二 、 更 新 數(shù) 據(jù) 格 式 : update ! set= , = where 功 能 : 用 指 定 的 新 值 更 新 記
30、錄 。 例 2、 在 課 程 表 中 課 程 號 為 “ c170”的 課 時 數(shù) 改為 32。 update 課 程 set 課 時 =32 where 課 程 號=“c170” 三 、 刪 除 數(shù) 據(jù)格 式 : delete from where 功 能 : 邏 輯 刪 除 一 條 或 多 條 記 錄說 明 : 沒 有 where子 句 , 表 示 邏 輯 刪 除 所 有 記 錄 。 例 3、 邏 輯 刪 除 課 程 表 中 課 程 號 為 “ c170”的 記錄 delete from 課 程 where 課 程 號 =“c170” 注 意 : 若 要 物 理 刪 除 必 須 使 用 pack命 令 。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。