mysql怎么學筆記 mysql怎么入門

MySQL是怎樣運行的讀書筆記

《MySQL是怎樣運行的:從根兒上理解 MySQL》是一本MySQL的底層運行原理的書。關于底層運行原理4個字怎么理解呢,我的理解是專注于介紹 MySQL 的 innoDB的底層存儲細節(jié),并以此為基礎延伸到分析MySQL 實際應用中的特性。

藤縣網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)公司。

相比極客時間里面的《MySQL 實戰(zhàn)45講》,我覺得這本書更像電視劇《一代宗師》里面講到的里子而非面子,更聚焦于事情的本質(zhì)而非表象,所以非常推薦大家耐心閱讀。我是3.28號收到的書,在上下班的路上斷斷續(xù)續(xù)完成了閱讀(這就是上下班需要花3個小時的好處),所謂的斷斷續(xù)續(xù)就是每個點都了解了,但是沒有串成線形成面。今天剛好周六就抽了一下午加一晚上把所有的內(nèi)容從頭到位又串聯(lián)了一次,整體下來差不多花了兩周時間才消化完。

為啥對 MySQL突然來了興趣呢,緣于2021年底以來公司內(nèi)部組織了兩場分享,當時聽完分享后針對分享的PPT消化了一波,但是總感覺不得勁。雖然理解了分享中部分場景但卻無法理解背后的原理,所以斷斷續(xù)續(xù)在網(wǎng)上搜集些介紹 MySQL 的書籍就發(fā)現(xiàn)了這本書,閱讀后再重新回顧之前的分享,感覺突然開竅了。

梳理了下整個書本的內(nèi)容,按照個人的理解給出閱讀的建議,首先這部分的內(nèi)容其實挺多的,但是建議聚焦于幾條核心的線:innoDB的數(shù)據(jù)存儲,索引的設計和應用,redo/undo 日志以及 mvcc 的原理。

關于 innoDB 的存儲,這部分建議閱讀章節(jié): 從一條記錄說起—— InnoDB 記錄結(jié)構(gòu)、盛放記錄的大盒子 —— InnoDB 數(shù)據(jù)頁結(jié)構(gòu)、 調(diào)節(jié)磁盤和CPU的矛盾 —— InnoDB 的 Buffer Pool》。這三個章節(jié)按照數(shù)據(jù)存儲由微觀到宏觀的順序進行講解:單條記錄的存儲結(jié)構(gòu)、頁維度的存儲結(jié)構(gòu)、Buffer Pool 的存儲結(jié)構(gòu)等。

索引的設計和應用,這部分閱讀建議建立在innoDB的存儲相關章節(jié)已經(jīng)完成閱讀的基礎上,相關章節(jié)包括: 快速查詢的秘籍 —— B+ 樹索引、 好東西也得先學會怎么用 —— B+ 樹索引的使用。這兩個章節(jié)介紹索引的存儲結(jié)構(gòu)以及實際應用,跟日常工作比較有強關聯(lián)性。

redo/undo 日志以及 mvcc 的原理,這部分建議閱讀章節(jié): 說過的話就一定要辦到 —— redo 日志(上)、 說過的話就一定要辦到 —— redo 日志(下)、 后悔了怎么辦 —— undo 日志 (上)、 后悔了怎么辦 —— undo 日志 (下)、 一條記錄的多幅面孔 —— 事務的隔離級別與MVCC。這幾個章節(jié)主要是為了講清楚 MVCC 的底層實現(xiàn)原理。

最后推薦對 MySQL 有興趣的同學可以買來翻翻看,收獲肯定是有的。

MySQL筆記1select基礎

查詢語句:select 語句

三種能力:投影、選擇、連接

投影:在一張二維表中根據(jù)所需要的條件選出所需要的列

選擇:在二維表中根據(jù)所需的條件選擇合適的行

連接:從一張或者多張表中獲取所需要的行,并且把這個行結(jié)合在一起的查詢

