[SQL] 查詢語法基本練習題與解題分享
簡答題 請說明以下三者有何不同?完整備份、差異備份、卸離後拷貝檔案 完整備份: 將資料庫內的所有資料建立完整備份。因資料最完整,備份時間最長、檔案最大。 差異備份: 比對上一次資料庫的完整備份,只備份有變動的部分。 在使用差異備份時要先建立一次完整備份。 因只備份差異部分,備份時間較短,但若長時間未定期完整備份,備份檔案仍會越來越大。 卸離後拷貝檔案: 備份的資料完整度與完整備份相同,差異在於拷貝過程中需將資料庫卸離,造成資料庫需暫時性離線。 因為是直接拷貝檔案,速度會比備份還原快一些。 卸離的檔案若搬移到另一電腦使用,再重新附加資料庫時,可能會有使用者權限的問題。 基本語法練習 1. 列出姓李的姓名、住址、電話 select userinfo.uid as '身分證', cname as '姓名', address as '住址', tel as '電話' from userinfo Left Join live on userinfo.uid = live.uid left join house on live.hid = house.hid left join phone on house.hid = phone.hid where cname like '李%' 解題想法: 根據原始資料庫的設計,題目所需的姓名、住址、電話等資訊,分別儲存在Userinfo、House、Phone資料表中。因此,為了讓目標欄位能成功產出,必須先讓相關聯的資料表Join成一張大表,再帶入篩選條件--姓李的姓名。 使用語法: 1. Join--Left Join 2. Like 3. as 2. 台北市有多少棟房子 select count(address) as '台北市房屋數' from house where address like '台北市%' 解題想法: 這個題目是要篩選出台北市總共有多少棟房子。而在模擬的資料庫中,house資料表裡包含全 台灣的房屋地址。因此要將篩選的條件,設定在住址欄位中含有"台北市"的值,再利用 count() function...