發表文章

[Front-End] CSS 簡易動畫--animation_rollimage

利用animation屬性與keyframes製作簡易的動畫。 範例code: <!DOCTYPE html> <html>     <head>         <style type="text/css">             #banner{                 position:relative;                 width:800px;                 height:168px;                 margin:0px auto;                 overflow:hidden;                 outline: 1px solid gray;             }             #bannerText{                 position:absolute;                 right:15px;                 top:8px;       ...

[SQL] MS-SQL資料庫卸離與備份還原

備份 1. 進入SSMS操作介面 2. 在要備份的資料庫上點選右鍵_工作_備份 3. 選擇備份類型 (Express版僅有完整與差異備份,enterprise版才有多交易紀錄備份。) 4. 做差異備份前一定要做完整備份,因為差異備份是備份對於上次完整備份後,所做的改變部分備份。 5. 選擇媒體選項 (覆寫媒體選擇_附加至現有/覆寫所有現有備份) 6. 確認備份位置 7. 按確定讓系統執行備份 通常 -> 每周備份一次完整。每天備份一次差異。每小時做一次交易紀錄備份。 還原 1. 進入SSMS操作介面 2. 資料庫_右鍵 3. 選取表單上的還原資料庫 4. 選取來源<檔案位置/裝置> 5. 按下確定_開始還原 卸離資料庫 卸離資料庫後,可在SQL安裝資料夾中將資料庫檔案直接複製,並移動到另外一台電腦上。 1. 進入SSMS操作介面 2. 資料庫_右鍵_卸離 3. 點選確定即卸離完成 備註: 卸離後拷貝檔案需要卸離資料庫後才可備份檔案,備份速度為被複製檔案的大小差別。 附加資料庫 1. 進入SSMS操作介面 2. 資料庫_右鍵_附加 3. 選擇要附加的資料庫 4. 點選確定即完成附加