SQL語句大小寫不敏感。

select語句是可以計算的

算術表達式和運算符優(yōu)先級

舉例:select ename,sal 12*sal+100 from emp

計算出年薪+100塊

NULL值是不可用,且未分配的,未知并且不適用的值,可以當成是保留值

AS其實可以省略

例如:select ename as name,sal salary from emp;

查詢出的字段會自動換成別名

例子:select ename "Name",sal*12 "Annual Salary" from emp;

級聯(lián)操作是將列或字符串和其他列串聯(lián),由兩條豎線(||)表示

select ename,job,ename || job as "Employees" from emp;

可以看出Employees就將ENAME和JOB進行結(jié)合的一個操作

在select句子中適用DISTINCT 關鍵字消除重復行

select distinct deptnp from emp;

限制選擇的行:

where關鍵字

如果where后面查的數(shù)據(jù)是字符串類型或者日期類型的要加''號

#######比較條件

舉幾個例子:

select ename,job,sal,deptno from emp where sal between 5000 and 10000;

這個是包含了5000和10000的

in的表達:

select empno,ename,mgr,deptno from emp where mgr in (7788,7782,7000);

只要mgr有括號里面的值都顯示出來。

通配符:%通配的是多個字符,_通配的是一個字符

IS NULL是查詢某個字段為空的顯示出來

and、or、not

例子:

查詢sal=2000和job的內(nèi)容是包括MAN字符串的,當同時滿足兩個條件時候才返回結(jié)果。

and就是兩邊同時為真,or的話是有一邊為真就行,not就是不等于

ASC 升序,默認升序

DESC 降序

例子:

將deptno中進行升序排列,排列出來后,在將sal進行降序排列。

單行函數(shù):就是對單行數(shù)據(jù)進行處理的函數(shù),只針對這一條數(shù)據(jù)得出一個結(jié)果

函數(shù)工作的過程

ROUND(45.926,2)是將45.926這個數(shù)字的小數(shù)點后兩位進行四舍五入操作得到45.93

TRUNC(45.926,2) 是將45.926這個數(shù)字的小數(shù)點后兩位后面的進行丟掉。

返回當前系統(tǒng)日期

經(jīng)常是不同類型之間的轉(zhuǎn)換

TO_CHAR就是將日期型數(shù)字型轉(zhuǎn)換成字符型

例子:

數(shù)字型的轉(zhuǎn)換

把字符轉(zhuǎn)換成數(shù)字:

把字符轉(zhuǎn)換成日期:

什么是分組函數(shù)?

另外的名字叫多行函數(shù),針對于多行數(shù)據(jù)進行一個匯總處理的一類函數(shù),最后會得到一個匯總的結(jié)果。

例子:

其實就是對一系列數(shù)據(jù)找最大值

基本格式:select group_function(column),... from table [where condition];

首先對一個數(shù)據(jù)進行分類匯總把每一組的數(shù)據(jù)單獨的拿出來。就是對每一列數(shù)據(jù)的相同數(shù)據(jù)進行一個分組,然后在將分組后的結(jié)果再去執(zhí)行select后面跟的一個分組函數(shù)的操作。

例子:

那下面這樣的怎么操作呢?

其實就是對分組以后的結(jié)果再次進行一個限制篩選

where和Having的區(qū)別?

where是針對于整體的一個查詢結(jié)果

Having是針對于分組后的查詢結(jié)果的一個條件限制,它是不能單獨存在的,它只能夠在group by后面

下面是它的表達式:

顯示部門的最大平均薪水是多少

select max(avg(sal))

是這樣的一個嵌套

當我們查的數(shù)據(jù)存在于多個表的時候就需要多表查詢

下面是用到的表

一個是EMP的職員表、一個是DEPT的部分表

表連接的三種方式:

從總類上來看:自連接、等值連接、外連接(又可以分為三類:左連接、右連接、全連接)

