您好,登錄后才能下訂單哦!
這篇文章主要介紹“學MySQL思考哪些問題”,在日常操作中,相信很多人在學MySQL思考哪些問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”學MySQL思考哪些問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
并不是每一個表中都需要主鍵,一般的,如果多個表之間進行連接操作時,需要用到主鍵。因此并不需要為每個表建立主鍵,而且有些情況最好不使用主鍵。
CHAR與VARCHAR之間的特點與選擇
CHAR和VARCHAR的區別:CHAR是固定長度字符,VARCHAR是可變長度字符,CHAR會自動刪除插入數據的尾部 空格,VARCHAR不會刪除尾部空格。
CHAR是固定長度,所以它的處理速度比VARCHAR的速度要快,但是它的缺點就是浪費 存儲空間。所以對存儲不大,但在速度上有要求的可以使用CHAR類型,反之可以使用 VARCHAR類型來實現。
存儲引擎對于選擇CHAR和VARCHAR的影響:
對于MyISAM存儲引擎:最好使用固定長度的數據列代替可變長度的數據列。這樣可以使 整個表靜態化,從而使數據檢索更快,用空間換時間。
對于InnoDB存儲引擎:使用可變長度的數據列,因為InnoDB數據表的存儲格式不分固定 長度和可變長度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照 實際的長度存儲,比較節省空間,所以對磁盤I/O和數據存儲總量比較好。
查詢結果中,如果需要對列進行降序排序,可以使用DESC,這個關鍵字只能對其前面的列 進行降序排列。例如,要對多列都進行降序排序,必須要在每一列的列名后面加DESC關鍵字。而DISTINCT不同,DISTINCT不能部分使用。換句話說,DISTINCT關鍵字應用于所有列而不 僅是它后面的第一個指定列。例如,查詢3個字段s_id,f_name,f_price,如果不同記錄的這3個字段的組合值都不同,則所有記錄都會被查詢出來。
對字符串類型的字段進行索引,如果可能應該指定一個前綴長度。例如,如果有一個 CHAR(255)的列,如果在前10個或30個字符內,多數值是惟一的,則不需要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間、減少I/O操作。
在本質上它們都是存儲程序。函數只能通過return語句返回單個值或者表對象;而存儲過程 不允許執行return,但是可以通過out參數返回多個值。函數限制比較多,不能用臨時表,只能用表變量,還有一些函數都不可用等等;而存儲過程的限制相對就比較少。函數可以嵌入在SQL 語句中使用,可以在SELECT語句中作為查詢語句的一個部分調用;而存儲過程一般是作為一個獨立的部分來執行。
存儲過程包含用戶定義的SQL語句集合,可以使用CALL語句調用存儲過程,當然在存儲 過程中也可以使用CALL語句調用其他存儲過程,但是不能使用DROP語句刪除其他存儲過程。
在使用觸發器的時候需要注意,對于相同的表,相同的事件只能創建一個觸發器,比如對 表account創建了一個BEFORE INSERT觸發器,那么如果對表account再次創建一個BEFORE INSERT觸發器,MySQL將會報錯,此時,只可以在表account上創建AFTER INSERT或者 BEFORE UPDATE類型的觸發器。靈活的運用觸發器將為操作省去很多麻煩。
到此,關于“學MySQL思考哪些問題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。