欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么看mysql內(nèi)置函數(shù),mysql常見函數(shù)

mysql函數(shù)查看

查詢數(shù)據(jù)庫中的存儲過程和函數(shù)

創(chuàng)新互聯(lián)公司于2013年成立,公司以網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶數(shù)千家,涉及國內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。

select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存儲過程

select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函數(shù)

show procedure status; //存儲過程

show function status; //函數(shù)

查看存儲過程或函數(shù)的創(chuàng)建代碼

show create procedure proc_name;

show create function func_name;

查看視圖

SELECT * from information_schema.VIEWS //視圖

SELECT * from information_schema.TABLES //表

查看觸發(fā)器

SHOW TRIGGERS [FROM db_name] [LIKE expr]

SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G

MYSQL使用基礎(chǔ)、進(jìn)階分享

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),屬于Oracle旗下產(chǎn)品,是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。

端口是3306。

表很多時(shí),使用linux腳本,需要根據(jù)需要修改一下:

和創(chuàng)建一樣,可以加上 if exists

可兩篇文章:

如:

用于在已有的表中添加、刪除或修改列。

添加 ADD

默認(rèn)是添加到最后,但可以指定位置。 FIRST :添加最前

AFTER 字段名 :添加指定字段之后

例子:

刪除 DROP

修改 MODIFY 主要修改原列的類型或約束條件 同樣可以用 FIRST 和 AFTER 字段名 ,代表的是修改到哪里。

修改字段名 CHANGE

可以把表2的數(shù)據(jù)復(fù)制到表1中,但 不能復(fù)制約束性條件 。

單行

多行,注意 只有一個(gè)VALUES :

不寫 (行1, 行2...) 這一部分的話,默認(rèn)一一對應(yīng)

除了以上方法外,還可以用SET為每一行附上相應(yīng)的值。

假如沒有篩選的話,就給全部都修改了??梢杂? WHERE 篩選。

假如 沒有篩選的話,就給全部刪除了 。相當(dāng)于清空。

清空

先把表刪除,然后再建一個(gè)。與 DELETE FROM 相比, TRUNCATE 的效率更快,因?yàn)? DELETE FROM 是把記錄逐條刪除的。

查詢執(zhí)行的順序

FROM -- WHERE -- SELECT -- GROUP BY -- HAVING -- ORDER BY -- LIMIT

注意

當(dāng)數(shù)據(jù)很大,上百萬的時(shí)候,使用LIMIT ... OFFSET ..的方式進(jìn)行分頁十分浪費(fèi)資源且耗時(shí)長。最好是結(jié)合WHERE使用,如:

REGEXP 使用正則表達(dá)進(jìn)行匹配。 查詢時(shí),需要搭配WHERE或HAVING使用 。

兩個(gè)表之間有交集且要用到兩個(gè)表的數(shù)據(jù)時(shí),可以使用內(nèi)連接查詢。

LEFT JOIN 關(guān)鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結(jié)果為 NULL。

用法:

RIGHT JOIN 關(guān)鍵字從右表(table2)返回所有的行,即使左表(table1)中沒有匹配。如果左表中沒有匹配,則結(jié)果為 NULL。 把LEFT JOIN的表1、表2調(diào)換順序,就是REGHT JOIN 。

FULL OUTER JOIN 關(guān)鍵字只要左表(table1)和右表(table2)其中一個(gè)表中存在匹配,則返回行. 相當(dāng)于結(jié)合了 LEFT JOIN 和 RIGHT JOIN 的結(jié)果。

但 MySQL中不支持 FULL OUTER JOIN 。

即SELECT嵌套。

IN 一個(gè)查詢結(jié)果作為另一個(gè)查詢的條件。 如:

EXISTS 用于判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 True,否則返回 False。True時(shí)執(zhí)行。 如:

索引的本質(zhì)是一種排好序的數(shù)據(jù)結(jié)構(gòu)。利用索引可以提高查詢速度。

常見的索引有:

MySQL通過外鍵約束來保證表與表之間的數(shù)據(jù)的完整性和準(zhǔn)確性。 外鍵的使用條件:

外鍵的好處:可以使得兩張表關(guān)聯(lián),保證數(shù)據(jù)的一致性和實(shí)現(xiàn)一些級聯(lián)操作。

對已有的兩個(gè)表增加外鍵 比如:主表為A,子表為B,外鍵為aid,外鍵約束名字為a_fk_b

為子表添加一個(gè)字段,當(dāng)做外鍵

為子表添加外鍵約束條件

