一 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í)可以查詢文檔