1. 程式人生 > >資料的檢索_資料準備

資料的檢索_資料準備

到目前為止,我們已經學習瞭如何建立資料表、如何修改資料表以及如何刪除資料表,我們還學習瞭如何將資料插入資料表、如何更新資料表中的資料以及如何資料刪除。建立資料表是在建立存放資料的容器,修改和刪除資料表是在維護資料模型的正確性,將資料插入資料表、更新資料表以及刪除資料表中的資料則是在維護資料庫中資料與真實業務資料之間的同步,這些操作都不是經常發生的,它們只佔據資料庫操作中很小的一部分,我們大部分時間都是在對資料庫中的資料進行檢索,並且基於檢索結果進行響應的分析,可以說資料的檢索是資料庫中最重要的功能。

與資料表結構的管理以及資料表中資料的管理不同,資料檢索所需要面對的問題是非常複雜的,不僅要求能夠完成“檢索出所有年齡小於12 歲的學生”、“檢索出所有曠工時間超過3 天的職工”等簡單的檢索任務,而且還要完成“檢索出本季度每種商品的出庫入庫詳細情況”、“檢索出所有學生家長的工作單位資訊”等複雜的任務,甚至還需要完成其他更加複雜的檢索任務。資料檢索麵對的場景是異常複雜的,因此資料檢索的語法也是其他功能所不能比的,不僅語法規則非常複雜,而且使用方式也非常靈活。本書中大部分內容都是講解資料檢索相關知識的,為了降低學習的梯度,本章我們將講解基本的資料檢索語法,這些語法是資料檢索功能中最基礎也是最核心的部分,因此只有掌握我們才能繼續學習更加複雜的應用。

本章中我們將使用一些資料表,為了更容易的執行本章中的例子,必須首先建立所需要的資料表,因此下面列出本章中要用到資料表的建立SQL語句:

MYSQL:


CREATE TABLE T_Employee (FNumber VARCHAR(20),FName VARCHAR(20),FAge INT,FSalary DECIMAL(10,2),PRIMARY KEY (FNumber)) 

MSSQLServer:


CREATE TABLE T_Employee (FNumber VARCHAR(20),FName VARCHAR(20),FAge INT,FSalary NUMERIC(10,2),PRIMARY KEY (FNumber)) 

Oracle:


CREATE TABLE T_Employee (FNumber VARCHAR2(20),FName VARCHAR2(20),FAge NUMBER (10),FSalary NUMERIC(10,2),PRIMARY KEY (FNumber)) 

DB2:


CREATE TABLE T_Employee (FNumber VARCHAR(20) NOT NULL,FName VARCHAR(20),FAge INT,FSalary DECIMAL(10,2),PRIMARY KEY (FNumber)) 

請在不同的資料庫系統中執行相應的SQL語句。T_Employee為記錄員工資訊的資料表,其中主鍵欄位FNumber 為員工工號,FName 為人員姓名,FAge 為年齡,FSalary 為員工月工資。

為了更加直觀的驗證本章中檢索語句的正確性,我們需要在T_Employee表中預置一些初始資料,請在資料庫中執行下面的資料插入SQL語句:


INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("DEV001","Tom",25,8300); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("DEV002","Jerry",28,2300.80); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES001","John",23,5000); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES002","Kerry",28,6200); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("SALES003","Stone",22,1200); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("HR001","Jane",23,2200.88); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("HR002","Tina",25,5200.36); INSERT INTO T_Employee(FNumber,FName,FAge,FSalary) VALUES("IT001","Smith",28,3900);