[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...

[SQL] 資料庫設計練習_博客來全站分類與購物車

圖片
如要建立博客來首頁的全站分類與購物車料庫系統,ERD該如何設計? 筆記: 資料庫在建立時一定要考量到關聯性(一對一/一對多/多對多) 索引的建立 資料字典的建立 資料庫使用流程 for 後端工程師 於資料庫建置時就必須思考好,並建立提供給後端工程師使用的說明文件。 E.g ISBN, 作者, 書名, 出版社,…etc. 1. insert into ____ values() 2. insert into ____.... 3. select * from …. 4. insert into _____...etc. **資料庫會隨著前端功能變化改變而變動。 **資料庫確定後,後續軟體開發較易進行。 **前端需求與功能變化大,資料庫如何應對? 使用Json (字串格式) 一個資料表應對? E.g. { “UID” : “A01”, “cname” : “AAA”, “birthday”: “1999-01-01” } NoSQL [No Only SQL] (MySQL 8支援NoSQL格式) 當資料量成長至一定程度且穩定時,可選擇轉SQL或NoSQL。 **正統NoSQL: MongoDB

[T-SQL] 自訂函數練習: 整數金額轉換國字大寫

在資料庫中建立自訂函數,將輸入的金額轉換成國字大寫格式。 網路版本 (轉貼自: https://daimom3020.blogspot.com/2017/10/sql.html ) create function moneytochinese (@money numeric(14,2)) returns nvarchar(32) as begin declare @money_num nvarchar(20) --存儲金額的字符形式 declare @money_chn nvarchar(32) --存儲金額的中文大寫形式 declare @n_chn nvarchar(1) --這個的作用是什麼??? declare @i int --臨時變量 select @money_chn=case when @money>=0 then ' ' else null end select @money=abs(@money) --abs()取絕對值 select @money_num=stuff(str(@money, 15, 2), 13, 1, ' ') --加前置空格補齊到位(去掉小數點)[把金額全部變成數字串] select @i=patindex('%[1-9]%', @money_num) --找到金額最高位 while @i>=1 and @i<=14 --假定金額的最小與最高位數 begin set @n_chn=substring(@money_num, @i, 1) -- if @n_chn<>'0' or (substring(@money_num,@i+1,1)<>'0' and @i not in(4, 8, 12, 14)) --條件判斷該數字是否為國字數字/或需要轉換 [4-->千, 8-->千萬,...] set @money_chn=@money_chn+substring('零壹貳參肆伍陸柒捌玖', @n...

[SQL] 查詢語法基本介紹 Part 5 (視觀表 View)

基本介紹: 視觀表又稱檢視表,是一個虛擬的資料表。 視觀表本身並無儲存資料,只有定義資料,定義從那些資料表或檢視表挑出那些欄位或記錄。 雖然視觀表不是一個真正的資料表,是由SQL Command所產生。但是完全可以當成一般的資料表使用,可以新增、更新、刪除資料,但這些操作實際上是作用在其定義的來源資料表。 另一個角度來看,可以是將特定查詢的SQL Command以View的方式,儲存在資料庫裡。 在建立視觀表時,建議在名稱前方加上特定字串以供區別,如:VW_userinfo_taipei。 優點:隱藏/過濾原始資料,並簡化資料查詢。 達成邏輯資料獨立。 增加資料安全性。 簡化資料查詢。 簡化使用者觀點。 缺點:多一道建立過程,且沒有真正資料,所以有更多的操作限制。 執行效率差。 更多的操作限制。 增加管理的複雜度。 語法範例: 建立一個住在台北市民眾資料的視觀表 CREATE VIEW v_userinfo_taipei AS SELECT userinfo.uid, cname, address FROM userinfo, live, house WHERE userinfo.uid = live.uid AND live.hid = house.hid AND house.address LIKE = '台北市%' 注意!AS後面只能接一個SQL Command (巢狀/UNION ALL) 使用視觀表:與一般查詢資料表相同 --查詢住在台北市民眾資料的所有欄位 select * from v_userinfo_taipei --查詢住在台北市民眾資料共有幾筆 Select count(*) from v_userinfo_taipei 進階練習:查詢平均電話費大於300的費用 --先建立含有平均電話費的視觀表 create view vw_avg_fee as select tel, round(avg(fee),0) as avg_fee from bill group by tel --使用視觀表並篩選資料 select * from vw_avg_fee where avg_fee > 300 其他解法分享 (不使用VIEW的方...

[SQL] 查詢語法基本介紹 Part 4 (關連線處理/合併查詢_Join)

基本概念: 將儲存在多個資料表的欄位值取出,並使用合併查詢合併成所需要的查詢結果(一張大資料表)。 通常是使用資料表之間的關聯欄位來進行查詢,但也可以不使用關聯性建立資料查詢。 *將因正規化分散的資料合併成一張表(JOIN)* Select (要找什麼樣的資料欄位) From (從哪些資料表) Where (各表之間怎麼連/各表之間的關聯性) 備註:基本上JOIN的操作都會需要使用ER圖! 類型介紹: 1. INNER JOIN 內部合併查詢 查詢在兩張資料表中,彼此都存在且符合合併查詢條件的資料。 若各自只出現在自己的資料表中的資料則全部不要。 換個說法就是,兩邊資料表都有資料時才會合併,對方沒有的就刪掉(左右不相等的就刪掉/其中一邊有NULL值的也會刪掉。) 範例: 列出身分證號、姓名、地址、電話 SELECT userinfo.uid, cname, address, tel FROM userinfo, live, house, phone WHERE userinfo.uid = live.uid AND live.hid = house.hid AND house.hid = phone.hid 2. LEFT (OUTER) JOIN 左側外部合併查詢 在合併的兩個資料表中,取回左邊資料表內的所有紀錄資料,不管右邊資料是否有相對應的資料存在。 換一種說法: 左側外部合併查詢中,關聯線的左側資料比較多。 除了兩邊共有的資料外,也取出左側的資料表的其他紀錄。 重點提醒: 若有合併欄位無資料,資料庫會給該欄位NULL值。 如果要讓NULL值顯示自訂的訊息。可用isnull(欄位, “自訂的訊息”)。 備註: 如果資料型態不同,需轉換可使用 cast(欄位 as 資料型態) 用參考索引控制多的資料在同一邊(參考索引所在的那一邊) 資料多的在左邊->left join 反之 right join left + right = outer join 範例: 列出身分證號、姓名、地址、電話 SELECT userinfo.uid, cname, address, tel FROM userin...