mysql儲存過程相關備忘

2021-09-01 17:25:00 字數 3614 閱讀 3437

1.匯出儲存過程,對儲存過程進行備份

mysqldump -h 127.0.0.1 -u root -p -n -t -d -r --triggers=false my_db_name >c:\bakproc.sql

2.獲取當前日期的年月日

date_format(now(), '%y')

date_format(now(), '%m')

date_format(now(), '%d')

3.命令列遠端連線資料庫

mysql -h server_ip -u username -p;

回車輸入使用者密碼即可。

4.常用方法

字串連線concat

結果集逗號分隔group_concat(查詢列名)

locate(concat(',', substring, ','), string)

5.替換

select replace(original_string,substring_for_find,'') from demo_table_name

select locate(substring_for_find,original_string) indexof,

concat(left(original_string,locate(substring_for_find,original_string)-1),

substring(original_string,(locate(substring_for_find,original_string)+length(substring_for_find)),length(original_string)-length(substring_for_find)))

from demo_table_name

6.排序聯合

(select colname1,colname2 from tablename1 order by order_colname limit 100)

union

(select colname1,colname2 from tablename2 order by order_colname limit 100)

union

(select colname1,colname2 from tablename3 order by order_colname limit 100)

7.按日期分組統計

select date_format(from_unixtime(dateline) ,'%y-%m-%d') count_date,date_format(from_unixtime(dateline),'%h') count_hour,

max(usercount) max_usercount,min(usercount) min_usercount

from table_name

group by date_format(from_unixtime(dateline),'%y-%m-%d'),date_format(from_unixtime(dateline),'%h')

8.獲取副檔名

select substring('sssss.dd.ddd.doc',locate('.','sssss.dd.ddd.doc',length('sssss.dd.ddd.doc')-4)+1)

9.轉為整數

select cast(sum(ifnull(current_star,0))-sum(ifnull(used_star,0))as signed)

10.判斷日期在一天內

select * from tablename where datediff(now(),from_unixtime(date_colname))=0

11.備份庫

mysqldump -h 127.0.0.1 -u root -p my_db_name >c:\bakdatabase.sql

12.恢復

mysql -h 127.0.0.1 -u root -p my_db_name < c:\bakdatabase.sql

13.轉float欄位為int

cast(columenname as signed int)

14.顯示資料庫變數

show variables like "%timeout%";

15.查詢某個表的當前自增量

select `auto_increment` from information_schema.tables

where table_schema = 'dbname' and table_name = 'table';

16.修改表的自增量

alter table tablename auto_increment=10000;

17.獲取當前日期所屬星期的周一的日期

select date_add(date(now()), interval -weekday(now()) day);

18.獲取當前日期所屬星期的週日的日期

select date_add(date(now()), interval (6-weekday(now())) day);

19.查詢指定字串擷取與表中其他列值比較

select id,description,pa,pd,pw,pt from table_name where

(pa>0 and ifnull(substring(description,locate('%',description)-2,2),0)!=pa/100)

or (pd>0 and ifnull(substring(description,locate('%',description)-2,2),0)!=pd/100)

or (pw>0 and ifnull(substring(description,locate('%',description)-2,2),0)!=pw/100)

or (pt>0 and ifnull(substring(description,locate('%',description)-2,2),0)!=pt/100)

20.複製表結構

(1)create table a like b

此種方式在將表b複製到a時候會將表b完整的字段結構和索引複製到表a中來。

(2)create table a as select x,x,x,xx from b limit 0

此種方式只會將表b的字段結構複製到表a中來,但不會複製表b中的索引到表a中來。這種方式比較靈活可以在複製原表表結構的同時指定要複製哪些字段,並且自身複製表也可以根據需要增加字段結構。

兩種方式在複製表的時候均不會複製許可權對錶的設定。比如說原本對錶b做了許可權設定,複製後,表a不具備類似於表b的許可權。

21.insert ... on duplicate key update syntax

insert into table (a,b,c) values (1,2,3)

on duplicate key update c=c+1;

update table set c=c+1 where a=1;

22.error 1690 (22003): bigint value is out of range

mysql> set sql_mode = 'no_unsigned_subtraction';

mysql> select cast(0 as unsigned) - 1;

PL SQL儲存過程備忘

嗯,好久不寫儲存過程了,最近有乙個業務用資料庫的儲存過程來實現比較妥當,於是再次接觸了一下,下面是一些記錄,以便以後翻查 1 如何定義乙個儲存過程 下面是乙個簡單的儲存過程定義,實現了將 hello 列印出來 create or replace procedure p test p start ti...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...