欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MySql基本查詢、連接查詢、子查詢、正則表達(dá)查詢

 更新時(shí)間:2015年07月21日 16:38:19   作者:林炳文Evankaka  
本篇文章采用了圖文相結(jié)合的方式介紹了數(shù)據(jù)庫(kù)的四大查詢方式:基本查詢、連接查詢、子查詢、正則表達(dá)查詢,需要了解的朋友可以參考下

查詢數(shù)據(jù)指從數(shù)據(jù)庫(kù)中獲取所需要的數(shù)據(jù)。查詢數(shù)據(jù)是數(shù)據(jù)庫(kù)操作中最常用,也是最重要的操作。用戶可以根據(jù)自己對(duì)數(shù)據(jù)的需求,使用不同的查詢方式。通過不同的查詢方式,可以獲得不同的數(shù)據(jù)。MySQL中是使用SELECT語(yǔ)句來查詢數(shù)據(jù)的。在這一章中將講解的內(nèi)容包括。

1、查詢語(yǔ)句的基本語(yǔ)法
2、在單表上查詢數(shù)據(jù)
3、使用聚合函數(shù)查詢數(shù)據(jù)
4、多表上聯(lián)合查詢
5、子查詢
6、合并查詢結(jié)果
7、為表和字段取別名
8、使用正則表達(dá)式查詢

什么是查詢?

怎么查的?

數(shù)據(jù)的準(zhǔn)備如下:

create table STUDENT( 
STU_ID int primary KEY, 
STU_NAME char(10) not null, 
STU_AGE smallint unsigned not null, 
STU_SEX char(2) not null 
); 
insert into STUDENT values(2001,'小王',13,'男'); 
insert into STUDENT values(2002,'明明',12,'男'); 
insert into STUDENT values(2003,'紅紅',14,'女'); 
insert into STUDENT values(2004,'小花',13,'女'); 
insert into STUDENT values(2005,'天兒',15,'男'); 
insert into STUDENT values(2006,'阿獵',13,'女'); 
insert into STUDENT values(2007,'阿貓',16,'男'); 
insert into STUDENT values(2008,'阿狗',17,'男'); 
insert into STUDENT values(2009,'黑子',14,'男'); 
insert into STUDENT values(2010,'小玉',13,'女'); 
insert into STUDENT values(2011,'頭頭',13,'女'); 
insert into STUDENT values(2012,'冰冰',14,'女'); 
insert into STUDENT values(2013,'美麗',13,'女'); 
insert into STUDENT values(2014,'神樂',12,'男'); 
insert into STUDENT values(2015,'天五',13,'男'); 
insert into STUDENT values(2016,'小三',11,'男'); 
insert into STUDENT values(2017,'阿張',13,'男'); 
insert into STUDENT values(2018,'阿杰',13,'男'); 
insert into STUDENT values(2019,'阿寶',13,'女'); 
insert into STUDENT values(2020,'大王',14,'男');

然后這是學(xué)生成績(jī)表,其中定義了外鍵約束

create table GRADE( 
STU_ID INT NOT NULL, 
STU_SCORE INT, 
foreign key(STU_ID) references STUDENT(STU_ID) 
); 
insert into GRADE values(2001,90); 
insert into GRADE values(2002,89); 
insert into GRADE values(2003,67); 
insert into GRADE values(2004,78); 
insert into GRADE values(2005,89); 
insert into GRADE values(2006,78); 
insert into GRADE values(2007,99); 
insert into GRADE values(2008,87); 
insert into GRADE values(2009,70); 
insert into GRADE values(2010,71); 
insert into GRADE values(2011,56); 
insert into GRADE values(2012,85); 
insert into GRADE values(2013,65); 
insert into GRADE values(2014,66); 
insert into GRADE values(2015,77); 
insert into GRADE values(2016,79); 
insert into GRADE values(2017,82); 
insert into GRADE values(2018,88); 
insert into GRADE values(2019,NULL); 
insert into GRADE values(2020,NULL); 

一、查詢語(yǔ)句的基本語(yǔ)法