自連接:一個表自己與自己建立連接成為自連接或自身連接。

在查詢的時候多表,這兩張表是同一張表,所以在查詢前我們需要對這個表進行一個別名的重命名。

舉例:查詢出員工編號、名字及其經(jīng)理名字

MGR對應的是經(jīng)理的ID號,這個對應的就是另一張經(jīng)理表中的名字

表示比較連接列的值顯示出最終的一個結(jié)果,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復列。

查詢員工的姓名 工作 部門號 部門名稱

左連接就是返回左邊的匹配行,不考慮右邊的表是否有相應的行

(+)的意思就是dept是個匹配表,左邊是一個基礎表,基礎表優(yōu)先,如果右邊這個表找不到對應的值去匹配,會自動填空

右連接就是返回右邊的匹配行,不考慮左邊的表是否有相應的行,如果沒有會自動填空

左表右表都不做限制,所有的記錄都顯示,不足的地方用null填充

FULL JOIN表示emp和dept做一個全連接

ON表示觸發(fā)條件 。

增刪改查哪個最重要

關于JavaWeb增刪改查的簡單總結(jié) 原創(chuàng)

2020-04-25 13:14:49

走到天涯海角

碼齡4年

關注

增刪改查中最簡單的功能是刪除,通過Id來刪除單表或者多表都是可以的。

增刪改查中最重要的功能是查詢,因為不僅僅是單表查詢、連表查詢需要用到查詢,新增前和修改前也要使用到查詢。

查詢遇到的業(yè)務比如:

1.登錄:通過查詢用戶名和密碼來找出用戶,密碼可以重復,但是用戶名必須唯一,否則沒辦法找出單個用戶。

(重要) 只要查詢的字段是唯一的,都可以通過這個字段來查詢出對應的單個對象或者集合。

什么字段是唯一的呢?

如:用戶名必須唯一,文件名必須唯一,主鍵ID必須唯一等等,一時半會想不起來。

新增前,通過查詢獲得如:下拉框中的數(shù)據(jù)等

在新增時,通過獲取下拉框的值或者輸入框的值,就可以保存新增。

新增也會遇到循環(huán)插入的情況,如新增角色和修改角色,要循環(huán)插入數(shù)據(jù)到角色菜單關系表中。

循環(huán)插入數(shù)據(jù)的做法,我是用過兩種方法,一種方法是使用c3p0,另一種是使用mybatis的foreach標簽

修改前,通過查詢,獲得如:用戶的信息,然后放到修改輸入框,提高用戶的使用體驗。

修改時,通過隱藏區(qū)的Id,和輸入框或者下拉框中的值,來進行保存修改。

文章知識點與官方知識檔案匹配

Java技能樹首頁概覽

92024 人正在系統(tǒng)學習中

打開CSDN APP,看更多技術內(nèi)容

JavaWeb實現(xiàn)簡單對數(shù)據(jù)庫的增刪改查_向晚而生的博客_web實現(xiàn)數(shù)...

數(shù)據(jù)庫:MySQL 連接池:Druid連接池 Github倉庫地址:點我 jar包下載:點我!提取碼:y4ef 參考:Javaweb實現(xiàn)增刪改查操作操作 用JavaWeb部分知識實現(xiàn)對數(shù)據(jù)庫的增刪改查 只展示Student和Teacher的相關代碼 一、效果圖 二、數(shù)據(jù)庫實現(xiàn) 1. ...

繼續(xù)訪問

Web對數(shù)據(jù)庫的增刪改查(servlet+jsp+javaBean增刪改查)

1.開始之前的準備(servlet+jsp+javaBean增刪改查) jsp:頁面的請求和展示 在前臺主要學了jsp進行頁面的請求和展示 java后臺 mysql數(shù)據(jù)庫 學習了java如何進行數(shù)據(jù)庫增刪改查 JDBC重構(gòu)Dao Dao進行sql語句 將數(shù)據(jù)庫的獲取結(jié)果響應到頁面上 ...

