国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP面試之三:MySQL數據庫

DrizzleX / 1510人閱讀

摘要:基礎考點數據類型整型小數型字符串型時間日期型枚舉類型在定義整型數據類型時,經常看到括號里指定的是顯示長度,不限制值合法范圍,這個顯示長度要配合這個屬性才有意義。

基礎考點

MySQL 數據類型

整型:tinyint、smallint、mediumint、int、bigint
小數型:float、double、decimal
字符串型:varchar、char、text、blob
時間日期型:time、date、datetime、timestamp
枚舉類型:enum

在定義整型數據類型時,經常看到 int(4) 括號里指定的是顯示長度,不限制值合法范圍,這個顯示長度要配合zerofill這個屬性才有意義。


1、 VARCHARCHAR 更節約空間
2、 CHARVARCHAR 存儲效率更好
3、 VARCHARCHAR 的長度,如果存儲內容超出指定長度,會被截斷
4、 存儲經常改變的數據,CHAR 不容易產生碎片


盡量避免使用 BLOB/TEXT 類型,導致嚴重的性能開銷


1、 有時可以使用枚舉類型代替字符串類型
2、 枚舉類型內部存儲成整型(節省空間)
3、 避免使用數字作為 enum枚舉 的常量,易混亂


1、 盡量使用 TIMESTAMP 來保存時間日期數據
2、 如果需要存儲微秒, 可以使用 BIGINT 類型

MySQL 基礎操作

連接與關閉:mysql -u -p -h -P

MySQL 存儲引擎(數據表)

MyISAM與InnoDB的區別

1、 InnoDB支持事務,MyISAM不支持事務
2、 InnoDB支持行級鎖,MyISAM支持表鎖
3、 InnoDB數據存儲在共享表空間,MyISAM數據存儲在MyD文件和MyI文件
4、 InnoDB支持奔潰后的安全恢復,MyISAM不支持
5、 InnoDB對主鍵查詢的性能高于其他存儲引擎
6、 MyISAM擁有全文索引、壓縮、空間函數

MySQL 鎖機制

由于并發操作的產生,所以需要使用鎖進行并發控制
鎖分為2種:共享鎖排他鎖,就是讀鎖寫鎖

共享鎖(讀鎖),不堵塞,多個用戶可以同時讀同一資源,互不干擾

排他鎖(寫鎖),一個寫鎖會阻塞其他讀鎖和寫鎖,這樣只允許一個人進行寫入操作,防止其他人進行讀取或者寫入

注意:InnoDB支持行級鎖,MyISAM支持表鎖

MySQL 事務處理

注意:使用事務的前提是 表必須是InnoDB引擎

安全性考點

SQL注入

使用 預處理 來防止SQL注入

特殊字符轉義

寫入數據庫的數據必須經過特殊字符轉義操作,此操作在應用層進行

錯誤記錄

當發生查詢錯誤時,不能把錯誤信息返回給用戶,把錯誤記錄到日志

索引考察點

使用索引的優缺點

優點:
1、減少服務器掃描的數據量
2、避免排序和臨時表
3、隨機I/O變順序I/O
4、提高查詢速度

缺點:
1、降低寫的速度
2、占用磁盤

索引使用場景

非常小的表(1~1000) 不使用索引
中型(1000~100W)   使用索引
大型(100W~1000W)  使用索引
超大(1000W以上)   索引 + 分區技術

索引類型

1、普通索引
2、唯一索引 (在普通索引的基礎上,加上唯一約束)
3、主鍵索引 (在唯一索引的基礎上,加上不能為Null)
4、組合索引
5、全文索引 (少用,只適合英文)
6、外鍵索引 (少用,使用業務邏輯進行數據關聯)

索引創建原則

1、最適合索引的列是出現在where子句中的列,或連接子句中的列,而不是出現在SELECT關鍵字后的列
2、索引列基數越大,效果越好
3、對字符串進行索引,應該制定一個前綴長度,可以節省大量索引空間
4、根據情況創建復合索引,復合索引能提高查詢效率
5、避免創建過多的索引
6、主鍵盡量選擇較短的數據類型

索引注意事項

1、復合索引遵循前綴原則(重要,按順序)
2、like查詢,%不能在前面(在前面索引會失效,如果要在前面請使用第三方全文索引)
3、列is Null也是可以使用索引
4、如果OR條件想用到索引,必須or前后的字段都需要是索引字段
5、列是字符串類型時,查詢時一定要使用引號(單或雙),索引才會生效
SQL語句關聯考察點

關聯操作

1、關聯更新
2、關聯查詢

連接方式

1、交叉連接 Cross join (無條件)
    
    select * from A CROSS JOIN B CROSS JOIN C;

2、內連接 INNER JOIN (有條件的交叉連接) 簡寫 JOIN

    select * from A INNER JOIN B INNER JOIN C ON A.id = B.id;
    select * from A,B where A.id = B.id;
    select * from A T1 INNER JOIN A T2 ON T1.id = T2.id;
    
3、外連接
    
    左外連接 LEFT JOIN
    右外連接 RIGHT JOIN
    
4、聯合連接 (UNION重復的合并,UNION ALL重復的不合并)

    SELECT * FROM position UNION SELECT * FROM team; 
    SELECT * FROM position UNION ALL SELECT * FROM team; 
    **UNION ALL性能高于UNION**
    
5、全連接(MySQL不支持)
MySQL高擴展與高可用

分庫

分表(水平與垂直)

讀寫分離

主從復制

負載均衡

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25984.html

相關文章

  • 面試系列】之三:關于閉包和遞歸

    摘要:之三關于閉包和遞歸開篇這一期本來是打算寫閉包的,但是無意中看到高級程序設計中閉包的前一章就是遞歸。閉包練習題這個板塊會實時補充的關于遞歸其實說到遞歸,主要就是要說這個的用法,其實主要就是調用自己的外圍函數,并且可以傳參。 之三:關于閉包和遞歸 1. 開篇 這一期本來是打算寫閉包的,但是無意中看到《JavaScript高級程序設計》中閉包的前一章就是遞歸。所以拿出來一起講一下吧! 我覺得...

    2501207950 評論0 收藏0
  • MySQL學習筆記之三排序和過濾

    摘要:張三李四張三北京海底市南區李四北京海底市南區操作符的優勢使用長的合法選項清單時候操作符比較直觀。支持對子句取反。張三李四趙蕓上海市徐匯區王麗廣州廈門我的網站 在數據庫的使用中排序和過濾也是經常的操作 排序檢索數據,關鍵字order 1.按照某個列名排序 普通排序 mysql> select * from user; +----+--------+-----+--------------...

    legendmohe 評論0 收藏0

發表評論

0條評論

DrizzleX

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<