查詢數(shù)據(jù)是指從數(shù)據(jù)庫(kù)中的數(shù)據(jù)表或視圖中獲取所需要的數(shù)據(jù),在MySQL中,可以使用SELECT語(yǔ)句來查詢數(shù)據(jù)。根據(jù)查詢條件的不同,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)找到不同的數(shù)據(jù)。
SELECT語(yǔ)句的基本語(yǔ)法格式如下:

SELECT 屬性列表 
 FROM 表名或視圖列表 
 [WHERE 條件表達(dá)式1] 
 [GROUP BY 屬性名1 [HAVING 條件表達(dá)式2]] 
 [ORDER BY 屬性名2 [ASC|DESC]] 

屬性列表:表示需要查詢的字段名。
表名或視圖列表:表示即將進(jìn)行數(shù)據(jù)查詢的數(shù)據(jù)表或者視圖,表或視圖可以有多個(gè)。
條件表達(dá)式1:設(shè)置查詢的條件。
屬性名1:表示按該字段中的數(shù)據(jù)進(jìn)行分組。
條件表達(dá)式2:表示滿足該表達(dá)式的數(shù)據(jù)才能輸出。
屬性2:表示按該字段中的數(shù)據(jù)進(jìn)行排序,排序方式由ASC或DESC參數(shù)指定。
ASC:表示按升序的順序進(jìn)行排序。即表示值按照從小到大的順序排列。這是默認(rèn)參數(shù)。
DESC:表示按降序的順序進(jìn)行排序。即表示值按照從大到小的順序排列。

如果有WHERE子句,就按照“條件表達(dá)式1”指定的條件進(jìn)行查詢;如果沒有WHERE子句,就查詢所有記錄。
如果有GROUP BY子句,就按照“屬性名1”指定的字段進(jìn)行分組;如果GROUP BY子句后面帶著HAVING關(guān)鍵字,那么只有滿足“條件表達(dá)式2”中指定的條件的記錄才能夠輸出。GROUP BY子句通常和COUNT()、SUM()等聚合函數(shù)一起使用。
如果有ORDER BY子句,就按照“屬性名2”指定的字段進(jìn)行排序。排序方式由ASC或DESC參數(shù)指定。默認(rèn)的排序方式為ASC。

二、在單表上查詢數(shù)據(jù)

2.1、查詢所有字段

復(fù)制代碼 代碼如下:
select * from STUDENT;


2.2、按條件查詢

(1) 比較運(yùn)算符
> , < ,= , != (< >),>= , <=

select * from STUDENT where STU_AGE>13; 

in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出
IN關(guān)鍵字可以判斷某個(gè)字段的值是否在指定的集合中。如果字段的值在集合中,則滿足查詢條件,該紀(jì)錄將被查詢出來。如果不在集合中,則不滿足查詢條件。其語(yǔ)法規(guī)則如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n )

select * from STUDENT where STU_AGE in(11,12); 

between v1 and v2 在v1至v2之間(包含v1,v2)
BETWEEN AND關(guān)鍵字可以判讀某個(gè)字段的值是否在指定的范圍內(nèi)。如果字段的值在指定范圍內(nèi),則滿足查詢條件,該紀(jì)錄將被查詢出來。如果不在指定范圍內(nèi),則不滿足查詢條件。其語(yǔ)法規(guī)則如下:
[ NOT ] BETWEEN 取值1 AND 取值2

select * from STUDENT where STU_AGE between 13 and 15; 

(2)邏輯運(yùn)算符

not ( ! ) 邏輯非

select * from STUDENT where STU_AGE NOT IN(13,14,16); 


or ( || ) 邏輯或
OR關(guān)鍵字也可以用來聯(lián)合多個(gè)條件進(jìn)行查詢,但是與AND關(guān)鍵字不同。使用OR關(guān)鍵字時(shí),只要滿足這幾個(gè)查詢條件的其中一個(gè),這樣的記錄將會(huì)被查詢出來。如果不滿足這些查詢條件中的任何一個(gè),這樣的記錄將被排除掉。OR關(guān)鍵字的語(yǔ)法規(guī)則如下:
條件表達(dá)式1 OR 條件表達(dá)式2 [ …OR 條件表達(dá)式n ]
其中,OR可以用來連接兩個(gè)條件表達(dá)式。而且,可以同時(shí)使用多個(gè)OR關(guān)鍵字,這樣可以連接更多的條件表達(dá)式。