繼續(xù)訪問

最新發(fā)布 javaweb極簡登錄注冊增刪改查

javaweb極簡登錄注冊增刪改查

繼續(xù)訪問

簡單的JavaWeb項目,基本的增刪改查和分頁查詢等功能。

簡單的JavaWeb項目,劉意老師整理,擁有登錄,添加,刪除,修改,分頁查詢,刪除選中,復雜分頁查詢功能。

JavaWeb階段案例--簡易版管理圖書系統(tǒng)(增刪改查)

超詳細JavaWeb階段項目 --圖書管理系統(tǒng) -- 連接數(shù)據(jù)庫在網(wǎng)頁上實現(xiàn)圖書的增刪改查

繼續(xù)訪問

筆記--MySQL相關操作

一 登錄數(shù)據(jù)庫 1 用戶無密碼: mysql -uroot -p mysql- 2 用戶有密碼: MySQL -root -p[passwd] mysql- 二 創(chuàng)建數(shù)據(jù)庫: 查詢: mysql show databases; +--------------------+ | Database ...

繼續(xù)訪問

Javaweb--通過網(wǎng)頁實現(xiàn)對數(shù)據(jù)庫的增刪查改

文章目錄Javaweb--通過網(wǎng)頁實現(xiàn)對數(shù)據(jù)庫的增刪查改1、功能需求2、技術選型2、最終效果圖3、數(shù)據(jù)庫準備4、前端開發(fā)5、后端開發(fā) Javaweb–通過網(wǎng)頁實現(xiàn)對數(shù)據(jù)庫的增刪查改 通常在寫一些后臺管理系統(tǒng)的時候,一定會有關于數(shù)據(jù)表格的增刪查改的功能實現(xiàn)。最近也是閑來無事,做了這個小案例,希望能幫到有寫這方面需求的朋友們。 1、功能需求 ??這次以單個的員工數(shù)據(jù)表為例,實現(xiàn)以下功能需求: ??1、能夠正常從數(shù)據(jù)庫中讀取相應數(shù)據(jù)。 ??2、設置分頁,能夠通過點擊頁碼,進行數(shù)據(jù)更新,同時支持輸入頁碼更新數(shù)據(jù)

繼續(xù)訪問

讓我們在網(wǎng)頁中實現(xiàn)數(shù)據(jù)庫的增刪改查~

目錄主要思路首先讓我們鏈接自己的數(shù)據(jù)庫 index.js對數(shù)據(jù)庫設定一些用戶規(guī)則 user.js做一個添加數(shù)據(jù)的靜態(tài)網(wǎng)頁 add.html做一個主頁面 list.html最最最主要的js代碼自我激勵 主要思路 搭建網(wǎng)站服務器,實現(xiàn)客戶端與服務器端的通信 連接數(shù)據(jù)庫, 創(chuàng)建用戶集合, 向集合中插入文檔 當用戶訪問 /list時,將所有用戶信息查詢出來 1.實現(xiàn)路由功能 1.呈現(xiàn)用戶列表頁面 1. 再點擊修改按鈕的時 將用戶ID傳遞到當前頁面 2. 從數(shù)據(jù)庫中查詢當前用戶信息 將用戶信息展示到頁面中 2.從數(shù)據(jù)

繼續(xù)訪問

JavaWeb 增刪改查快速開發(fā)總結(jié)

JavaWeb增刪改查基本都是那一套,其中最繁瑣 變動的便是圍繞SQL語句、Servlet來展開,下面是我對這些左到一個小總結(jié),希望能對您有所幫助首先項目搭建好之后就是最關鍵的SQL語句 Servlet代碼 Servlet方法 然后是前端methods()方法 刪除和批量刪除(這里用element做了個刪除提示)...

繼續(xù)訪問

Java web階段學習總結(jié)(華清遠見)

