




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、結構化查詢語言- SQLSQL - Structured Query Language 是一種以集合導向的電腦語言,使用於關聯式數據庫的存取工作。集合導向是指它利用數學上集合的概念處理記錄。常用的概念有二: 併集(Union) 交集(Intersection)SQL 讀作'sequel'A集B集 A集 B集SQL也是一種非程序性語言 (Non-procedural language),即是它著重於甚麼(what)而非怎樣(how)。使用者只形容甚麼數據是需要的,而不是怎樣去得到數據。在電腦語言世代中,SQL屬於第四代語言(Fourth generation language,
2、4GL),數句語言便可完成大量工作。基本上,SQL所能做到的,若使用 Foxpro的數據庫指令如 LIST FOR, REPLACE, CREATE, SET RELATION 等也可做到;但學習SQL的重要性在於它是真正能夠跨越不同軟件及平台,在不同的數據庫平台甚至EXCEL上也可使用。SQL發源於大型電腦上伺服器數據庫語言上,但現在很多PC機及網頁語言(如 Visual BASIC, Java, C+)也支援它了。在伺服器工作站(server/client)型式的網絡上,伺服器將內部資源分享給工作站,而工作站則向伺服器要求資源。有時候,一台工作站也可分擔存放數據庫工作,讓伺服器及其他工作站
3、索取資料。Visual Foxpro提供一個圖像使用者介面(Graphi User Interface, GUI)的工具,即Query Designer,容許使用者按動滑鼠便能寫作 SQL。但我們也要懂得直接編寫SQL語句。SELECT.FROM指令查詢( query ) 就是從數據庫中索取符合條件(criteria)的信息的要求。查詢的結果是數據庫中所有符合條件的記錄,以特定的次序排列起來。使用SELECT.FROM向電腦發出查詢前,我們不用開啟任何數據庫,只需設定數據庫所在的路徑,例如:SET DEFAULT TO C:SAMPLE1)SELECT * FROM <table>
4、星號(*)的意思是全部欄。例如:SELECT * FROM student是要求Foxpro傳回所有在數據庫文件 student 內的記錄的全部欄,並按原來次序排列。 查詢的結果是一個以 Query為名的暫存 性唯讀表格(read-only table)。但當另一個新的查詢發出或離開 Foxpro時,舊的結果便會消失。SQL的SELECT和 Foxpro的SELECT有很大分別,後者是用作選取工作區域!2)SELECT <field1>, <field2>, . FROM <table>以特定欄名 <field1>等 代替星號,是只要部份欄的查詢
5、。 例如:SELECT reg_no, name_e FROM student只會顯示兩個欄 reg_no 及 name_e。3)SELECT . FROM . TO SCREENSELECT . FROM . TO PRINTERSELECT . FROM . TO <text file>這三個查詢是分別將結果顯示於Foxpro顯示區,輸出至打印機 及 輸出至文本文件。4)SELECT . FROM . INTO TABLE <table>上面提及查詢的結果是暫存性及唯讀的,在離開 Foxpro或發出新的查詢後便會消失。如果要保留結果成一個永久及可修改的數據庫表格,加
6、入 INTO TABLE <table> 便可。例如:SELECT reg_no, name_e FROM student INTO TABLE stuquery新的永久表格 stuquery便會存放著查詢的結果。5)SELECT DISTINCT . FROM .Distinct 一字令查詢結果只顯示指定字段的不重覆項目。例如:SELECT title FROM employeeSELECT DISTINCT title FROM employee有四個 Sales Representative只有一個 Sales Representative而且,加上 DISTINCT 的查詢
7、會自動以指定字段作升幕排序!只有排序的分別另外,如指定字段有兩個或以上,只有當所有字段相同時,記錄才被視為重覆。6)SELECT . FROM . ORDER BY . ASC/DESC指定查詢結果以特定次序排列。SELECT . FROM . ORDER BY emp_id SELECT . FROM . ORDER BY title ASC, last_name DESCASC: 即 ascending 升幕 (預設方法)先以 title之升幕排序,相同的title中以DESC:即 descending 降幕last_name之降幕排序7)使用 alias 別名: SELECT . AS
8、. FROM .查詢的字段名稱可使用 AS來修改成較易明白的形式。例如:(留意別名是不需使用引號 ' ' 的)SELECT emp_id AS Id, prod_name AS Product_name, eng_name AS English_name FROM orders甚至,AS是可以省略的,連中文名也可使用。SELECT emp_id AS 編號, prod_name AS 產品名稱, eng_name AS 英文名稱 FROM orders8)在查詢中建立新字段利用 AS,我們可以建立一些暫存字段,並使用函數計算結果。a)簡單四則運算SELECT product_i
9、d, unit_price, quantity, unit_price * quantity AS total_price FROM orderitemsb)預設函數 ATAT(<string1>, <string2>) 傳回 string1 在 string2出現的位置。例如 : AT('DE','ABCDEF') 的結果值是 4。SELECT substr(contact, 1, AT(' ', contact)-1) AS name FROM customer 抽取空隔前的名字c)日期函數還記得下列以日期字段為對象的
10、函數嗎?DAY(date1)以數字形式傳回 date1的日子 (例如:24)MONTH(date1)以數字形式傳回 date1的月份 (例如:9)YEAR(date1)以數字形式傳回 date1的年份 (例如:1999)CMONTH(date1)以文字形式傳回 date1的日子 (例如:September)DOW(date1)以數字形式傳回 date1的星期幾 (例如:6)CDOW(date1)以文字形式傳回 date1的星期幾 (例如:Friday)以上例子以 1999年9月24日星期五為準 SELECT order_date, day(order_date) AS Day , cdow(o
11、rder_date) AS Day_Of_Week, cmonth(order_date) AS Month, year(order_date) AS Year FROM ordersORDER BY 之後不可使用函數,例如:SELECT order_amount FROM orders ORDER BY year(order_date)中 year(order_date) 是不合法的。修正:SELECT order_amount, year(order_date) AS year FROM orders ORDER BY year使用別名year!9)WHERE為記錄加設過濾條件在普通 Fo
12、xpro語法中,FOR是為指令中顯示或處理的記錄加設條件。例如:REPLACE name WITH 'Ms. ' + name FOR SEX = 'F'選取所有女性記錄進行取代工作在 SQL 中,FOR的功能由 WHERE 代替了。 a)單一條件 select cust_id, maxordamt from customer where maxordamt > 10000b)複合條件select cust_id, maxordamt from customer where maxordamt > 10000 and maxordamt < 2
13、0000c)IN 直接設定記錄中字段須符合的內容。例如:SELECT cust_id, maxordamt FROM orders WHERE cust_id IN (3, 7, 9)直接指定 cust_id 必須是 3、7或9。( 上面的 SQL語句可寫成 :SELECT cust_id, maxordamt FROM orders WHERE cust_id = 3 or cust_id = 7 or cust_id = 9 )又例如: SELECT name, district FROM student ; WHERE district IN ('Mongkok',
14、39;Yau Ma Tei', 'Central')指定區域是旺角、油麻地或中環。d)BETWEEN . AND .在條件中指定字段所在的範圍。例如:SELECT cust_id, maxordamt FROM orders WHERE cust_id BETWEEN 3 AND 8指定 cust_id 必須介乎3及8之間。( 上面的 SQL語句可寫成 : SELECT cust_id, maxordamt FROM orders WHERE cust_id >= 3 and cust_id <=8 )又例如: SELECT name, district F
15、ROM student ; WHERE name BETWEEN 'Chau' AND 'Ho'指定姓名介乎姓 'Chau' 及 'Ho' 之間。e)LIKE利用百搭 (wildcards) 符號 _ 及 % 設定條件。_ 是 單一位百搭符號% 是 任意位百搭符號例如: SELECT name, house FROM student WHERE house LIKE 'Choi _an House'中逢是 'Choi ?an House' 都符合條件,好像 'Choi Wan House
16、39;、 'Choi Tan House' 或 'Choi San House' 都是。又例如: SELECT name, district FROM student WHERE district LIKE 'Tai %' 中逢是 'Tai ' 字頭的都符合條件,好像 'Tai Po'、'Tai O' 或 'Tai Kok Tsui'。f) 複合 LIKE NOT LIKELIKE可配合 and及or來增加條件的複雜性。例如:SELECT name FROM student ;WHE
17、RE ( name LIKE 'Chan %' or name LIKE 'Yeung %' )可選取姓陳或楊的學生。也可使用 NOT LIKE 來選取不符合條件的記錄。例如:SELECT name FROM student WHERE name NOT LIKE 'Fai'可選取姓名中沒有 'Fai' 字的學生。又例如:SELECT name FROM student ;WHERE ( name NOT LIKE 'Chan %' or name NOT LIKE 'Yeung %' )可選取不是
18、姓陳及姓楊的學生。你知道下面的語句內條件是甚麼嗎?SELECT name, classno, district FROM student ;WHERE classno > 20 AND district <> 'Wanchai' AND ;( name LIKE '%Fung%' OR name NOT LIKE 'Chan %' )10)總計函數 在普通 Foxpro指令中,下列是一些計算記錄的總和、平均值等函數:CALCULATE COUNT( )數算記錄的數目CALCULATE SUM(field1)計算field1在記錄
19、中的總和CALCULATE AVG(field1)計算field1在記錄中的平均值CALCULATE MAX(field1)計算field1在記錄中的最大值CALCULATE MIN(field1)計算field1在記錄中的最小值在 SQL中,上列指令可融合在SQL語句中,並省略 CALCULATE指令。例如:SELECT COUNT(*) FROM student WHERE sex = 'M'就相等於SELECT * FROM student WHERE sex = 'M' 所產生的結果加上執行COUNT結果就是 數算有多少個男生 。又例如: SELECT COUNT(DISTINCT title) FROM employee就相等於SELECT DISTINCT title FROM employee 所產生的結果加上執行C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 评估公司收费管理制度
- 2025年中国滑雪用品行业市场全景分析及前景机遇研判报告
- 试用期全勤奖管理制度
- 财务账目基本管理制度
- 财政公用经费管理制度
- 货场物料调拨管理制度
- 货车企业各项管理制度
- 2025年中国红外壁炉行业市场全景分析及前景机遇研判报告
- 2025年中国触觉VR设备行业市场全景分析及前景机遇研判报告
- 批发面条转让协议书范本
- 橡胶与人类-青岛科技大学中国大学mooc课后章节答案期末考试题库2023年
- 血液透析低血压的护理
- 福建省漳州实小教育集团2023届数学三下期末检测模拟试题含解析
- 有效沟通-报联商课件
- 航行通告教学课件
- 星巴克劳动合同
- 《电子技术基础》期末考试复习(重点)题库(含答案)
- 结缔组织病的肺部表现
- 景观工程施工图设计总说明
- CASIO电子计算器fx-82ES-PLUS-A说明书
- 观看电视专题片《永远吹冲锋号》第二集《政治监督》心得体会
评论
0/150
提交评论