標籤:
寫在前面:(一些牢騷,可以直接跳到分割線後)
太過敏感的人不會快樂,不幸的是我正是這種性格的人。
從培訓機構畢業後,迫於經濟方面的壓力,和當時的班裡的一個同學住在了一起,我們在一個公司上班。誰知道這都是不開心生活的源頭,從每天早晨開始心情就很糟糕。他是個脾氣很慢的人,我是個急脾氣,特別是在早上上班的時候。由此種種吧,實在是不勝枚舉。算了,還是不說了,太痛苦了,我不太喜歡說別人的壞話。我是學心理學的,已經用各種方法去安慰自己,但是都不太奏效。
回想以往和朋友的交往中,我雖然不算十分合群的人,但絕對算不上孤僻。但是現在和他住在一起,我居然出現了某種程度上退行,真是糟糕極了。
房子到明年三月才到期,明年工資也能漲一點吧,到時一個人租一間屋子,快快樂樂的工作學習。
一定要找一個合得來的人合租,否則是噩夢的開端。
一定要找一個合得來的人合租,否則是噩夢的開端。
一定要找一個合得來的人合租,否則是噩夢的開端。
前面發了不少牢騷,心情糟糕透了。現在開始分享本文內容。
這一部分是最簡單的,也是最麻煩的。簡單是因為其實只包括增刪該插四個部分。大體上看,增加資料、刪除資料、修改資料、查詢資料都不麻煩啊,我們日常都是常用的。這個誰不會呢?以前在培訓機構學mysql的時候,我就知道,程式員的成長路程上的一個瓶頸就在於資料庫。如何書寫高維護性的sql語句,如何能保持高維護性的同時又保持執行的高效率,這是個難題。我最近在做一個比較棘手的項目,常常left join 5~6張表,掃表10幾萬,查詢速度慢的驚人。10幾萬還僅僅是測試資料,等真正的項目上線,資料量可能會達到百萬層級。因此低效率的mysql 語句,可能程式直接就崩潰了。
因此關於資料這部分的增刪改插是最難的,也是至關重要的,一定要學好。但我們今天僅僅書寫最簡單的增刪該插,後面的部落格將會持續深入的去整理相關方面的知識。
增加資料:
insert into 表名 (欄位1, 欄位2, 欄位3, 欄位n) values (值1,值2,值3,值4);
這個比較簡單。這是一條通用語句。可以值inset一條資料,也是insert多條資料。這個在《Mysql學習筆記(二)對錶結構的增刪改查》的測試sql裡面有。可以參考一下,這裡就不重複貼代碼了。
注意事項:
向char 、varchar 、text 以及日期型的欄位插入時,欄位值要用單引號括起來。
向自增型auto_increment欄位插入資料時,建議插入NULL值,此時欄位將向自增型欄位插入下一個編號。其實我平時都直接不寫。
向預設值限制欄位插入資料時,欄位值可以使用default關鍵字,表示插入的是該欄位的預設值。
插入新紀錄時,需要注意表之間的外鍵約束關係,原則上先給父表插入資料,然後給子表插入資料。
刪除資料:
刪除資料是比較危險的操作,平時在開發測試階段,可能會用到,但是到了真正的項目上線階段,是不會有delete許可權的。
文法: delete from 表名 where 條件;
delete from classes where class_no = 53; (可以繼續用《Mysql學習筆記(二)對錶結構的增刪改查》中的測試sql);
強調一句,刪除資料與修改資料,不加條件都是臭流氓。
修改資料:
修改資料也是很危險的操作,在項目上線的時候,只有某些表的某些欄位允許更改。
文法:update 表名 set 欄位名=欄位值 where 條件。
update classes set class_name=‘roverliang‘ where class_no=52;
強調一句,刪除資料與修改資料,不加條件都是臭流氓。
查詢資料:
基本上項目中有90%以上關於資料庫的操作是查詢操作。因此查詢語句寫的好不好,將直接體現出一個程式員的編程能力。
反對那些人,一看到很長sql語句就搖頭表示否定。他們從一些資料中得知,sql語句寫的長會使執行效率下降、簡直對長長的mysql語句是避而遠之。將本來能一氣呵成的mysql硬生生的分成了幾個零散的片段。
對於我們搞技術的人來說,憑感覺是不對的。一切要以事實為基礎,sql執行快慢優劣不是憑感覺拍腦袋決定的。真正決定sql執行速度的還是mysql本身,所以遇到疑惑的,就放進mysql裡跑一跑。那個快那個慢,就高下立見了。
如果兩者執行時間幾乎相當,當然要毫不猶豫的選用一氣呵成的sql。好維護啊!能夠大大的減少代碼量。
有些朋友可能會反駁說,那麼長一段sql,看著都煩人,怎麼會好維護呢?這其實與個人習慣有關,對於長的sql語句,我個人平時是這麼寫的,不知道對不對,請大家給指點下。
#長長的sql; select 欄位1,欄位2,欄位3,欄位nfrom 表一 as t1,表二 as t2 ,表三 as t3 left join 表四 as t4 on t1.欄位1 = t4.欄位1left join 表五 as t5 on t1.欄位2 = t5.欄位2where t1.欄位1=1 and t2.欄位2=2 and t3.欄位3 > 3 group by t1. 欄位1 order by t1limit 1,5;
總之,一切的原則是要邏輯清晰,排版美觀,能對齊的一定要對齊。
將代碼當作白居易的詩歌來寫,力求簡練,但要兼顧可讀性,讓三歲小兒與七十歲老嫗可懂。
將代碼當作平面設計作品來寫, 等號之間、變數之間排版整齊。程式碼片段與程式碼片段之間錯落有致,整齊劃一。
不要吝嗇空格與分行符號。將代碼想象為資料流,讓代碼有流動的空間。
Mysql學習筆記(三)對錶資料的增刪改查。