mysql 數(shù)據(jù)庫(kù)

一 mysql 內(nèi)容介紹

1mysql1.數(shù)據(jù)庫(kù),是當(dāng)前應(yīng)用非常廣泛的一款關(guān)系型數(shù)據(jù)庫(kù)

2 目前mysql在數(shù)據(jù)庫(kù)中的排名是第二,也是第一oracle(甲骨文)公司的產(chǎn)品。

3主要知識(shí)點(diǎn)包括:

a)數(shù)據(jù)庫(kù)與表的操作

b)數(shù)據(jù)的增加、修改、刪除

c)數(shù)據(jù)的查詢(重點(diǎn))

d)與python交互

二 創(chuàng)建庫(kù)和表

1.主要知識(shí)點(diǎn)包括:能夠與mysql建立連接,創(chuàng)建數(shù)據(jù)庫(kù)、表,分別從圖形界面與腳本界面兩個(gè)方面講解

2.相關(guān)的知識(shí)點(diǎn)包括:E-R關(guān)系模型,數(shù)據(jù)庫(kù)的3范式,mysql中數(shù)據(jù)字段的類型,字段約束

3.數(shù)據(jù)庫(kù)的操作,包括創(chuàng)建、刪除

4.表的操作,包括創(chuàng)建、修改、刪除

5.數(shù)據(jù)的操作,包括增加、修改、刪除、查詢,簡(jiǎn)稱crud

6.學(xué)生表結(jié)構(gòu):

a)id

b)名稱

c)性別

d)地址

e)生日

8.科目表結(jié)構(gòu):

a)id

名稱

1?數(shù)據(jù)庫(kù)簡(jiǎn)介

人類在進(jìn)化的過(guò)程中,創(chuàng)造了數(shù)字、文字、符號(hào)等來(lái)進(jìn)行數(shù)據(jù)的記錄,但是承受著認(rèn)知能力和創(chuàng)造能力的提升,數(shù)據(jù)量越來(lái)越大,對(duì)于數(shù)據(jù)的記錄和準(zhǔn)確查找,成為了一個(gè)重大難題。

計(jì)算機(jī)誕生后,數(shù)據(jù)開(kāi)始在計(jì)算機(jī)中存儲(chǔ)并計(jì)算,并設(shè)計(jì)出了數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)解決的問(wèn)題:持久化存儲(chǔ),優(yōu)化讀寫,保證數(shù)據(jù)的有效性

當(dāng)前使用的數(shù)據(jù)庫(kù),主要分為兩類

1.文檔型,如sqlite,就是一個(gè)文件,通過(guò)對(duì)文件的復(fù)制完成數(shù)據(jù)庫(kù)的復(fù)制

2.服務(wù)型,如mysql、oracle、postgre,數(shù)據(jù)存儲(chǔ)在一個(gè)物理文件中,但是需要使用終端以tcp/ip協(xié)議連接,進(jìn)行數(shù)據(jù)庫(kù)的讀寫操作

E-R模型

當(dāng)前物理的數(shù)據(jù)庫(kù)都是按照E-R模型進(jìn)行設(shè)計(jì)的

E(entry ) 實(shí)體

R( relationship) ?關(guān)系

一個(gè)實(shí)體轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的一個(gè)表

關(guān)系描述兩個(gè)實(shí)體之間的對(duì)應(yīng)規(guī)則,包括

1一對(duì)一

現(xiàn)代的婚姻:一個(gè)男人娶一個(gè)女人,且一個(gè)女人只能價(jià)一個(gè)男人

2一對(duì)多

古代的婚姻,一個(gè)男人娶多個(gè)老婆,一個(gè)女人只能嫁一個(gè)男人

3多對(duì)多

不同教室可以被多個(gè)同學(xué)使用,同學(xué)可以使用多個(gè)教室

關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫(kù)表中的一個(gè)列在關(guān)系型數(shù)據(jù)庫(kù)中一行就是一個(gè)對(duì)象

三范式

經(jīng)過(guò)研究和對(duì)使用中問(wèn)題的總結(jié),對(duì)于設(shè)計(jì)數(shù)據(jù)庫(kù)提出了一些規(guī)范,這些規(guī)范被稱為范式

1.第一范式(1NF):列不可拆分

2.第二范式(2NF):唯一標(biāo)識(shí)

3.第三范式(3NF):引用主鍵

