SQL考題(面試考題參考)

行動版 for , 瀏覽人次: 1777  , SSL Connection SSL
    • 假設某關聯資料庫(Relational Database)中有兩個表格(Tables)分別儲存「員工」(Employee)、「部門」(Department)。其Table Schema 如下:

    Employee(EID, Name, Sex, BirthYear, Full, Salary, DeptNo)

    屬性分別代表員工「編號」、「姓名」、「性別」、「出生年」、「專職否」、「薪水」、「所屬部門代號」,而以「編號」為其Primary Key, “Full”的值為字元Y 時表示專職,N 時表示兼職。

    Department(DNo, Name, Area)

    屬性分別代表部門「代號」、「名稱」、「所在地區」,而以「代號」為其Primary Key。「名稱」值可能為「生產部」、「行銷部」等中文字串,「所在地區」值可能為「台北市」、「高雄市」等中文字串。

    請寫出下列查詢之SQL:

    (一)對所有專職人員,請依男女分別列出平均年齡,平均年齡欄位另取名為Average_Year 。

    SELECT
      AVG(BirthYear) AS Average_Year,Sex
    FROM
      Employee
    WHERE Full=’Y’
    GROUP BY Sex

    (二)以一道SQL列出「生產部」的員工中最高與最低薪水的差距,差距欄位取名為Salary_Difference。

    SELECT
      max(Salary)-min(Salary) as ‘Salary_Difference’
    FROM
      Employee,Department
    WHERE
      DeptNo = DNo AND Department.Name= ‘生產部’

    (三)列出包含所有所屬部門在「台北市」的員工,欄位有「姓名」(另取名為EName)、「薪水」、「所屬部門名稱」(另取名為DName)。

    SELECT
      Employee.Name as ‘EName’, Salary, Department.Name as ‘DName’
    FROM
      Employee,Department
    WHERE
      DeptNo = DNo AND Department.Area=’台北市’

    • 某一學校的資料庫有下列三個Table:Student (班級,學號,姓名),Course (課程編號,課程名稱,開課老師),Selection(學號,課程編號)。Student 與Course 分別記錄學生與課程資料,而Selection 則記錄那些學號的學生修了那些課程的編號。

    請用SQL 寫出查詢:“學生王小明或學號為99開頭的學生所選課的課程名稱及老師”(只要秀課程名稱及老師即可,不要重複)。

    SELECT

      Course.課程名稱,Course.開課老師

    FROM

      Student,Selection,Course

    WHERE

      Student.姓名 = ‘王小明’ AND Student.學號 = Selection.學號 AND Course.課程編號 = Selection.課程編號 OR Student.學號 LIKE ‘99%’ AND Student.學號 = Selection.學號 AND Course.課程編號 = Selection.課程編號

    GROUP BY Course.課程名稱,Course.開課老師

    • 今有一功能為新增訂單資料,新增作業中會同時新增兩個資料表的內容資料(訂單主檔及明細檔),為確保資料庫交易的一致性,其中一方交易失敗則整個交易都rollback,請簡述如何設計方能達到此一目的。使用 TRANSACTION交易機制:
    1. Begin Transaction:開啟交易機制。
    2. 執行資料表內容資料的寫入或異動。
    3. Commit:確認交易,在確認時資料才會寫入資料表。
    4. Rollback:回復交易,執行這行時,會回復在交易內所有T-SQL所更動的內容。
回 文章列表頁