成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql怎么做筆記 mysql操作日志記錄

MySQL筆記1select基礎(chǔ)

查詢語句:select 語句

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

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

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

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

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

SQL語句大小寫不敏感。

select語句是可以計算的

算術(shù)表達(dá)式和運(yùn)算符優(yōu)先級

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

計算出年薪+100塊

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

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進(jìn)行結(jié)合的一個操作

在select句子中適用DISTINCT 關(guān)鍵字消除重復(fù)行

select distinct deptnp from emp;

限制選擇的行:

where關(guān)鍵字

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

#######比較條件

舉幾個例子:

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

這個是包含了5000和10000的

in的表達(dá):

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字符串的,當(dāng)同時滿足兩個條件時候才返回結(jié)果。

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

ASC 升序,默認(rèn)升序

DESC 降序

例子:

將deptno中進(jìn)行升序排列,排列出來后,在將sal進(jìn)行降序排列。

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

函數(shù)工作的過程

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

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

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

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

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

例子:

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

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

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

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

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

例子:

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

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

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

例子:

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

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

where和Having的區(qū)別?

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

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

下面是它的表達(dá)式:

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

select max(avg(sal))

是這樣的一個嵌套

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

下面是用到的表

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

表連接的三種方式:

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

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

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

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

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

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

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

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

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

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

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

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

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

MySQL筆記(簡單查詢)

用來查詢數(shù)據(jù)庫中表的數(shù)據(jù)。關(guān)鍵字: select 、where 等。

注:查詢只是對數(shù)據(jù)的一種顯示,不會對數(shù)據(jù)庫進(jìn)行修改

1.查詢所有數(shù)據(jù) : select * from 表 ; “*” 表示所有列; select id ,name, age, sex, birthday from 表 ; (注:全部字段寫法相對于“*”的寫法查詢效率要高,但寫法比較麻煩)

2.查詢部分列 : select 字段1, 字段2……. from 表 ;

3.別名查詢( 別名作用是方便觀看和處理數(shù)據(jù))查詢時可以給表、列指定別名,關(guān)鍵字: AS

SELECT 字段1 AS 別名1,字段2 AS 別名2……. from 表; 或者 SELECT 字段1 別名1,字段2 別名2……. from 表 ; AS 可以不寫

4.清除重復(fù)值 ( 查詢指定列并且數(shù)據(jù)不出現(xiàn)重復(fù) ): SELECT DISTINCT 字段1,字段2...... FORM 表;

5.查詢結(jié)果進(jìn)行運(yùn)算 ( 注意:參與計算列必須是數(shù)值類型 )

5.1與固定值計算: SELECT 列名1+固定值 FROM 表 ;

5.2列與列計算 : SELECT 列1+ 列2 FROM 表;

6.條件查詢 : SELECT * From 表 WHERE 字段 = 值;

MySQL是怎樣運(yùn)行的讀書筆記

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

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

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

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

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

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

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

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

MySQL的GIS、GEO入門筆記

探索和學(xué)習(xí)MySQL中GIS相關(guān)功能和特性

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

MySQL官方論壇中GIS的舉例

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

mysql中g(shù)eometry類型的簡單使用

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的坐標(biāo)系表示,組成部分如下:

WTF字符串格式說明

select ST_GeomFromText(WTF格式字符串);

WKT(Well-known text)是一種文本標(biāo)記語言,用于表示矢量幾何對象、空間參照系統(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ù)并不能真實的判空,當(dāng)geom為任何有效的幾何值時返回0,無效的幾何值返回1;

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

ST_SRID(geom) :返回geom的坐標(biāo)系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ù)學(xué)上的中心點

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之間的空間關(guān)系的方法。

參見

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

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

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

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

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中提供的方便空間運(yùn)算的函數(shù)們

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

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

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

判斷入?yún)⑹欠袷欠系乩砦恢妹枋龅母袷健7祷?(符合)或者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)成的包絡(luò)。(此計算是基于笛卡爾坐標(biāo)系而非球面)

例如:

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中關(guān)于集合對象的功能,下面來實踐一下

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

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

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

鏈接:

提取碼: jagn

網(wǎng)站名稱:mysql怎么做筆記 mysql操作日志記錄
標(biāo)題來源:http://jinyejixie.com/article44/dodhihe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、做網(wǎng)站小程序開發(fā)、定制開發(fā)Google、微信公眾號

廣告

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

網(wǎng)站托管運(yùn)營
弥渡县| 徐闻县| 南靖县| 虎林市| 长治市| 黎川县| 双城市| 长岭县| 东阳市| 阳谷县| 长岭县| 大悟县| 余干县| 博野县| 元阳县| 二连浩特市| 元阳县| 临清市| 青铜峡市| 东城区| 盐津县| 会昌县| 临夏县| 邹城市| 南宫市| 信丰县| 灌阳县| 扎囊县| 贺兰县| 湾仔区| 兴城市| 太和县| 浙江省| 阳信县| 西乌珠穆沁旗| 历史| 洪洞县| 潜山县| 平顺县| 富民县| 当阳市|