select * from STUDENT where STU_ID<2005 OR STU_ID>2015; 

and ( && ) 邏輯與
AND關(guān)鍵字可以用來聯(lián)合多個(gè)條件進(jìn)行查詢。使用AND關(guān)鍵字時(shí),只有同時(shí)滿足所有查詢條件的記錄會(huì)被查詢出來。如果不滿足這些查詢條件的其中一個(gè),這樣的記錄將被排除掉。AND關(guān)鍵字的語(yǔ)法規(guī)則如下:
條件表達(dá)式1 AND 條件表達(dá)式2 [ … AND 條件表達(dá)式n ]
其中,AND可以連接兩個(gè)條件表達(dá)式。而且,可以同時(shí)使用多個(gè)AND關(guān)鍵字,這樣可以連接更多的條件表達(dá)式。

(3)模糊查詢

like 像

LIKE關(guān)鍵字可以匹配字符串是否相等。如果字段的值與指定的字符串相匹配,則滿足查詢條件,該紀(jì)錄將被查詢出來。如果與指定的字符串不匹配,則不滿足查詢條件。其語(yǔ)法規(guī)則如下:[ NOT ] LIKE '字符串' “NOT”可選參數(shù),加上 NOT表示與指定的字符串不匹配時(shí)滿足條件;“字符串”表示指定用來匹配的字符串,該字符串必須加單引號(hào)或雙引號(hào)。

通配符:

% 任意字符

select * from STUDENT where STU_NAME LIKE '%王'; 

表示匹配任何以王結(jié)尾的

select * from STUDENT where STU_NAME LIKE '阿%'; 

表示匹配任何以阿開頭的

_ 單個(gè)字符

比如說插入

select * from STUDENT where STU_NAME LIKE '阿%'; 

然后

select * from STUDENT where STU_NAME LIKE '阿%'; 

查詢的結(jié)果為空

但是如果下后面加兩個(gè)_符號(hào)

select * from STUDENT where STU_NAME LIKE '_下__'; 

查詢結(jié)果不為空

“字符串”參數(shù)的值可以是一個(gè)完整的字符串,也可以是包含百分號(hào)(%)或者下劃線(_)的通配字符。二者有很大區(qū)別
“%”可以代表任意長(zhǎng)度的字符串,長(zhǎng)度可以為0;
“_”只能表示單個(gè)字符。
如果要匹配姓張且名字只有兩個(gè)字的人的記錄,“張”字后面必須要有兩個(gè)“_”符號(hào)。因?yàn)橐粋€(gè)漢字是兩個(gè)字符,而一個(gè)“_”符號(hào)只能代表一個(gè)字符。

(4)空值查詢

IS NULL關(guān)鍵字可以用來判斷字段的值是否為空值(NULL)。如果字段的值是空值,則滿足查詢條件,該記錄將被查詢出來。如果字段的值不是空值,則不滿足查詢條件。其語(yǔ)法規(guī)則如下:
IS [ NOT ] NULL
其中,“NOT”是可選參數(shù),加上NOT表示字段不是空值時(shí)滿足條件。
IS NULL是一個(gè)整體,不能將IS換成”=”.

三、使用聚合函數(shù)查詢數(shù)據(jù)

3.1、group by 分組
如下:

select * from STUDENT group by STU_SEX; 

不加條件,那么就只取每個(gè)分組的第一條。

如果想看分組的內(nèi)容,可以加groub_concat

select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX;

3.2、一般情況下group需與統(tǒng)計(jì)函數(shù)(聚合函數(shù))一起使用才有意義
先準(zhǔn)備一些數(shù)據(jù):