經(jīng)過web前端的學習之后,我們開啟了Java web后端的學習。學習一樣新的東西首先要了解它的原理,以及所要具備的一些條件。對于Servlet 的開發(fā)步驟一般有:新建一個Java web項目工程 -- 創(chuàng)建servlet類繼承Http Servlet,重寫service方法 -- 在web.xml中做地址映射 -- 打包 -- 部署 -- 啟動容器。這樣就可以在瀏覽器中訪問web程序。了解步驟之后就可以動手敲了。

繼續(xù)訪問

javaWeb反思與總結(jié)

javaWeb的回顧總結(jié)

繼續(xù)訪問

javaweb mysql增刪改查_超詳細的JavaWeb用戶的增刪改查實現(xiàn)總結(jié)

前言本文是基于單體架構(gòu)實現(xiàn)的角色的增刪改查的功能。前臺使用Bootstrap+Ajax+Jsp , 后端使用Spring+SpringMvc+MyBatis進行開發(fā),相信使用過這些技術的小伙伴應該很好的理解以下的內(nèi)容,也希望看了這篇文章小伙伴們有所收獲。準備工作后端技術技術說明官網(wǎng)SpringSpring是一個輕量級控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。SpringMvcMVC框架ht...

繼續(xù)訪問

Javaee增刪改查學習心得

這是我學習完Javaee增刪改查后的一些經(jīng)驗心得,在這里記錄加深一下印象。 1、創(chuàng)建一個web項目,在左側(cè)項目區(qū)域右鍵創(chuàng)建新的web項目,如果沒找到選擇最下方other,搜索dy,點擊創(chuàng)建web項目。 2、導入相應的jar包,oracle數(shù)據(jù)庫導入oracle的jdbc連接jar包,mysql數(shù)據(jù)庫導入mysql的jdbc連接jar包。在lib文件夾下導入。如需j導入s或css的jar包則最好新建...

繼續(xù)訪問

MySQL學習筆記(一) 下載安裝+基本增刪改查 + 事務

mysql筆記,內(nèi)容包含下載安裝,DDL,DML,DQL,DCL語法,約束,多表查詢等

繼續(xù)訪問

簡易的JavaWeb實現(xiàn)增刪查改(附數(shù)據(jù)庫)

一、概述 時隔一年,重回博客,應許多初學的同學要求,實現(xiàn)簡單的增刪查改功能的小程序,具體請詳看下面的截圖~~~ 二、開發(fā)環(huán)境 語言:JavaWeb、JSP、CSS 數(shù)據(jù)庫:MySQL 開發(fā)工具:Eclipse 三、部分截圖展示 四、代碼片段 @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio...

繼續(xù)訪問

PHP網(wǎng)頁設計實現(xiàn)增刪改查,包含報告實訓內(nèi)容

運用PHP技術和MySQL數(shù)據(jù)庫實現(xiàn)對一個數(shù)據(jù)庫表格的操作。 實驗環(huán)境 1.DreamweaverCS6軟件2.phpStudy2018軟件(包含Web服務器Apache、數(shù)據(jù)庫服務器MySQL、PHP語言引擎) 實驗內(nèi)容安排 1.選擇學習或生活環(huán)境中的一個數(shù)據(jù)表格并構(gòu)造符合SQL格式的初始數(shù)據(jù)2.通過瀏覽器對這個數(shù)據(jù)表格進行查找、顯示、修改、增添、刪除5項操作...

繼續(xù)訪問

增刪查改

增刪查改 增刪查改在所有的語言代碼中都是最基礎和重要的,增刪查改在代碼中擔任著不可缺少的一部分,整個代碼項目都是靠著增刪查改?!霸鰟h查改”就如同字面意思一樣,增:新增(insert),刪:刪除(delete),查:查詢(select),改:修改(update),代碼做出來的東西大部分都是靠著“增刪查改”來運行的! 先說的就是增:新增(insert),最簡單的意思就是用原來的數(shù)據(jù)來新增一條或多條新的數(shù)據(jù),這就是新增。首先要有一個寫一個模態(tài)框才能在模...