說(shuō)明:后一個(gè)范式,都是在前一個(gè)范式的基礎(chǔ)上建立的

2 數(shù)據(jù)完整性

一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)完整的業(yè)務(wù)單元,可以包含多張表,數(shù)據(jù)被存儲(chǔ)在表中

在表中為了更加準(zhǔn)確的存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的正確有效,可以在創(chuàng)建表的時(shí)候,為表添加一些強(qiáng)制性的驗(yàn)證,包括數(shù)據(jù)字段的類型、約束

字段類型

在mysql中包含的數(shù)據(jù)類型很多,這里主要列出來(lái)常用的幾種

1.數(shù)字:int,decimal

decimal(5,2)整數(shù)3位,小數(shù)2位

2.字符串:char,varchar,text

char:不根據(jù)內(nèi)容改變字符串長(zhǎng)度

varchar:根據(jù)內(nèi)容改變字符串長(zhǎng)度

字符=字節(jié)+編碼

char因?yàn)槭嵌ㄩL(zhǎng),所以查詢效率高,浪費(fèi)空間

varchar因?yàn)槭沁呴L(zhǎng),所以節(jié)省空間,查詢效率相對(duì)低

3.日期:datetime

date:年月日

time:時(shí)分秒

datetime:年月日時(shí)分秒

4.布爾:bit

0或1

約束

1.主鍵primary key

2.非空not null

3.惟一unique

4.默認(rèn)default

5.外鍵foreign key

三?使用圖形窗口連接

·windows下的navicat點(diǎn)擊“連接”彈出窗口,按照提示填寫連接信息,如下圖

·連接成功后,會(huì)在連接名稱下面顯示出當(dāng)前的數(shù)據(jù)庫(kù)

·雙擊選中數(shù)據(jù)庫(kù),就可以編輯此數(shù)據(jù)庫(kù)

·下次再進(jìn)入此軟件時(shí),通過(guò)雙擊完成連接、編輯操作

數(shù)據(jù)庫(kù)操作

·在連接的名稱上右擊,選擇“新建數(shù)據(jù)庫(kù)”,彈出窗口,并按提示填寫

在數(shù)據(jù)庫(kù)上右擊,選擇“刪除數(shù)據(jù)庫(kù)”可以完成刪除操作

表操作

·當(dāng)數(shù)據(jù)庫(kù)顯示為高亮?xí)r,表示當(dāng)前操作此數(shù)據(jù)庫(kù),可以在數(shù)據(jù)中創(chuàng)建表

·一個(gè)實(shí)體對(duì)應(yīng)一張表,用于存儲(chǔ)特定結(jié)構(gòu)的數(shù)據(jù)

·點(diǎn)擊“新建表”,彈出窗口,按提示填寫信息

·主鍵的名稱一般為id,設(shè)置為int型,無(wú)符號(hào)數(shù),自動(dòng)增長(zhǎng),非空

·自動(dòng)增長(zhǎng)表示由mysql系統(tǒng)負(fù)責(zé)維護(hù)這個(gè)字段的值,不需要手動(dòng)維護(hù),所以不用關(guān)心這個(gè)字段的具體值

·字符串varchar類型需要設(shè)置長(zhǎng)度,即最多包含多少個(gè)字符

·點(diǎn)擊“添加欄位”,可以添加一個(gè)新的字段

·點(diǎn)擊“保存”,為表定義名稱

數(shù)據(jù)操作

·表創(chuàng)建成功后,可以在右側(cè)看到,雙擊表打開(kāi)新窗口,如下圖

·在此窗口中可以增加、修改、刪除數(shù)據(jù)

邏輯刪除

·對(duì)于重要數(shù)據(jù),并不希望物理刪除,一旦刪除,數(shù)據(jù)無(wú)法找回

·一般對(duì)于重要數(shù)據(jù),會(huì)設(shè)置一個(gè)isDelete的列,類型為bit,表示邏輯刪除

·大于大量增長(zhǎng)的非重要數(shù)據(jù),可以進(jìn)行物理刪除

·數(shù)據(jù)的重要性,要根據(jù)實(shí)際開(kāi)發(fā)決定

四 腳本命令操作

sql語(yǔ)句分為兩大類:

1、dml對(duì)表的數(shù)據(jù)內(nèi)容進(jìn)行增刪改查

2、ddl除了dml之外

