目錄
第十四章 使用子查詢,第十五章 聯結表,第十六章 創建高級聯結,第十七章 組合查詢
第二十三章 使用存儲過程,第二十四章 使用遊標,第二十五章 使用觸發器
第二十八 安全管理,第二十九章 數據庫維護,第三十章 改善性能
前言:
上一篇博客還是在10月份的時候發的,現在讓我們再次開啓技術之海吧。首先簡單的談談我對這本書的看法,它真的很適合快速開發入手(特別是當你僅僅只是想開發一個小demo的時候),基本上你簡單的看完關於數據庫的創建刪除以及表的增刪改查操作之後,你就可以結合自己學到的JDBC來進行開發。因爲現在的一些demo都是很簡單的,也很少會用到子查詢這些較複雜的地方,所以很快就可以入門,而且它的知識點還是很全的。
不過我們從學校方面來看,正常入門都是先學習SQL,然後纔是去寫各種語句,如果要進一步去學習理論,那麼SQL是必須的。
好啦,現在我們從書裏面去找到我們遺漏掉的知識點吧,和我一起看看,看看你是否也遺漏了呢?
第一章 瞭解SQL
1、數據庫和數據庫管理系統的區別(DBMS):雖然沒有那麼重要,但是還是要注意一下,我們經常使用的其實是DBMS,而不是數據庫。
第二章 MySQL簡介
1、MySQL是一種DBMS,即它是一種數據庫軟件。(這裏我自己對於爲什麼會有MySQL、Oracle、SQLserver的理解是:SQL是標準委員會定製用來操作DBMS的,但是對於不同的數據庫軟件它們的語法略有不同,所以纔會有專門針對MySQL的SQL,專門針對SQLserver的SQL,如果你都用過,你就會發現其實區別不是很大,但是也一定要注意使用呀!)。
2、DBMS可分爲兩類:一類爲基於共享文件系統的DBMS(例如Microsoft Access),還有一類就是基於客戶機-服務器的DBMS(例如:MySQL)。
第三章 使用MySQL
1、現在用Windows系統開發一些小demo比較多,所以很少用到命令行執行操作,但是這裏我們還是很有必要熟悉一下,因爲之後會在Unix/Linux系統開發比較多。
你可以看看還記得以下的幾個命令嗎?
user database; show databases; show tables; show columns from table; show status; show create database; show create table; show grants; show errors;show warnings
我在《簡單的MySQL操作20問!看這個就夠了》這篇博客裏面都列舉了主要的操作,可以去康康哦。
第四章 檢索數據
1、關於通配符(*)用起來的確很爽,但是除非你確實需要表中的每個列,否則最好不要用,雖然會省事(的確,哈哈哈),但是檢索不需要的列通常會降低檢索和應用程序的性能。
2、還記得DISTINCT關鍵字嗎?就是指示MySQL只返回不同的值(例如:select distinct id from student)。
3、記住limit 1是第二行,這點和java的索引相似(即0是第一行)。還有limit 4 offset 3意爲從第三行開始取4行,也有(limit offset,size;)
第五章 排序檢索數據
1、有一個概念需要解釋一下,我們檢索出來的數據並不是以純粹的隨機順序顯示的,如果不排序,數據一般將以它在底層表中出現的順序顯示(這可以是最初添加到表中的順序,但是如果數據後來進行更新或刪除,則此順序將會受到MySQL重用回收存儲空間的影響)。
第六章 過濾數據
1、還記得在同時使用order by和where字句的時候,order by應該在where之後。當然還有having它是對子句結果的過濾。
2、還記得空值檢查嗎?例如:select id from student where name is null;(這裏需要注意,我們在過濾返回的時候不會返回具有NULL值的行)。
第七章 數據過濾
1、我們要記住and操作符優先級是比or操作符優先級高的,所以某些時候我們可以使用圓括號來達到我們設置計算次序的目的。
2、MySQL中的NOT,支持NOT對IN、BETWEEN和EXISTS字句取反。
第八章 用通配符進行過濾
1、回憶一下通配符:LIKE(其實從技術上來說是謂詞)、%、_
第九章 用正則表達式進行搜索
1、正則表達式是用來匹配文本的特殊的串(字符集合)。
2、舉個例子,檢索列name包含文本100的所有行:
select name from student where name REGEXP '100' order by name;
我們這裏回顧一下REGEXP的知識
(1)基本字符匹配
輸入:select name from student where name REGEXP '.000' order by name;
輸出:name
jj 1000
kk 2000
分析:這裏使用了正則表達式.000。其中.是正則表達式中一個特殊的字符(表示匹配任意的一個字符)。
(2)進行OR匹配,使用|,例如select name from student where name REGEXP '1000|2000' order by name;
(3)匹配任意單一字符,可通過指定一組[和]括起來的字符來完成,例如:
輸入:select name from student where name REGEXP '[123] Ton' order by name;
輸出:name
1 ton anil
2 ton anvil
分析:這裏使用了正則表達式[123] Ton。[123]定義一組字符,它的意思是匹配1或2或3。
(4)匹配範圍
集合可用來定義要匹配的一個或多個字符。例如有[0-9]或者[a-z]。
(5)匹配特殊字符
爲了匹配特殊字符,必須使用\\爲前導,\\-表示查找-。
(6)匹配字符類
我們可以使用預定義的字符集,有:
(7)匹配多個實例
對匹配的數目進行更強的控制,可以使用正則表達式重複元字符來完成,有:
(8)定位符
爲了匹配特定位置的文本,使用定位符有:
第十章 創建計算字段
1、Concat()拼接串,即把多個串連接起來形成一個較長的串。
2、函數RTrim()函數去掉值右邊的所有空格;Trim函數去掉左右兩邊的空格,以及LTrim去掉串左邊的空格。
例如句子:select Concat(RTrim(name),'(',RTrim(id),')') from student order by name;
第十一章 使用數據處理函數
1、這裏介紹了日期處理函數和文本處理函數,在我自己的開發中其實大多都是在後端進行處理,而不是數據庫,不過還是有必要了解這個的。
第十二章 彙總數據
1、這幾個聚集函數要記住哦:
第十三章 分組數據
1、這裏需要注意一下having和where的差別,where在數據分組前進行過濾,having在數據分組後進行過濾。
第十四章 使用子查詢,第十五章 聯結表,第十六章 創建高級聯結,第十七章 組合查詢
這部分的知識在SQL還是挺重要的,如果沒有掌握的話建議去找例子學習,只有自己敲纔可更好的掌握,我們這裏就很快走過啦~
第十八章 全文本搜索
1、並非所有引擎都支持全文本搜索,最常用的引擎MyISAM和InnoDB,前者支持全文本搜索,後者不支持。
2、可以使用Match()和Against()執行全文本搜索。
第十九章 插入數據
1、還記得insert插入多行的寫法嗎?
insert into student(id,name,sex,age) values('123','jj','man','34'),values('1234','kk','man','34');
第二十章 更新和刪除數據
1、update和delete應該記得把。
第二十一章 創建和操縱表
1、需要知道幾個引擎:
InnoDB是一個可靠的事務處理引擎,不支持全文本搜索;
MEMORY在功能上等同於MuISAM,但由於數據存儲在內存(不是磁盤)中,速度很快,特別適合於臨時表;
MyISAM是一個性能極高的引擎,它支持全文本搜索,但不支持事務處理。
2、更新表的操作,例如添加一個列:alter table student add hobby CHAR(20);刪除一個列:alter table student drop column hobby;
3、重命名錶有:rename table studnt to student11;
第二十二章 使用視圖
1、create view創建,drop view viewname刪除。我自己在開發中沒有怎麼使用到,所以在合理就大致看看吧,但是要知道它的作用我覺得就是讓我們寫語句更加簡潔。
第二十三章 使用存儲過程,第二十四章 使用遊標,第二十五章 使用觸發器
這一部分的知識算是高級部分吧,可以去學習一下
第二十六章 控制事務處理
1、這個在開發中挺多的,JDBC中我們就自己使用,所以要記住一些簡單的命令。
第二十七章 全球化和本地化
1、這個其實就是設置好字符集,必過一般挺長的,都是找度娘康康(doge)。
第二十八 安全管理,第二十九章 數據庫維護,第三十章 改善性能
1、就看看就好吧。
總結:
如果學過SQL的語法再來看《MySQL必知必會》真的很快,也可以當做自己複習的書籍來進行閱讀,我是根據自己遺漏來進行整理的文章,所以有很多地方是有所欠缺的,後半部分覺得需要自己投入時間去琢磨,僅僅是看概念是不行的,所以也沒有過多的提及(高級部分)。這個專欄終於推薦了一本書emmmm,之後每個月都保持學習更新,沖沖衝!