create table EMPLOYEES( 
EMP_NAME CHAR(10) NOT NULL, 
EMP_SALARY INT unsigned NOT NULL, 
EMP_DEP CHAR(10) NOT NULL 
); 
insert into EMPLOYEES values('小王',5000,'銷售部'); 
insert into EMPLOYEES values('阿小王',6000,'銷售部'); 
insert into EMPLOYEES values('工是不',7000,'銷售部'); 
insert into EMPLOYEES values('人人樂',3000,'資源部'); 
insert into EMPLOYEES values('滿頭大',4000,'資源部'); 
insert into EMPLOYEES values('天生一家',5500,'資源部'); 
insert into EMPLOYEES values('小花',14500,'資源部'); 
insert into EMPLOYEES values('大玉',15000,'研發(fā)部'); 
insert into EMPLOYEES values('條條',12000,'研發(fā)部'); 
insert into EMPLOYEES values('笨笨',13000,'研發(fā)部'); 
insert into EMPLOYEES values('我是天才',15000,'研發(fā)部'); 
insert into EMPLOYEES values('無語(yǔ)了',6000,'審計(jì)部'); 
insert into EMPLOYEES values('什么人',5000,'審計(jì)部'); 
insert into EMPLOYEES values('不知道',4000,'審計(jì)部'); 

mysql中的五種統(tǒng)計(jì)函數(shù):
(1)max:求最大值
求每個(gè)部門的最高工資:

select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP;

(2)min:求最小值
求每個(gè)部門的最仰工資:

select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP; 

(3)sum:求總數(shù)和
求每個(gè)部門的工資總和:

select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP 

(4)avg:求平均值
求每個(gè)部門的工資平均值

select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP; 

(5)count:求總行數(shù)
求每個(gè)部門工資大于一定金額的人數(shù)

select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP; 

3.3、帶條件的groub by 字段 having,利用HAVING語(yǔ)句過濾分組數(shù)據(jù)
having 子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),使用having 條件顯示特定的組,也可以使用多個(gè)分組標(biāo)準(zhǔn)進(jìn)行分組。
having 子句被限制子已經(jīng)在SELECT語(yǔ)句中定義的列和聚合表達(dá)式上。通常,你需要通過在HAVING子句中重復(fù)聚合函數(shù)表達(dá)式來引用聚合值,就如你在SELECT語(yǔ)句中做的那樣。

復(fù)制代碼 代碼如下:
select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000;

查找平均工資大于6000的部門,并把部門里的人全部列出來


四、多表上聯(lián)合查詢
多表上聯(lián)合查詢分為內(nèi)連接查詢和外連接查詢
(1)隱式內(nèi)連接查詢

復(fù)制代碼 代碼如下:
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT,GRADE WHERE STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90;

查找大于90分的學(xué)生信息:

(2)顯式內(nèi)連接查詢

復(fù)制代碼 代碼如下:
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT inner join GRADE on STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90;

用法:select .... from 表1 inner join 表2 on 條件表達(dá)式

(3)外連接查詢
left join.左連接查詢。
用法 :select .... from 表1 left join 表2 on 條件表達(dá)式
意思是表1查出來的數(shù)據(jù)不能為null,但是其對(duì)應(yīng)表2的數(shù)據(jù)可以為null

復(fù)制代碼 代碼如下:
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT left join GRADE on STUDENT.STU_ID=GRADE.STU_ID;

right join就是相反的了,用法相同
用left join的時(shí)候,left join操作符左側(cè)表里的信息都會(huì)被查詢出來,右側(cè)表里沒有的記錄會(huì)填空(NULL).right join亦然;inner join的時(shí)候則只有條件合適的才會(huì)顯示出來
full join()
完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)
值。
僅當(dāng)至少有一個(gè)同屬于兩表的行符合聯(lián)接條件時(shí),內(nèi)聯(lián)接才返回行。內(nèi)聯(lián)接消除與另一個(gè)表中的任何行不匹配的行。而外聯(lián)接會(huì)返回 FROM 子句中提到的至少一個(gè)表或
視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行。完整外
部聯(lián)接中兩個(gè)表的所有行都將返回。