·命令操作方式,在工作中使用的更多一些,所以要達(dá)到熟練的程度

·打開(kāi)終端,運(yùn)行命令

>mysql -uroot -p

·退出登錄

quit或exit

·登錄成功后,輸入如下命令查看效果

·注意:在語(yǔ)句結(jié)尾要使用分號(hào);

遠(yuǎn)程連接

·一般在公司開(kāi)發(fā)中,可能會(huì)將數(shù)據(jù)庫(kù)統(tǒng)一搭建在一臺(tái)服務(wù)器上,所有開(kāi)發(fā)人員共用一個(gè)數(shù)據(jù)庫(kù),而不是在自己的電腦中配置一個(gè)數(shù)據(jù)庫(kù)

·運(yùn)行命令

mysql -hip地址-uroot -p

·-h后面寫要連接的主機(jī)ip地址

·-u后面寫連接的用戶名

·-p回車后寫密碼

數(shù)據(jù)庫(kù)操作

·創(chuàng)建數(shù)據(jù)庫(kù)

create database數(shù)據(jù)庫(kù)名charset=utf8;

·刪除數(shù)據(jù)庫(kù)

drop database數(shù)據(jù)庫(kù)名;

·切換數(shù)據(jù)庫(kù)

use數(shù)據(jù)庫(kù)名;

·查看當(dāng)前選擇的數(shù)據(jù)庫(kù)

select database();

表操作

·查看當(dāng)前數(shù)據(jù)庫(kù)中所有表

show tables;

·創(chuàng)建表

auto_increment表示自動(dòng)增長(zhǎng),只能是數(shù)字類型

主鍵本身是用來(lái)唯一標(biāo)識(shí)這一行,沒(méi)有業(yè)務(wù)邏輯意義,所以是什么值不重要,只要唯一就行,所以如果是主鍵不需要修改

create table表名(列及類型);

如:

create table students(

id int auto_increment primary key,

sname varchar(10) not null

);

·修改表

alter table表名add|modify|drop列名類型;

如:

alter table students add birthday datetime;

·刪除表

drop table表名;

·查看表結(jié)構(gòu)

desc表名;

·更改表名稱

rename table原表名to新表名;

·查看表的創(chuàng)建語(yǔ)句

show create table '表名';

數(shù)據(jù)操作

·查詢

select * from表名

·增加

全列插入:insert into表名values(...)

缺省插入:insert into表名(列1,...) values(值1,...)

同時(shí)插入多條數(shù)據(jù):insert into表名values(...),(...)...;

或insert into表名(列1,...) values(值1,...),(值1,...)...;

·主鍵列是自動(dòng)增長(zhǎng),但是在全列插入時(shí)需要占位,通常使用0,插入成功后以實(shí)際數(shù)據(jù)為準(zhǔn)

·修改

update表名set列1=值1,... where條件

·刪除

delete from表名where條件

·邏輯刪除,本質(zhì)就是修改操作update

alter table students add isdelete bit default 0;

如果需要?jiǎng)h除則

update students isdelete=1 where ...;

五 查詢

內(nèi)容簡(jiǎn)介

查詢的基本方法

select * from 表名;

·from關(guān)鍵字后面寫表名,表示數(shù)據(jù)來(lái)源于是這張表

·select后面寫表中的列名,如果是*表示在結(jié)果中顯示表中所有列

·在select后面的列名部分,可以使用as為列起別名,這個(gè)別名出現(xiàn)在結(jié)果集中

·如果要查詢多個(gè)列,之間使用逗號(hào)分隔

消除重復(fù)行

1 條件

使用where子句對(duì)表中的數(shù)據(jù)篩選,結(jié)果為true的行會(huì)出現(xiàn)在結(jié)果集中

語(yǔ)法如下

select * from 表名 where 條件;

1比較運(yùn)算符

·等于=

·大于>

·大于等于>=

·小于<

·小于等于<=

·不等于!=或<>

·查詢編號(hào)大于3的學(xué)生

例子:


2 邏輯運(yùn)算符

and,or,not

例1:選擇id小于10且isdelete=1的項(xiàng)

例2:選擇id<10或isdelete=0

3 模糊查找

·like

·%表示任意多個(gè)任意字符

·_表示一個(gè)任意字符

select * t_student2 where name like 'l%';

例:

4 范圍查詢

·in表示在一個(gè)非連續(xù)的范圍內(nèi)