繼續(xù)訪問

JavaWeb實現(xiàn)簡單對數(shù)據(jù)庫的增刪改查

通過JavaWeb實現(xiàn)簡單的對數(shù)據(jù)庫的增刪改查

繼續(xù)訪問

熱門推薦 java web基本增刪改查操作

這是一個結(jié)合mysql數(shù)據(jù)庫,java后端和jsp頁面的綜合案例: 聲明:學習本文時,需要有一定的基礎,例如jsp,jquery,servlet,Java,jdbc等基礎,如果不懂的希望從基礎學起,加油! 在代碼中有對應的注釋說明,所以我就直接上代碼了 大致流程是: 首先訪問到servlet層,在servlet層里調(diào)用StudentRepository的各個方法,然后展示到jsp頁面中。所以瀏覽器訪問路徑是servlet層里StudentServlet中@WebServlet("/student")的路徑(

繼續(xù)訪問

關于Javaweb課程設計的心得體會.docx

關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx關于Javaweb課程設計的心得體會.docx

記錄一下springboot+mybatis實現(xiàn)增刪改查的基本流程和心得

記錄一下springboot+mybatis實現(xiàn)增刪改查的基本流程和心得 springboot是一個spring家族中舉足輕重的那一個,也是在javaweb實際開發(fā)過程經(jīng)常使用到的一個框架,熟練使用springboot是在實際工作中非常重要的。(在一開始中我認為要先學會如何使用,而不是深究底層原理和代碼,畢竟一般的java開發(fā)工作中只會項目經(jīng)理只會不停給你分配增刪改查的功能任務,當然,隨著開發(fā)經(jīng)驗的不斷提升,只止步于增刪改查會很難得到工作地位提升的機會) 第一步:導入pom.xml依賴 !--spr

繼續(xù)訪問

java的開發(fā)環(huán)境和運行環(huán)境,年薪60W必備

四面阿里 面試崗位是研發(fā)工程師,直接找螞蟻金服的大佬進行內(nèi)推,參與了阿里巴巴中間件部門的提前批面試,一共經(jīng)歷了四次面試,拿到了口頭offer。 一面: 自我介紹 項目中做了什么,難點呢。 Java的線程池說一下,各個參數(shù)的作用,如何進行的。 Redis講一下 分布式系統(tǒng)的全局id如何實現(xiàn)。用zookeeper如何實現(xiàn)的呢,機器號+時間戳即可。 分布式鎖的方案,redis和zookeeper那個好,如果是集群部署,高并發(fā)情況下哪個性能更好。 kafka了解么,了解哪些消息隊列。 想做業(yè)務還是研究。 然后出了

繼續(xù)訪問

web增刪改查數(shù)據(jù)庫實驗總結(jié)

java

寫評論

MySQL的GIS、GEO入門筆記

探索和學習MySQL中GIS相關功能和特性

這里記錄了學習和了解MySQL中GIS特性相關內(nèi)容的過程。

MySQL官方論壇中GIS的舉例

測試數(shù)據(jù)已經(jīng)導入成功,下面開始對GIS相關函數(shù)和GEOHASH進行了解和體驗;

mysql中geometry類型的簡單使用

MySQL空間數(shù)據(jù)類型

經(jīng)緯度信息存儲在geometry格式的字段中,該字段必須非空。

MySQL8.0前按照longitude-latitude的順序存儲位置

MySQL8.0前按照longitude-latitude的順序存儲位置

MySQL8.0前按照longitude-latitude的順序存儲位置

插入數(shù)據(jù)時候可使用如下語句:

MySQL存儲geometry信息的方式采用了25bytes,相比WKB的21bytes,多了4bytes的坐標系表示,組成部分如下:

WTF字符串格式說明

select ST_GeomFromText(WTF格式字符串);

WKT(Well-known text)是一種文本標記語言,用于表示矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉(zhuǎn)換。通過WTF字符串生成geometry的方法:

點: POINT(x y)

線: LINESTRING(x1 y1, x2 y2, x3 y3...)

多邊形: POLYGON((0 0, 10 0, 10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))

多點集: MULTIPOINT(0 0, 20 20, 60 60) 或 MULTIPOINT((0 0),(5 5),(5 0))

多線集: MULTILINESTRING((10 10, 20 20), (15 15, 30 15))

多多邊形集: MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))