五、子查詢
以一個(gè)查詢select的結(jié)果作為另一個(gè)查詢的條件
語(yǔ)法:select * from 表1 wher 條件1(select ..from 表2 where 條件2)
1、與In結(jié)合

select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85); 

查找大于85分的學(xué)生信息

2、與EXISTS結(jié)合
EXISTS和NOT EXISTS操作符只測(cè)試某個(gè)子查詢是否返回了數(shù)據(jù)行。如果是,EXISTS將是true,NOT EXISTS將是false。

select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100); 

如果有學(xué)生成績(jī)大于100,才查詢所有的學(xué)生信息

3、ALL、ANY和SOME子查詢
any和all的操作符常見用法是結(jié)合一個(gè)相對(duì)比較操作符對(duì)一個(gè)數(shù)據(jù)列子查詢的結(jié)果進(jìn)行測(cè)試。它們測(cè)試比較值是否與子查詢所返回的全部或一部分值匹配。比方說,如果比較值小于或等于子查詢所返回的每一個(gè)值,<=all將是true,只要比較值小于或等于子查詢所返回的任何一個(gè)值,<=any將是true。some是any的一個(gè)同義詞。

select STU_ID from GRADE where STU_SCORE <67; 

只要學(xué)號(hào)大于上面的任意一個(gè)就顯示出來:

復(fù)制代碼 代碼如下:
select * from STUDENT where STU_ID >= any (select STU_ID from GRADE where STU_SCORE <67);

六、合并查詢結(jié)果
合并查詢結(jié)果是將多個(gè)SELECT語(yǔ)句的查詢結(jié)果合并到一起。因?yàn)槟撤N情況下,需要將幾個(gè)SELECT語(yǔ)句查詢出來的結(jié)果合并起來顯示。
使用UNION關(guān)鍵字時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)將所有的查詢結(jié)果合并到一起,然后去除掉相同的記錄。而UNION ALL關(guān)鍵字則只是簡(jiǎn)單的合并到一起。其語(yǔ)法規(guī)則如下:

SELECT語(yǔ)句1 
UNION | UNION ALL 
SELECT語(yǔ)句2 
UNION | UNION ALL …. 
SELECT語(yǔ)句n ;

七、排序與取數(shù)
7.1、order by

(1)order by price //默認(rèn)升序排列
(2)order by price desc //降序排列
(3)order by price asc //升序排列,與默認(rèn)一樣
(4)order by rand() //隨機(jī)排列,效率不高

select * from GRADE where STU_SCORE >80 order by STU_SCORE; 

默認(rèn)是按升序的,
也可以這么寫

select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC; 

結(jié)果如下:

如果想換成降序的:

select * from GRADE where STU_SCORE >80 order by STU_SCORE desc; 

7.2、limit

limit [offset,] N
offset 偏移量,可選,不寫則相當(dāng)于limit 0,N
N 取出條目
取分?jǐn)?shù)最高的前5條

select * from GRADE order by STU_SCORE desc limit 5; 

取分?jǐn)?shù)最低的前5條

select * from GRADE order by STU_SCORE asc limit 5; 

取分?jǐn)?shù)排名在10-15之間的5條

select * from GRADE order by STU_SCORE desc limit 10,5 

八、為表和字段取別名

使用AS來命名列

select STU_ID as '學(xué)號(hào)',STU_SCORE as '分?jǐn)?shù)' from GRADE; 

當(dāng)表的名稱特別長(zhǎng)時(shí),在查詢中直接使用表名很不方便。這時(shí)可以為表取一個(gè)別名。用這個(gè)別名來代替表的名稱。
MySQL中為表取別名的基本形式如下:
表名 表的別名

復(fù)制代碼 代碼如下:
select S.STU_ID,S.STU_NAME,S.STU_AGE,S.STU_SEX,G.STU_SCORE from STUDENT S,GRADE G WHERE S.STU_ID=G.STU_ID AND G.STU_SCORE >=90;

九、使用正則表達(dá)式查詢