例:查詢編號(hào)是1或3或8的學(xué)生

·between ... and ...表示在一個(gè)連續(xù)的范圍內(nèi)

·例:查詢學(xué)生是3至8的學(xué)生

5 空判斷

·注意:null與''是不同的

·判空is null·

查詢沒(méi)有填寫地址的學(xué)生

6 優(yōu)先級(jí)

·小括號(hào),not,比較運(yùn)算符,邏輯運(yùn)算符

and比or先運(yùn)算,如果同時(shí)出現(xiàn)并希望先算or,需要結(jié)合()使用

7 聚合

·為了快速得到統(tǒng)計(jì)數(shù)據(jù),提供了5個(gè)聚合函數(shù)

·1)count(*)表示計(jì)算總行數(shù),括號(hào)中寫星與列名,結(jié)果是相同的

如果所在列有null那么count(列名)比總行數(shù)小

2)max(列)表示求此列的最大值

3)·min(列)表示求此列的最小值

4)·sum(列)表示求此列的和

5)·avg(列)表示求此列的平均值

8 分組

select

from

where

group by

having

limit

·按照字段分組,表示此字段相同的數(shù)據(jù)會(huì)被放到一個(gè)組中

·分組后,只能查詢出相同的數(shù)據(jù)列,對(duì)于有差異的數(shù)據(jù)列無(wú)法出現(xiàn)在結(jié)果集中

·可以對(duì)分組后的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),做聚合運(yùn)算

1)·語(yǔ)法:

select列1,列2,聚合... from表名group by列1,列2,列3...


2)分組后的數(shù)據(jù)篩選

·語(yǔ)法:

select列1,列2,聚合... from表名

group by列1,列2,列3...

having列1,...聚合...

·having后面的條件運(yùn)算符與where的相同

查詢男生總?cè)藬?shù)

對(duì)比where與having

·where是對(duì)from后面指定的表進(jìn)行數(shù)據(jù)篩選,屬于對(duì)原始數(shù)據(jù)的篩選

·having是對(duì)group by的結(jié)果進(jìn)行篩選

9 排序

·為了方便查看數(shù)據(jù),可以對(duì)數(shù)據(jù)進(jìn)行排序

·語(yǔ)法:

select * from表名

order by列1 asc|desc,列2 asc|desc,...

選擇為被刪除的男生,按倒敘排列

10 分頁(yè)

·當(dāng)數(shù)據(jù)量過(guò)大時(shí),在一頁(yè)中查看數(shù)據(jù)是一件非常麻煩的事情

·語(yǔ)法

select * from表名

limit?start,count

·從start開(kāi)始,獲取count條數(shù)據(jù)

·start索引從0開(kāi)始

示例:分頁(yè)

·已知:每頁(yè)顯示m條數(shù)據(jù),當(dāng)前顯示第n頁(yè)

·求總頁(yè)數(shù):此段邏輯后面會(huì)在python中實(shí)現(xiàn)

o查詢總條數(shù)p1

o使用p1除以m得到p2

o如果整除則p2為總數(shù)頁(yè)

o如果不整除則p2+1為總頁(yè)數(shù)

·求第n頁(yè)的數(shù)據(jù)

select * from students

where isdelete=0

limit (n-1)*m,m

例如:如果要求第5頁(yè)的數(shù)據(jù),每頁(yè)數(shù)據(jù)為10

則 limit 4*10,10

六 高級(jí)

1 關(guān)系

創(chuàng)建成績(jī)表scores,結(jié)構(gòu)如下

id

學(xué)生

科目

成績(jī)

思考:學(xué)生列應(yīng)該存什么信息呢?

答:學(xué)生列的數(shù)據(jù)不是在這里新建的,而應(yīng)該從學(xué)生表引用過(guò)來(lái),關(guān)系也是一條數(shù)據(jù);根據(jù)范式要求應(yīng)該存儲(chǔ)學(xué)生的編號(hào),而不是學(xué)生的姓名等其它信息,同理,科目表也是關(guān)系列,引用科目表中的數(shù)據(jù)。

外鍵

·思考:怎么保證關(guān)系列數(shù)據(jù)的有效性呢?任何整數(shù)都可以嗎?

·答:必須是學(xué)生表中id列存在的數(shù)據(jù),可以通過(guò)外鍵約束進(jìn)行數(shù)據(jù)的有效性驗(yàn)證