假如刪除記錄報(bào)錯(cuò): [Err] 1451 -Cannot deleteorupdatea parent row: aforeignkeyconstraintfails (...)

這是因?yàn)镸ySQL中設(shè)置了foreign key關(guān)聯(lián),造成無法更新或刪除數(shù)據(jù)??梢酝ㄟ^設(shè)置 FOREIGN_KEY_CHECKS 變量來避免這種情況。 第一步:禁用外鍵約束,我們可以使用: SETFOREIGN_KEY_CHECKS=0; 第二步:刪除數(shù)據(jù) 第三步:啟動外鍵約束,我們可以使用: SETFOREIGN_KEY_CHECKS=1; 查看當(dāng)前FOREIGN_KEY_CHECKS的值,可用如下命令: SELECT @@FOREIGN_KEY_CHECKS;

使用 UNION 來組合兩個(gè)查詢,如果第一個(gè)查詢返回 M 行,第二個(gè)查詢返回 N 行,那么組合查詢的結(jié)果一般為 M+N 行。

每個(gè)查詢必須包含相同的列、表達(dá)式和聚集函數(shù)。

默認(rèn)會去除相同行,如果需要 保留 相同行,使用 UNION ALL 。

只能包含一個(gè) ORDER BY 子句,并且必須位于語句的最后 。

內(nèi)置函數(shù)很多, 見: MySQL 函數(shù)

我們一般使用 START TRANSACTION 或 BEGIN 開啟事務(wù), COMMIT 提交事務(wù)中的命令, SAVEPOINT : 相當(dāng)于設(shè)置一個(gè)還原點(diǎn), ROLLBACK TO : 回滾到某個(gè)還原點(diǎn)下

一般的使用格式如下:

開啟事務(wù)時(shí), 默認(rèn)加鎖

根據(jù)類型可分為共享鎖(SHARED LOCK)和排他鎖(EXCLUSIVE LOCK)或者叫讀鎖(READ LOCK)和寫鎖(WRITE LOCK)。

根據(jù)粒度劃分又分表鎖和行鎖。表鎖由數(shù)據(jù)庫服務(wù)器實(shí)現(xiàn),行鎖由存儲引擎實(shí)現(xiàn)。

除此之外,我們可以顯示加鎖

加鎖時(shí), 如果沒有索引,會鎖表,如果加了索引,就會鎖行

InnoDB默認(rèn)支持行鎖,獲取鎖是分步的,并不是一次性獲取所有的鎖,因此在鎖競爭的時(shí)候就會出現(xiàn)死鎖的情況

解決方法:

即ACID特性:

由于并發(fā)事務(wù)會引發(fā)上面這些問題, 我們可以設(shè)置事務(wù)的隔離級別解決上面的問題.

MySQL的默認(rèn)隔離級別(可重復(fù)讀)

查看當(dāng)前會話隔離級別

方式1

方式2

設(shè)置隔離級別

主從集群的示意圖如下:

主要涉及三個(gè)線程: binlog 線程、 I/O 線程和 SQL 線程。

同步流程:

由于MySQL主從集群只會從主節(jié)點(diǎn)同步到從節(jié)點(diǎn), 不會反過來同步, 所以需要讀寫分離

讀寫分離需要在業(yè)務(wù)層面實(shí)現(xiàn) , 寫數(shù)據(jù)只能在主節(jié)點(diǎn)上完成, 而讀數(shù)據(jù)可以在主節(jié)點(diǎn)或從節(jié)點(diǎn)上完成

索引是幫助MySQL高效獲取數(shù)據(jù)的排好序的數(shù)據(jù)結(jié)構(gòu)

MySQL的索引有

推薦兩個(gè)在線工具:

簡單來說, B樹是在紅黑樹(一個(gè)平衡二叉樹)的基礎(chǔ)上將一個(gè)節(jié)點(diǎn)存放多個(gè)值, 實(shí)現(xiàn)的, 降低了樹的高度, 每個(gè)節(jié)點(diǎn)都存放索引及對應(yīng)數(shù)據(jù)指針, 同一層的節(jié)點(diǎn)是遞增的

而B+樹在B樹的基礎(chǔ)上進(jìn)行優(yōu)化, 非葉子節(jié)點(diǎn)存放 子節(jié)點(diǎn)的開始的索引, 葉子節(jié)點(diǎn)存放索引和數(shù)據(jù)的指針, 且葉子節(jié)點(diǎn)之間有雙向的指針

如下示意圖:

