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還使用另外兩種基本元素型別 塊級元素和行內元素。塊級元素生成乙個元素框,會填充其父元素的內容區,旁邊不能有其他元素。例 行...