怎么看mysql內置函數,查看mysql函數
mysql中有哪些內置函數,怎么使用?
1.字符串函數
10年積累的成都做網站、成都網站制作經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有峰峰礦免費網站建設讓你可以放心的選擇與我們合作。
char_lengt()
concat()
instr()
lcase()
left()
ltrim()
mid()
2.時間函數
now()
curdate()
curtime()
datediff()
date_add()
數學函數
abs()
ceiling()
floor()
pow()
rand()
round()
其他函數
md5()
version()
database()
UUID()
同一使用select 函數名(參數列表)
mysql函數查看
查詢數據庫中的存儲過程和函數
select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存儲過程
select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函數
show procedure status; //存儲過程
show function status; //函數
查看存儲過程或函數的創建代碼
show create procedure proc_name;
show create function func_name;
查看視圖
SELECT * from information_schema.VIEWS //視圖
SELECT * from information_schema.TABLES //表
查看觸發器
SHOW TRIGGERS [FROM db_name] [LIKE expr]
SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G
MYSQL中執行插入操作的關鍵字是
一、關鍵字執行順序
1、查詢中用到的關鍵詞主要包含六個,并且他們的順序依次為 :
select--from--where--group by--having--order by 其中select和from是必須的,其他關鍵詞是可選的。
這六個關鍵詞的執行順序,與sql語句的書寫順序并不是一樣的,而是按照下面的順序來執行
from--where--group by--having--select--order by。
注意:雖然select在having后執行,但是mysql中仍然可以在having中使用select語句定義的別名。
原因分析:mysql在查詢的時候會產生一個臨時表,所有的字段名稱(別名)在臨時表中已經產生,產生了臨時表之后才會進行having操作。也就是說mysql內部有一定的解析順序,解析順序select優先于having。在這里我個人認為是mysql可能沒有將這一點做規范。Oracle中having無法使用select語句內的別名。
2、insert into 和replace into和merge into
insert into是mysql的基本插入語句。replace into 是mysql中的代替插入語句,可以理解為insert into的升級版。replace into在執行的時候,首先會根據指定的主鍵或者唯一索引判斷當前表中是否存在指定的主鍵或索引,如果主鍵或唯一索引已經存在,則先將對應的索引的數據刪除,然后在索引位置插入replace into中包含的數據。如果主鍵和唯一索引沒有存在,則直接在索引位置插入replace into中包含的數據。merge into 是oracle數據庫中的代替插入語句。實現方式和replace into類似。執行效率:如果指定索引位置沒有數據,insert into和replace into執行效率相差無幾,二者效率相同。如果指定位置索引已經存在,insert into語句不能正常執行,replace into語句可以正常執行。注意:雖然replace into比較好使用,但是也存在一定風險:replace每次要重新分配自增id;replace中執行delete時, 在有外鍵的情況下會很麻煩;如果delete時定義的有觸發器, 則會被執行;副作用也會被傳播到replica slave.推薦使用INSERT INTO … ON DUPLICATE KEY UPDATEON DUPLICATE KEY UPDATE是mysql特有的一個sql關鍵字,只能在mysql中使用。
在MySQL數據庫中,如果在insert語句后面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重復值,那么就會發生舊行的更新;如果插入的行數據與現有表中記錄的唯一索引或者主鍵不重復,則執行新紀錄插入操作。
比如有這樣一張表:
create table func(id int primary key,count int,birthday date);
insert into func values(1,1,'1990-09-09');--插入一條數據
insert into func values(1,1,'1990-09-09') on duplicate key update count = count+1;--表中有數據,刪除原表數據,將新數據插入。
提示兩行受到影響,說明先執行的刪除操作,然后插入新的數據。
觀察到沒有任何新數據插入,count字段被更新。(count字段更新是因為剛剛的插入語句中書寫了update count = count+1;)
如果不希望任何字段更新,可以寫成如下格式:
insert into func values(1,1,'1990-09-09') on duplicate key update count = values(count);--再次執行,沒有新數據插入到數據庫中。
二、mysql內置函數
內置函數眾多,不需要每一個都掌握,熟練掌握幾個在以后使用即可。可以查看mysql官方文檔學習內置函數。
三、其它注意事項
1、在已經存在的表中添加外鍵。(僅作為了解內容)
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表上添加一個外鍵約束,引用 tb_stu的主鍵,fk_name是約束的名字。
刪除約束:alter table tb_name drop constraint fk_name ;
2、外鍵的使用情景:
在不要求吞吐速度而對數據的正確性和安全性要求較高時,推薦使用外鍵。
如果面對高吞吐量,要求優先保證讀取效率時,則不推薦使用外鍵。
3、刪除的時候使用別名:
原句:delete from employee where id = 1;
別名:delete e from employee as e where id =1;
網頁題目:怎么看mysql內置函數,查看mysql函數
本文網址:http://www.xueling.net.cn/article/hooeji.html