不同的引擎, 主鍵索引存放的數(shù)據(jù)也不一樣, 比如常見的 MyISAM 和 InnoDB

MyISAM 的B+樹葉子節(jié)點(diǎn)存放表數(shù)據(jù)的指針, InnoDB 的B+樹葉子節(jié)點(diǎn)存放處主鍵外的數(shù)據(jù)

其他的:

即多個(gè)列組成一個(gè)索引, 語法:

由于聯(lián)合索引的B+樹的結(jié)構(gòu), 根據(jù)列建立, 所以我們的查找條件也要根據(jù)索引列的順序( where column1=x, column2=y,columnN... ), 否則會全表掃描

如果你對列進(jìn)行了 (+,-,*,/,!) , 那么都將不會走索引。

OR 引起的索引失效

OR 導(dǎo)致索引是在特定情況下的,并不是所有的 OR 都是使索引失效,如果OR連接的是 同 一個(gè)字段,那么索引 不會失效 , 反之索引失效 。

這個(gè)我相信大家都明白,模糊搜索如果你前綴也進(jìn)行模糊搜索,那么不會走索引。

這兩種用法,也將使索引失效。另 IN 會走索引,但是當(dāng)IN的取值范圍較大時(shí)會導(dǎo)致索引失效,走全表掃描, 見: MySQL中使用IN會不會走索引

不走索引。

走索引。

所以設(shè)計(jì)表的時(shí)候, 建議不可為空, 而是將默認(rèn)值設(shè)置為 "" ( NOT NULL DEFAULT "" )

mysql中有哪些內(nèi)置函數(shù),怎么使用?

1.字符串函數(shù)

char_lengt()

concat()

instr()

lcase()

left()

ltrim()

mid()

2.時(shí)間函數(shù)

now()

curdate()

curtime()

datediff()

date_add()

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

abs()

ceiling()

floor()

pow()

rand()

round()

其他函數(shù)

md5()

version()

database()

UUID()

同一使用select 函數(shù)名(參數(shù)列表)

MYSQL中執(zhí)行插入操作的關(guān)鍵字是

一、關(guān)鍵字執(zhí)行順序

1、查詢中用到的關(guān)鍵詞主要包含六個(gè),并且他們的順序依次為 :

select--from--where--group by--having--order by 其中select和from是必須的,其他關(guān)鍵詞是可選的。

這六個(gè)關(guān)鍵詞的執(zhí)行順序,與sql語句的書寫順序并不是一樣的,而是按照下面的順序來執(zhí)行

from--where--group by--having--select--order by。

注意:雖然select在having后執(zhí)行,但是mysql中仍然可以在having中使用select語句定義的別名。

原因分析:mysql在查詢的時(shí)候會產(chǎn)生一個(gè)臨時(shí)表,所有的字段名稱(別名)在臨時(shí)表中已經(jīng)產(chǎn)生,產(chǎn)生了臨時(shí)表之后才會進(jìn)行having操作。也就是說mysql內(nèi)部有一定的解析順序,解析順序select優(yōu)先于having。在這里我個(gè)人認(rèn)為是mysql可能沒有將這一點(diǎn)做規(guī)范。Oracle中having無法使用select語句內(nèi)的別名。

2、insert into 和replace into和merge into

insert into是mysql的基本插入語句。replace into 是mysql中的代替插入語句,可以理解為insert into的升級版。replace into在執(zhí)行的時(shí)候,首先會根據(jù)指定的主鍵或者唯一索引判斷當(dāng)前表中是否存在指定的主鍵或索引,如果主鍵或唯一索引已經(jīng)存在,則先將對應(yīng)的索引的數(shù)據(jù)刪除,然后在索引位置插入replace into中包含的數(shù)據(jù)。如果主鍵和唯一索引沒有存在,則直接在索引位置插入replace into中包含的數(shù)據(jù)。merge into 是oracle數(shù)據(jù)庫中的代替插入語句。實(shí)現(xiàn)方式和replace into類似。執(zhí)行效率:如果指定索引位置沒有數(shù)據(jù),insert into和replace into執(zhí)行效率相差無幾,二者效率相同。如果指定位置索引已經(jīng)存在,insert into語句不能正常執(zhí)行,replace into語句可以正常執(zhí)行。注意:雖然replace into比較好使用,但是也存在一定風(fēng)險(xiǎn):replace每次要重新分配自增id;replace中執(zhí)行delete時(shí), 在有外鍵的情況下會很麻煩;如果delete時(shí)定義的有觸發(fā)器, 則會被執(zhí)行;副作用也會被傳播到replica slave.推薦使用INSERT INTO … ON DUPLICATE KEY UPDATEON DUPLICATE KEY UPDATE是mysql特有的一個(gè)sql關(guān)鍵字,只能在mysql中使用。