例如兩點一線組成的幾何集: GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

A geometry is syntactically well-formed if it satisfies conditions such as those in this (nonexhaustive) list:

Collections are not empty (except GeometryCollection)

更多內(nèi)容參見

ST_PointFromText('POINT(X Y)');

ST_LineStringFromText('LINESTRING(0 0,1 1,2 2)');

ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))');

ST_GeomCollFromText();

更多內(nèi)容參見

參見

Point(x,y)

LineString((x1,y1),(x2,y2)...)

Polygon(LineString(),LineString()....)

參見

ST_AsText()

ST_AsBinary()

ST_AsWKT()

參見

ST_Dimension(geom) :返回geom的維度(-1,0,1,2)

ST_Envelope(geom) :返回geom的最小外接矩形(MBR)

ST_GeometryType(geom) :返回geom的類型

ST_IsEmpty(geom) :該函數(shù)并不能真實的判空,當geom為任何有效的幾何值時返回0,無效的幾何值返回1;

ST_IsSimple(geom) :當geom無任何異常幾何點返回1(如自相交和自切線等),否則返回0

ST_SRID(geom) :返回geom的坐標系ID

參見

ST_X(Point) :獲取Point的X值

ST_Y(Point) :獲取Point的Y值

參見

ST_StartPoint(linestrng) : 線的起點

ST_EndPoint(linestring) :返回線的最后一個點

ST_IsClosed(linestring或multilinestring) :線是否閉合(若為線,則判斷起點與終點是否一致;若為線組,則判斷組內(nèi)每個元素是否符合閉合線)

ST_Length(linestring) :返回線的長度,若入?yún)榫€集,則返回集合內(nèi)所有長度的和

ST_NumPoiints(linestring) :返回點的數(shù)量;

ST_PointN(linestring,N) :返回第N個點(從1開始)

參見

具體不在一一列舉,主要有計算多邊形面積、中心點、最小外接圓,最大內(nèi)接圓等函數(shù),列舉幾個可能會用到的:

ST_Area(Poly|mPoly) :返回雙精度的面積或面積的和

'ST_Centroid(Poly|mPoly)':返回數(shù)學上的中心點

ST_ExteriorRing(Poly) :返回外接圓

參見

ST_Buffer說明

不再列舉,主要有:ST_Buffer(不懂干啥用),ST_ConvexHull(geom)凸包,ST_Dfference(g1,g2)比較差異,ST_Intersecton(g1,g2)交叉點,ST_SymDifference(g1,g2)對稱差分,ST_Union(g1,g2)連接、合并等。

檢查geometry Objects之間的空間關系的方法。

參見

計算兩個Object之間的空間關系的函數(shù),有兩個間距離、相交、不相交,包含、相等、相切、重疊、接觸、在內(nèi)等等空間關系。下面列舉幾個可能會常用的方法:

ST_Contains(g1,g2) :g1是否完全包含g2

ST_Within(g1,g2) :g1是否包含于g2中

ST_Distance(g1,g2) :返回g1和g2之間的距離,已坐標單位計算的

ST_Equals(g1,g2) :返回g1和g2是否相等

參見

MBRContains(g1,g2) :g1的mbr是否包含g2的mbr

MBRWithin(g1,g2) :g1的mbr是否在g2的mbr內(nèi)