正則表達(dá)式是用某種模式去匹配一類字符串的一個(gè)方式。例如,使用正則表達(dá)式可以查詢出包含A、B、C其中任一字母的字符串。正則表達(dá)式的查詢能力比通配字符的查詢能力更強(qiáng)大,而且更加的靈活。正則表達(dá)式可以應(yīng)用于非常復(fù)雜查詢。
MySQL中,使用REGEXP關(guān)鍵字來匹配查詢正則表達(dá)式。其基本形式如下:
屬性名 REGEXP '匹配方式'

在使用前先插入一些數(shù)據(jù):

insert into STUDENT values(2022,'12wef',13,'男'); 
insert into STUDENT values(2023,'faf_23',13,'男'); 
insert into STUDENT values(2024,'fafa',13,'女'); 
insert into STUDENT values(2025,'ooop',14,'男'); 
insert into STUDENT values(2026,'23oop',14,'男'); 
insert into STUDENT values(2027,'woop89',14,'男'); 
insert into STUDENT values(2028,'abcdd',11,'男'); 

(1)使用字符“^”可以匹配以特定字符或字符串開頭的記錄。
查詢所有以阿頭的

select * from STUDENT where STU_NAME REGEXP '^阿'; 

以數(shù)字開頭

select * from STUDENT where STU_NAME REGEXP '^[0-9]';

(2)使用字符“$”可以匹配以特定字符或字符串結(jié)尾的記錄
以數(shù)字結(jié)尾

select * from STUDENT where STU_NAME REGEXP '[0-9]$'; 

(3)用正則表達(dá)式來查詢時(shí),可以用“.”來替代字符串中的任意一個(gè)字符。

select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$'; 

以w開頭,以數(shù)字結(jié)束,中間有4個(gè)

(4)使用方括號(hào)([])

可以將需要查詢字符組成一個(gè)字符集。只要記錄中包含方括號(hào)中的任意字符,該記錄將會(huì)被查詢出來。
例如,通過“[abc]”可以查詢包含a、b、c這三個(gè)字母中任何一個(gè)的記錄。

使用方括號(hào)可以指定集合的區(qū)間。
“[a-z]”表示從a-z的所有字母;
“[0-9]”表示從0-9的所有數(shù)字;
“[a-z0-9]”表示包含所有的小寫字母和數(shù)字。
“[a-zA-Z]”表示匹配所有字母。
select * from STUDENT where STU_NAME REGEXP '[0-9a-z]';
查詢所有包含有數(shù)字和小寫字母的

使用“[^字符集合]”可以匹配指定字符以外的字符

(5){}表示出現(xiàn)的次數(shù)

正則表達(dá)式中,“字符串{M}”表示字符串連續(xù)出現(xiàn)M次;“字符串{M,N}”表示字符串聯(lián)連續(xù)出現(xiàn)至少M(fèi)次,最多N次。例如,“ab{2}”表示字符串“ab”連續(xù)出現(xiàn)兩次?!癮b{2,4}”表示字符串“ab”連續(xù)出現(xiàn)至少兩次,最多四次。
o出現(xiàn)2次

select * from STUDENT where STU_NAME REGEXP 'o{2}'; 

(6)+表示到少出現(xiàn)一次
fa至少出現(xiàn)一次

select * from STUDENT where STU_NAME REGEXP '(fa)+'; 

注意:
正則表達(dá)式可以匹配字符串。當(dāng)表中的記錄包含這個(gè)字符串時(shí),就可以將該記錄查詢出來。如果指定多個(gè)字符串時(shí),需要用符號(hào)“|”隔開。只要匹配這些字符串中的任意一個(gè)即可。每個(gè)字符串與”|”之間不能有空格。因?yàn)椋樵冞^程中,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)將空格也當(dāng)作一個(gè)字符。這樣就查詢不出想要的結(jié)果。
正則表達(dá)式中,“*”和“+”都可以匹配多個(gè)該符號(hào)之前的字符。但是,“+”至少表示一個(gè)字符,而“*”可以表示零個(gè)字符。

