mysql權威指南學習筆記

2021-08-27 07:33:40 字數 4296 閱讀 1554

1,mysql的標示符最多就64個字元

2,drop table table1,table2,table3;刪除多個table的時候用,號分隔開,為了避免不必要的錯誤,我們盡量用

drop table if ixists table1;

3,關於varchar,雖然他是可變型別,但是他的最大也是255個字元,經測試他最多是255個字元,510個漢字

但是其中如果你設定了具體的varchar的長度就不能超過這個長度了,這時候我定義了乙個char型別的資料,檢視他的資料的長度

還是會隨之變化的,不明白的地方是用varchar型別有在節省空間嗎?5版本以後的mysql都是可變的資料型別了嗎?

下面的資料**就解決了我這個疑問:儲存相應的位元組所需的儲存空間

資料型別

儲存144位元組的字串

儲存30個字元的字串

最大字串長度

char(150)

150150

255varchar(150)

14531

255tinytext(150)

14531

255text(150)

14632

65535

mediumtext(150)

14733

16777215

longtext(150)

14834

4294967295

4,建立索引的兩種方式

mysql> create table test_index(id int not null primary key auto_increment,name c

har(54) not null, index index1 (id,name),unique index index2(name));

create index index3 on test_index(id);

5,查詢並且插入資料可以直接這樣做:

insert into user (name) select name from user limit 1;

只要讓前後的資料匹配就可以了

同時可以在select裡面使用各種限制語句

insert into user (name) select name from user order by id desc limit 1;

6,last_insert_id()函式的使用:

update user set id = last_insert_id(id+1) where id = 19;

7,auto_increment=9;關於主鍵遞增的問題,可以再auto_increment後面直接新增相應的數值,實現在這個數值上的遞增

8,mysql的運算子包括+-*/=<>!=<><=>=

9,between and 和in與僅用基礎運算子實現的同樣的效果效能要好

10,mysql的正則用regexp表示,可以的regexp替換我們所熟知的like語句 模式

描述.匹配任意單個字元

匹配括號內的任意字元

*匹配該符號前面的字元的零個或者多個

^跟在該符號後面的內容必須是值的開頭

$跟在該符號前面的內容必須是值的結尾

11,計算從哪天到哪天的具體的天數

select to_days(now())-to_days('2010-12-19');

12,mysql提供了日期格式的函式date_format()函式

13,mysql的一些函式:soundex可以檢查字串的讀音,trim可以去掉多餘的空格,這樣可以控制登陸的時候的『空格』輸入

14,(優化)最大程度的減少資料庫的連線和斷開,推薦使用連線池

15,(優化)索引的使用,通常在in,between,等中使用索引,在使用公式的查詢中不使用索引,在like語句用%在前面不使用所

以,只有單獨在後面的時候才使用索引,如果過多的使用索引增加的維護開銷,但是適當的再where地方的多出現字段使用索

引,大大的提高了查詢的效率;對於巢狀查詢的語句的查詢次數是兩個子語句查詢次數的乘積,這樣大大的增加了查詢效率,

所以適當的增加索引大大的提高了效率;

16,(優化)伺服器優化,配置,可能會影響到其他的應用程式:

table_cache

控制mysql表快取記憶體的大小,增加這個引數可以使mysql有更多可以同時開啟的表,無需開啟和關閉檔案

key_buffer_size

控制用來儲存索引的緩衝區大小,增加這個引數能夠索引的建立和修改,可以使mysql記憶體中儲存更多的索引

17,(優化)靜態的mysql版本比動態的版本要快

18,(安全)常用的資料庫角色建立分類 角色

環境特權

描述developer

開發delete,insert,select,update

developer編寫應用**,他們的特權應該只涉及正在開發的應用

architect

開發alter,create,delete,drop,index,insert,select,update

architect為特定的應用設計資料庫結構,他們的特權應當只涉及正在涉及的應用

qa測試

delete,insert,select,update

qa負責測試應用是否正常工作,他們需要與應用用於相同的特權,以支援產品環境的應用

immigrator

測試,試執行,產品

alter,create,delete,drop,index,insert,select,update

immigrator公升級資料庫結構,以反映開發過程中所需要的改動。

emigrator

開發,測試,試執行

select

emigrator將資料庫模式從乙個環境中抽取出來,從而可以移植到另乙個環境中

dbadba

全部dba管理mysql的安裝,執行

19,(安全)grant(特權,物件,使用者)和revoke授予特權命令和收回特權

特權:alter,create,delete,drop,file(訪問伺服器檔案),index(建立,修改,刪除索引),insert,process(授予使用者訪問mysql程序執行緒特權,提供show processlist和kill sql等語句),reload,select,shutdown,update,usage(建立連線),privileges(所有特權,通常使用all替代)

物件:資料庫名.表名,或者當前資料庫下面的表名,或者*表示當前資料庫下面的所有表,或者*.*指的是所有資料庫的所有表

使用者

具體的例項:

grant:grant select on yb.staff to primos;

revoke:revoke select on yb.staff from primos;

20,(安全)在做登陸驗證的時候,盡量不要把密碼取出來以免洩露,而是如下的直接比較,同時也可以用password()方法

select id from user where name = "user" and password = password("password");

從而避免口令在不同的緩衝區內複製傳遞

21,(設計)實體(第一正規化1nf,第二正規化2nf,第三正規化3nf),資料模型,

對於資料庫建立表的關係我們可以通過具體的cd來表示,例子源於本書(第七章)

22,(應用)事務隔離層: 名稱

描述read uncommitted

事務允許髒,非重複和幻想讀取

committed

事務不允許髒讀取,但允許非重複的幻象讀取

repeatable read

事務允許提交的重複讀取和幻象讀取,非重複讀取是不允許的

serializable

事務只允許提交的重複讀取,幻象讀取是不允許的

23,udf函式,主要還是依賴c進行程式設計

24,如果希望與asni相容,則應該一直使用單引號引字串

25,型別轉換

指定varchar列的大小少於四個字元時,他被轉換為char

只要表中至少有一列是變長的,則所有長度大於三個字元的char列都將被轉換為varchar

Ubuntu權威指南學習筆記

安裝步驟 進入bois介面,設定usb優先啟動,進入ubuntu的安裝介面 一些簡單的前期設定這裡直接忽略,主要說明一下磁碟分割槽。1 至少需要兩個磁碟分割槽,分別用於建立 檔案系統與交換分割槽。其中,linux系統使用交換分割槽提供虛擬記憶體,在乙個32位的pc中,不超過2gb。2 若磁碟儲存空間...

HTTP權威指南學習筆記

一直以為學習前端只需要掌握js語法 html語法 css就夠了,確實沒有想到還需要很多知識點,今天來細細學習http。乙個http請求由4部分組成 伺服器返回的http相應包含3部分 乙個數字和文字組成的狀態碼,用來顯示請求的成功和失敗 乙個響應頭集合 響應主體 最常用的web伺服器是apache和...

css權威指南學習筆記

替換元素 用來替換元素內容的部分並非有文件內容直接表示。元素也是替換元素,單選鈕,核取方塊,文字輸入框。非替換元素 段落,標題,表單元格,列表。除了替換和非替換元素,css2.1還使用另外兩種基本元素型別 塊級元素和行內元素。塊級元素生成乙個元素框,會填充其父元素的內容區,旁邊不能有其他元素。例 行...