MBRCoveredBy(g1,g2) :g1的mbr是否被g2的mbr覆蓋

MBRCovers(g1,g2) :g1的mbr是否覆蓋g2的mbr

MBRDisjoint(g1,g2) :g1的mbr,g2的mbr是否不相交

MBRIntersects(g1,g2) :g1mbr,g2mbr是否相交

MBREqual(g1,g2) :g1的mbr,g2的mbr的外接是否相等

MBREquals(g1,g2) :g1的mbr,g2的mbr的外接是否相等

MBROverlaps(g1,g2) :g1mbr、g2mbr

其他函數(shù)請參看原文

GeoHash介紹

GeoHash Wiki百科

MySQL中自帶函數(shù) st_geohash(longtude,latitude,max_length) 或 st_geohash(point, max_length) 即可生成某一點的geohash值。

返回一個geohash字符串中的latitude或longitude

返回一個geohash解析出的point數(shù)據(jù)

官方文檔

通過geometry生成一個GeoJSON Object, select st_asgeojson(geometry,max_length,options);

通過GeoJSON生成GeoMetry對象。

ST_GeomFromGeoJSON(jsonstring, [options [, srid]])

具體使用方法參見官方文檔

官方文檔

MySQL中提供的方便空間運算的函數(shù)們

select ST_Distance_Spher(geomPoint1,geomPoint2 [, radius]);

此方法用于計算兩點或多個點之間的地球上的距離(是地球球面距離而不是直線距離),返回單位為米,

select ST_IsValid(ST_GeomFromText('LINESTRING(0 0,1 1)'))

判斷入?yún)⑹欠袷欠系乩砦恢妹枋龅母袷?。返?(符合)或者0(不符);

例如:

返回0:

select st_isvalid(st_geomfromtext('linestring(0 0, -0.00 0, 0.0 0)')

返回1:

select st_isvalid(st_geomfromtext('linestring(0 0,1 1)')

select st_astext(st_makeenvelope(pt1, pt2));

返回兩點構(gòu)成的包絡。(此計算是基于笛卡爾坐標系而非球面)

例如:

SELECT ST_AsText ( st_makeenvelope ( st_geomfromtext ( 'point(0 0)' ), st_geomfromtext ( 'point(1 1)' ) ) );

返回結(jié)果:

POLYGON((0 0,1 0,1 1,0 1,0 0))

效果說明

JS抽稀算法

select st_simplify(geometry, max_distance);

用道格拉斯-普克算法(抽稀函數(shù))簡化geometry,并返回與原格式相同格式的結(jié)果。

例如,以下點集擬合為直線,步長0.5:

SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 0.5 )

返回結(jié)果:

LINESTRING(0 0, 0 1, 1 1, 2 3, 3 3)

再如,步長1.0:

SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 1.0 )

返回結(jié)果:

LINESTRING(0 0, 3 3)

SELECT ST_Validate(geometry);

驗證geometry是符合正確的地理位置信息格式。例如 Point(0 0) 是合格的; Linestring(0 0) 是非法的; Linestring(0 0, 1 1) 是合格的

了解了上述MySQL中關于集合對象的功能,下面來實踐一下

由上面geohash長度-精度對應表可知,前6位表示±610米左右的誤差,這里先查詢前六位范圍之后再用上述方法精確篩選一次即可:

可將上述查詢方法封裝為MySQL函數(shù)方便和簡化程序調(diào)用.

該方法是運用了內(nèi)置的幾何關系運算函數(shù) ST_Contains 和 ST_MakeEnvelop 來實現(xiàn)的,0.5對應大概500米左右的范圍,具體如下;

鏈接:

提取碼: jagn

文章標題:mysql怎么學筆記 mysql怎么入門
文章URL:http://muchs.cn/article36/dospjsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、商城網(wǎng)站、網(wǎng)站改版、用戶體驗、做網(wǎng)站、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營