在MySQL數(shù)據(jù)庫中,如果在insert語句后面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現(xiàn)有記錄的惟一索引或主鍵中產(chǎn)生重復(fù)值,那么就會發(fā)生舊行的更新;如果插入的行數(shù)據(jù)與現(xiàn)有表中記錄的唯一索引或者主鍵不重復(fù),則執(zhí)行新紀(jì)錄插入操作。

比如有這樣一張表:

create table func(id int primary key,count int,birthday date);

insert into func values(1,1,'1990-09-09');--插入一條數(shù)據(jù)

insert into func values(1,1,'1990-09-09') on duplicate key update count = count+1;--表中有數(shù)據(jù),刪除原表數(shù)據(jù),將新數(shù)據(jù)插入。

提示兩行受到影響,說明先執(zhí)行的刪除操作,然后插入新的數(shù)據(jù)。

觀察到?jīng)]有任何新數(shù)據(jù)插入,count字段被更新。(count字段更新是因?yàn)閯倓偟牟迦胝Z句中書寫了update count = count+1;)

如果不希望任何字段更新,可以寫成如下格式:

insert into func values(1,1,'1990-09-09') on duplicate key update count = values(count);--再次執(zhí)行,沒有新數(shù)據(jù)插入到數(shù)據(jù)庫中。

二、mysql內(nèi)置函數(shù)

內(nèi)置函數(shù)眾多,不需要每一個(gè)都掌握,熟練掌握幾個(gè)在以后使用即可。可以查看mysql官方文檔學(xué)習(xí)內(nèi)置函數(shù)。

三、其它注意事項(xiàng)

1、在已經(jīng)存在的表中添加外鍵。(僅作為了解內(nèi)容)

alter table tb_name add constraint fk_name foreign key (tb_name.id) references tb_stu(id);

例如:alter table emp add constraint forkey foreign key(dept_id) references dept(id);

該語句是在 tb_name表上添加一個(gè)外鍵約束,引用 tb_stu的主鍵,fk_name是約束的名字。

刪除約束:alter table tb_name drop constraint fk_name ;

2、外鍵的使用情景:

在不要求吞吐速度而對數(shù)據(jù)的正確性和安全性要求較高時(shí),推薦使用外鍵。

如果面對高吞吐量,要求優(yōu)先保證讀取效率時(shí),則不推薦使用外鍵。

3、刪除的時(shí)候使用別名:

原句:delete from employee where id = 1;

別名:delete e from employee as e where id =1;

新聞名稱:怎么看mysql內(nèi)置函數(shù),mysql常見函數(shù)
標(biāo)題URL:http://aaarwkj.com/article18/hchjdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化Google、軟件開發(fā)靜態(tài)網(wǎng)站、企業(yè)建站網(wǎng)站收錄

廣告

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

網(wǎng)站優(yōu)化排名
99热这里只有精品免费播放| 精品国产av一区二区三广区| 欧美日韩一区精品视频| 青青草最新网址在线观看视频| 久久免费看少妇高潮免费| 亚洲欧美日韩香蕉在线观看| 亚洲精品尤物福利视频| 欧美日韩国产另类在线视频| 国产999精品在线观看| 亚洲国产区男人的天堂| 亚洲一区二区三区欧美精品| 欧美亚洲另类国产精品| 91精品国产综合久久麻豆| 亚洲精品中文字幕乱码| 日韩欧美一级性生活片| 在线一区二区三区成人观看| 日韩激情小视频在线观看| 国产精品综合日韩精| 国产黄色免费精品网站| 中文一级伦理一区二区| 日本激情人妻一区二区| av中文字幕在线电影| 岛国少妇av之中文字幕| 蜜臀午夜精品视频在线观看| 人妻中文字幕一区二区三| 日本精品女优一区二区三区四区| 国产免费高清av在线| av成人黄色片在线播放| 亚洲一区二区三区三洲| 国产情侣自拍在线观看| 欧美性做爰片免费视频网| 亚洲综合实力最强的国家| 日本欧美一区二区精品| 日韩三级av在线免费观看| 高清欧美大片免费观看| 欧美在线观看日韩精品| 91精品人妻互换一区二区| 欧美日韩精品人妻中文| 国产一区二区av免费| 少妇被啪出水在线视频| 六月丁香花五月婷婷|