玩轉mysql總結:、、mysql中關鍵字是不須要區分大小寫的 例 select SelecT froM 都是可使用的 mysql基本連接操做: innerJoin leftJoin(查出左邊表全部的數據,即便右邊表的數據不匹配也會以空的數據返回) rightJoin(所有返回左邊表的數據,即便左邊表的數據爲空) mysql存儲引擎: Archive:數據存檔引擎(數據行被插入就不能再修改了) blackhole:寫操做是刪除數據,讀操做時返回(空白)數據 falcon:用來進行事務處理的存儲引擎 innodb;具有外鍵支持的存儲引擎 merge:管理由多個myisam數據表構成的數據表集合 myIsam:默認的存儲引擎 memory:內存裏的數據表 use show語句 show createdatabases: 查看全部的數據表 show tables; 查看全部的表 show columns from tableName==desc tablename 查看數據表裏列的信息 show index from tableName; 查看數據表索引的信息 like 的使用 : like %s% 語句中包含s的 s% 以s開頭 %s 以s結尾mysql
子查詢:= <>(not equal) > < >= <= <=> where(條件判斷) 語句裏不能使用 聚合函數 該語句的做用是應該選取那些數據行,後面的條件應該是隻返回一個值 例:select * from student where id=(select min(student_id) from student);sql
in notIn的使用 若是你的操做數將返回多個數據行,就可使用 in 和 notIN 裏 select * from student where (studnet_id ,age)in(select student_id,age from student where age>10//該語句返回多個數據行);數據庫
All any some 做用是集合一個相對比較操做符,對一個數據列子查詢的結果進行測試(測試值用於和子查詢的一部分或所有的值進行匹配 例<=any true); 例:select brith from student where britn <= alL(SELECT BRITH FROM STUDNET );//返回的將是數據表的一部分值 exists 和 notEXISTEST 測試數據是否返回數據行函數
將子查詢改成鏈接查詢 例:select * from score where event_id in(select event_id from grade_event where catagery='T'); 轉換爲簡單的鏈接操做 select * from score whre event_id inner join grade_event on score_id=grade_eventId where catagery='T'測試
union:默認狀況下進行的是鏈接操做,默認狀況union會去除掉重覆的語句行 unionAll將會保留重覆的數據行 若想將union結果做爲一個總體進行排序 則須要做以下所示的操做 (select id,name from student)union (select * from sd) order by name;\\搜索引擎
視圖的使用: crate view viewName as select * from student where name="hellowordd"; 要點:1:默認狀況視圖中的例與原表中的例相同---若你須要 修改 則使用 create view viewName (viewColumnName,viewColumnName)as select * from studnet; 2:可使用 orderBY語句和limit語句其效果與在底層數據表中的效果相同的 3:在試圖上進行的操做將真正影響到數據庫底層的操做。說明對數據庫使用是生效的atom
delete操做的使用排序
delete from student where id=1; deelte 一次性刪除多張表的數據--delete t1 t2 from t1 inner join t2 on t1.id=t2.id;
若想刪除不匹配的數據行 則使用 delete t1 t2 from t1 left join t2 on t2.id=t1.id where t2.id is null索引
事物的特性:acid atomic(原子性(數據的操做是一個原子單元不會被影響)) consistent(一致性數據的操做先後都是一致的,穩定 事物不會把你的數據弄得一團糟) isolate的(孤立性)(數據先後的操做不會相互影響) durable(持久性)數據一旦存儲將會永久的保存在數據庫 myisam:數據表不支持事物 innodb支持事物 事物的隔離型 髒讀:某個事物的修改 在其還沒有被提交以前就被其它事物看到 不可重覆讀取:兩次select查詢到的結果不一致 幻讀:某個事物看到了其重未見過的數據 innoDb默認是RepeatableRead(三種都是 否否否)事務
解決事物問題的 非實物解決方案 //使用表的鎖定 lockTables unlockTables () 例 lock tables studnet write;//給stuedent加上一個 //dosomething 例 select * from student where age=10; unlock tables; 2:使用相對更新操做,不使用絕對更新操做 UPDATE INVENTORY SET QTY=QTY-3 WHERE INVENTROY =10; 外鍵的建立和使用 foregin key
使用fulltext 索引搜索引擎 針對 myisam引擎 天然語言模式 布爾模式 查詢擴展模式 使用的時候 先建立數據表 再建立搜索引擎
例 select * from student where match(attribution) against('helloworld'); null:表示沒有數據 數據未知,數據缺失,數據超出範圍 給日期加上一個零就能夠將其轉換爲數值 curdate()+0//將日期值轉換爲數值2009-12-3 20081203 curtime+0 捨棄小數部分 cast(now() as unsigned) 161528.0000000 ----161528
mysql建立存儲過程---create procedure proceDureName() dosomething 例 select * from student; 建立複合語句的存儲過程 delimeter $ create procedure greetings() begin //聲明一個變量 declare use char(22) charascter set utf-8 set use=(select current_user()); if instr(user,'@')>0 then set user =substring_index(user,'@',1); end if; if user='' then #anonymous user set user ='earthing'; end if; select concat('Greetings',',user','!') as greeting ; end; delimiter ; 存儲過程的調用 call greetings()//未完待續。。。。。。。。。