国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫常用操作技巧總結

2024-07-25 19:08:12
字體:
來源:轉載
供稿:網友

本文實例總結了MySQL數據庫常用操作技巧。分享給大家供大家參考,具體如下:

一、查詢不同表中同名字段(表連接查詢條件神器)

use information_schema;select * from columns where column_name='字段名';

二、查詢記錄總數

SELECT SQL_CALC_FOUND_ROWS * FROM TABLE WHERE 1=1;

即可得出總數據行數

SET @RowCount=found_rows();

三、存儲過程數據查詢分頁

預定義變量:

/*錯誤代碼*/SET @RetCode='1';/*錯誤提示*/SET @RetVal='1';/*返回記錄行數*/SET @RowCount='0';/*頁碼*/SET @PageCount='0';/*每頁顯示數*/SET @CurrentItem=0;/*每頁顯示數*/SET @PageSize=arg_page_size;/*頁碼*/SET @PageCurrent=arg_page_current;SET @SqlExe='select * from table where 1=1';入參:arg_page_size int,arg_page_current intIF(@PageCurrent IS NOT NULL && @PageSize IS NOT NULL) THENSET @CurrentItem = (@PageCurrent-1)*@PageSize;SET @SqlExe=CONCAT(@SqlExe,'LIMIT ', @PageSize,' OFFSET ', @CurrentItem);ELSESET @SqlExe=CONCAT(@SqlExe,' ');END IF;prepare stmt from @SqlExe;execute stmt;deallocate prepare stmt;IF(@RowCount IS NOT NULL && @RowCount != 0) THENIF(@PageSize is null)thenSET @PageSize= @RowCount;END IF;SET @PageCount = ceiling(@RowCount/@PageSize);ELSESET @RowCount = 0;SET @PageCount = 1;END IF;

四、字符串相關操作

1、從左開始截取字符串

left(str, length)

說明:left(被截取字段,截取長度)

例:

select left(content,200)as abstract from my_content_t

2、從右開始截取字符串

right(str, length)

說明:right(被截取字段,截取長度)

例:

select right(content,200)as abstract from my_content_t

3、截取字符串

substring(str, pos)

substring(str, pos, length)

說明:

substring(被截取字段,從第幾位開始截取)

substring(被截取字段,從第幾位開始截取,截取長度)

例:

select substring(content,5)as abstract from my_content_tselect substring(content,5,200)as abstract from my_content_t

(注:如果位數是負數 如-5則是從后倒數位數,到字符串結束或截取的長度)

4、按關鍵字截取字符串

substring_index(str,delim,count)

說明:substring_index(被截取字段,關鍵字,關鍵字出現的次數)

例:

select substring_index("blog.csdn.net",".",2)as abstract from my_content_t

結果:

blog.csdn

(注:如果關鍵字出現的次數是負數 如-2 則是從后倒數,到字符串結束)

函數簡介:

SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

不帶有len 參數的格式從字符串str返回一個子字符串,起始于位置pos。帶有len參數的格式從字符串str返回一個長度同len字符相同的子字符串,起始于位置pos。 使用FROM的格式為標準SQL 語法。也可能對pos使用一個負值。假若這樣,則子字符串的位置起始于字符串結尾的pos字符,而不是字符串的開頭位置。在以下格式的函數中可以對pos使用一個負值。

MySQL字符串大小寫轉換

deMySQL 字符串大小寫轉化函數有兩對: lower(), uppper()lcase(), ucase()

mysql>select lower('DDD');結果:dddmysql> select upper('ddd');結果:DDDmysql> select lcase('DDD');結果:dddmysql> select ucase('ddd');結果:DDD

通常情況下,我選擇 lower(), upper() 來轉換字符串大小寫,因為這和其他數據庫中函數相兼容。

五、時間獲取相關操作

declare _LastWeekStartTime date; -- 上周開始時間declare _LastWeekEndTime date; -- 上周結束時間

-- 因系統為星期日為每星期第一天 所以需要減1

set @A = date_add(curdate(), interval -1 day);

-- 算出本周星期一的日期

set @B = subdate( @A,date_format(@A,'%w')-1);

-- 因系統為星期日為每星期第一天 所以需要 減2獲取上星期最后一天(上星期星期六)

set @C = date_add(@B, interval -2 day);set _LastWeekStartTime = ( subdate( @C,date_format( @C,'%w')-1));set _LastWeekEndTime = ( date_add(subdate( @C,date_format( @C,'%w')-1), interval 6 day));

-- 獲取當前日期是星期幾 1為周日2為周一 以此類推

SET @nowdate=(select DAYOFWEEK(NOW()));SET @NowD=case @nowdatewhen 1 then '星期日'when 2 then '星期一'when 3 then '星期二'when 4 then '星期三'when 5 then '星期四'when 6 then '星期五'when 7 then '星期六'end;

-- 周日時間需要重新計算

if (DATE_FORMAT(CURDATE(),'%w')=0) thenSET @curmon=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')+6));SET @cursun=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')));else

-- 開始時間(周一)

SET @curmon=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-1));

-- 結束時間(周日)

SET @cursun=(SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-7));

六、排序技巧

CREATE TABLE test (id INT PRIMARY KEY not null auto_increment,val nvarchar (50) NOT NULL);INSERT INTO test(val) VALUES ('0');INSERT INTO test(val) VALUES ('1');INSERT INTO test(val) VALUES ('2');INSERT INTO test(val) VALUES ('3');SELECT * from test;-- 根據 id為 2 0 1 3的優先級自定義排序SELECT * FROM test ORDER BY instr('2013',id);-- 原理樣例SET @ORDBYD='2013';SELECT '2',instr(@ORDBYD,'2') as `INDEX`unionSELECT '0',instr(@ORDBYD,'0') as `INDEX`unionSELECT '1',instr(@ORDBYD,'1') as `INDEX`unionSELECT '3',instr(@ORDBYD,'3') as `INDEX`;

instr函數(摘自百度百科instr函數語法)

instr( string1, string2, start_position,nth_appearance )

string1:源字符串,要在此字符串中查找。
string2:要在string1中查找的字符串 。
start_position:代表string1 的哪個位置開始查找。此參數可選,如果省略默認為1. 字符串索引從1開始。如果此參數為正,從左到右開始檢索,如果此參數為負,從右到左檢索,返回要查找的字符串在源字符串中的開始索引。
nth_appearance:代表要查找第幾次出現的string2. 此參數可選,如果省略,默認為 1.如果為負數系統會報錯。

注意:

位置索引號從1開始。

如果String2在String1中沒有找到,instr函數返回0。

示例:

SELECT instr('syranmo','s') FROM dual; -- 返回 1SELECT instr('syranmo','ra') FROM dual; -- 返回 3SELECT instr('syran mo','at',1,2) FROM dual; -- 返回 0

希望本文所述對大家MySQL數據庫計有所幫助。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 越西县| 都匀市| 郑州市| 临海市| 合山市| 赣榆县| 合江县| 禄劝| 祁门县| 永济市| 涞源县| 常山县| 湖北省| 甘德县| 额尔古纳市| 潢川县| 梁河县| 万荣县| 区。| 平武县| 乌拉特后旗| 社会| 长宁区| 夏河县| 江达县| 响水县| 平潭县| 万源市| 杭州市| 波密县| 手游| 清水河县| 田阳县| 昭通市| 昌都县| 龙口市| 林甸县| 渭源县| 凤冈县| 大名县| 潼关县|