·為stuid添加外鍵約束

alter table scores add constraint stu_sco foreign key(stuid) references students(id);


·此時(shí)插入或者修改數(shù)據(jù)時(shí),如果stuid的值在students表中不存在則會(huì)報(bào)錯(cuò)

·在創(chuàng)建表時(shí)可以直接創(chuàng)建約束

create table scores(

id int primary key auto_increment,

stuid int,

subid int,

score decimal(5,2),

foreign key(stuid) references students(id),

foreign key(subid) references subjects(id)

);

外鍵的級(jí)聯(lián)操作

·在刪除students表的數(shù)據(jù)時(shí),如果這個(gè)id值在scores中已經(jīng)存在,則會(huì)拋異常

·推薦使用邏輯刪除,還可以解決這個(gè)問(wèn)題

·可以創(chuàng)建表時(shí)指定級(jí)聯(lián)操作,也可以在創(chuàng)建表后再修改外鍵的級(jí)聯(lián)操作

·語(yǔ)法

alter table scores add constraint stu_sco foreign key(stuid) references students(id) on delete cascade;

·級(jí)聯(lián)操作的類型包括:

?restrict(限制):默認(rèn)值,拋異常

?cascade(級(jí)聯(lián)):如果主表的記錄刪掉,則從表中相關(guān)聯(lián)的記錄都將被刪除

?set null:將外鍵設(shè)置為空

?no action:什么都不做

2 連接查詢

·問(wèn):查詢每個(gè)學(xué)生每個(gè)科目的分?jǐn)?shù)

·分析:學(xué)生姓名來(lái)源于students表,科目名稱來(lái)源于subjects,分?jǐn)?shù)來(lái)源于scores表,怎么將3個(gè)表放到一起查詢,并將結(jié)果顯示在同一個(gè)結(jié)果集中呢?

·答:當(dāng)查詢結(jié)果來(lái)源于多張表時(shí),需要使用連接查詢

·關(guān)鍵:找到表間的關(guān)系,當(dāng)前的關(guān)系是

?students表的id---scores表的stuid

?subjects表的id---scores表的subid

·則上面問(wèn)題的答案是:

select students.sname,subjects.stitle,scores.score

from scores

inner join students on scores.stuid=students.id

inner join subjects on scores.subid=subjects.id;

·結(jié)論:當(dāng)需要對(duì)有關(guān)系的多張表進(jìn)行查詢時(shí),需要使用連接join

·連接查詢分類如下:

?表A inner join表B:表A與表B匹配的行會(huì)出現(xiàn)在結(jié)果中

?表A left join表B:表A與表B匹配的行會(huì)出現(xiàn)在結(jié)果中,外加表A中獨(dú)有的數(shù)據(jù),未對(duì)應(yīng)的數(shù)據(jù)使用null填充

?表A right join表B:表A與表B匹配的行會(huì)出現(xiàn)在結(jié)果中,外加表B中獨(dú)有的數(shù)據(jù),未對(duì)應(yīng)的數(shù)據(jù)使用null填充

·在查詢或條件中推薦使用“表名.列名”的語(yǔ)法

·如果多個(gè)表中列名不重復(fù)可以省略“表名.”部分

·如果表的名稱太長(zhǎng),可以在表名后面使用' as簡(jiǎn)寫名'或'簡(jiǎn)寫名',為表起個(gè)臨時(shí)的簡(jiǎn)寫名稱

3 自關(guān)聯(lián)

·設(shè)計(jì)省信息的表結(jié)構(gòu)provinces

?id

?ptitle

·設(shè)計(jì)市信息的表結(jié)構(gòu)citys

?id

?ctitle

?proid

·citys表的proid表示城市所屬的省,對(duì)應(yīng)著provinces表的id值

·問(wèn)題:能不能將兩個(gè)表合成一張表呢?

·思考:觀察兩張表發(fā)現(xiàn),citys表比provinces表多一個(gè)列proid,其它列的類型都是一樣的

·意義:存儲(chǔ)的都是地區(qū)信息,而且每種信息的數(shù)據(jù)量有限,沒(méi)必要增加一個(gè)新表,或者將來(lái)還要存儲(chǔ)區(qū)、鄉(xiāng)鎮(zhèn)信息,都增加新表的開(kāi)銷太大

·答案:定義表areas,結(jié)構(gòu)如下