以上所述就是本文的全部?jī)?nèi)容,希望大家能夠喜歡。

相關(guān)文章

  • CentOS 7下MySQL服務(wù)啟動(dòng)失敗的快速解決方法

    CentOS 7下MySQL服務(wù)啟動(dòng)失敗的快速解決方法

    CentOS 7下MySQL服務(wù)啟動(dòng)失敗怎么辦?下面小編就為大家?guī)硪黄狢entOS 7下MySQL服務(wù)啟動(dòng)失敗的快速解決方法。現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-03-03
  • MySQL?去重實(shí)例操作詳解

    MySQL?去重實(shí)例操作詳解

    這篇文章主要介紹了MySQL?去重實(shí)例操作詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 淺析Mysql Join語(yǔ)法以及性能優(yōu)化

    淺析Mysql Join語(yǔ)法以及性能優(yōu)化

    在講MySQL的Join語(yǔ)法前還是先回顧一下聯(lián)結(jié)的語(yǔ)法,呵呵,其實(shí)連我自己都忘得差不多了,那就大家一起溫習(xí)吧,這里我有個(gè)比較簡(jiǎn)便的記憶方法,內(nèi)外聯(lián)結(jié)的區(qū)別是內(nèi)聯(lián)結(jié)將去除所有不符合條件的記錄,而外聯(lián)結(jié)則保留其中部分。外左聯(lián)結(jié)與外右聯(lián)結(jié)的區(qū)別在于如果用A左聯(lián)結(jié)B則A中所有記錄都會(huì)保留在結(jié)果中,此時(shí)B中只有符合聯(lián)結(jié)條件的記錄,而右聯(lián)結(jié)相反,這樣也就不會(huì)混淆了。
    2014-05-05
  • 解決 phpmyadmin #2002 無法登錄 MySQL 服務(wù)器

    解決 phpmyadmin #2002 無法登錄 MySQL 服務(wù)器

    我以前使用phpmyadmin都是很正常的,從來沒有出現(xiàn)過問題。但是今天出現(xiàn)了提示#2002無法登陸到MYSQL服務(wù)器
    2012-04-04
  • MySQL查看鎖表的實(shí)現(xiàn)步驟

    MySQL查看鎖表的實(shí)現(xiàn)步驟

    在MySQL數(shù)據(jù)庫(kù)中,當(dāng)多個(gè)事務(wù)同時(shí)請(qǐng)求對(duì)同一行數(shù)據(jù)進(jìn)行修改時(shí),就會(huì)發(fā)生鎖表現(xiàn)象,本文主要介紹了MySQL查看鎖表的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • mysql數(shù)據(jù)庫(kù)之索引詳細(xì)介紹

    mysql數(shù)據(jù)庫(kù)之索引詳細(xì)介紹

    大家好,本篇文章主要講的是mysql數(shù)據(jù)庫(kù)之索引詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • mysql下centos安裝mariadb的方法及遇到的問題

    mysql下centos安裝mariadb的方法及遇到的問題

    這篇文章主要介紹了mysql下centos安裝mariadb的方法及遇到的問題,在安裝之前要?jiǎng)h除之前安裝的mariadb,具體安裝方法及遇到問題解決方法,大家參考下本文
    2018-05-05
  • MySQL使用LOAD_FILE()函數(shù)方法總結(jié)

    MySQL使用LOAD_FILE()函數(shù)方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于MySQL使用LOAD_FILE()函數(shù)方法和相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • MySQL復(fù)制架構(gòu)的搭建及配置過程

    MySQL復(fù)制架構(gòu)的搭建及配置過程

    這篇文章主要介紹了MySQL復(fù)制架構(gòu)的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 使用ORM新增數(shù)據(jù)在Mysql中的操作步驟

    使用ORM新增數(shù)據(jù)在Mysql中的操作步驟

    這篇文章主要介紹了使用ORM新增數(shù)據(jù)在Mysql中,但是在這需要注意需要大家新建ORM模型,具體搭建步驟及詳細(xì)過程跟隨小編一起看看吧
    2021-07-07

最新評(píng)論