?id

?atitle

?pid

·因?yàn)槭](méi)有所屬的省份,所以可以填寫為null

·城市所屬的省份pid,填寫省所對(duì)應(yīng)的編號(hào)id

·這就是自關(guān)聯(lián),表中的某一列,關(guān)聯(lián)了這個(gè)表中的另外一列,但是它們的業(yè)務(wù)邏輯含義是不一樣的,城市信息的pid引用的是省信息的id

·在這個(gè)表中,結(jié)構(gòu)不變,可以添加區(qū)縣、鄉(xiāng)鎮(zhèn)街道、村社區(qū)等信息

·創(chuàng)建areas表的語(yǔ)句如下:

create table areas(

id int primary key,

atitle varchar(20),

pid int,

foreign key(pid) references areas(id)

);

·從sql文件中導(dǎo)入數(shù)據(jù)

source areas.sql;

·查詢一共有多少個(gè)省

·查詢省的名稱為“山西省”的所有城市

select city.* from areas as city

inner join areas as province on city.pid=province.id

where province.atitle='山西省';

·查詢市的名稱為“廣州市”的所有區(qū)縣

select dis.*,dis2.* from areas as dis

inner join areas as city on city.id=dis.pid

left join areas as dis2 on dis.id=dis2.pid

where city.atitle='廣州市';

4 子查詢

·查詢支持嵌套使用

·查詢各學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)的成績(jī)

select sname,

(select sco.score from scores sco inner join subjects sub on sco.subid=sub.id where sub.stitle='語(yǔ)文' and stuid=stu.id) as語(yǔ)文,

(select sco.score from ?scores sco inner join subjects sub on sco.subid=sub.id where sub.stitle='數(shù)學(xué)' and stuid=stu.id) as數(shù)學(xué),

(select sco.score from ?scores sco inner join subjects sub on sco.subid=sub.id where sub.stitle='英語(yǔ)' and stuid=stu.id) as英語(yǔ)

from students stu;

2 內(nèi)置函數(shù)

1 字符串函數(shù)

·查看字符的ascii碼值ascii(str),str是空串時(shí)返回0

查看ascii碼值對(duì)應(yīng)的字符char(數(shù)字)

·拼接字符串concat(str1,str2...)

select concat(12,34,'ab');

·包含字符個(gè)數(shù)length(str)

select length('abc');

·截取字符串

?left(str,len)返回字符串str的左端len個(gè)字符

?right(str,len)返回字符串str的右端len個(gè)字符

?substring(str,pos,len)返回字符串str的位置pos起len個(gè)字符

select substring('abc123',2,3);


·去除空格

?ltrim(str)返回刪除了左空格的字符串str

?rtrim(str)返回刪除了右空格的字符串str

?trim([方向remstr from str)返回從某側(cè)刪除remstr后的字符串str,方向詞包括both、leading、trailing,表示兩側(cè)、左、右

select trim(' ?bar ??');

select trim(leading 'x' FROM 'xxxbarxxx');

select trim(both 'x' FROM 'xxxbarxxx');

select trim(trailing 'x' FROM 'xxxbarxxx');

·返回由n個(gè)空格字符組成的一個(gè)字符串space(n)

select space(10);

·替換字符串replace(str,from_str,to_str)

select replace('abc123','123','def');

·大小寫轉(zhuǎn)換,函數(shù)如下

?lower(str)

?upper(str)

select lower('aBcD');

select upper('aBcD');

2數(shù)學(xué)函數(shù)

·求絕對(duì)值abs(n)

select abs(-32);

·求m除以n的余數(shù)mod(m,n),同運(yùn)算符%

select mod(10,3);

select 10%3;

·地板floor(n),表示不大于n的最大整數(shù)

select floor(2.3);

·天花板ceiling(n),表示不小于n的最大整數(shù)

select ceiling(2.3);

·求四舍五入值round(n,d),n表示原數(shù),d表示小數(shù)位置,默認(rèn)為0

select round(1.6);

·求x的y次冪pow(x,y)

select pow(2,3);

·獲取圓周率PI()

select PI();

·隨機(jī)數(shù)rand(),值為0-1.0的浮點(diǎn)數(shù)

select rand();

·還有其它很多三角函數(shù),使用時(shí)可以查詢文檔

3

4

5


3 視圖

4 事務(wù)

5 總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容