《Mysql入門詳解MySql基本查詢、連接查詢、子查詢、正則表達查詢》要點:
本文介紹了Mysql入門詳解MySql基本查詢、連接查詢、子查詢、正則表達查詢,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL數(shù)據(jù)庫查詢數(shù)據(jù)指從數(shù)據(jù)庫中獲取所需要的數(shù)據(jù).查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用,也是最重要的操作.用戶可以根據(jù)自己對數(shù)據(jù)的需求,使用不同的查詢方式.通過不同的查詢方式,可以獲得不同的數(shù)據(jù).MySQL中是使用SELECT語句來查詢數(shù)據(jù)的.在這一章中將講解的內(nèi)容包括.
MYSQL數(shù)據(jù)庫1、查詢語句的基本語法
2、在單表上查詢數(shù)據(jù)
3、使用聚合函數(shù)查詢數(shù)據(jù)
4、多表上聯(lián)合查詢
5、子查詢
6、合并查詢結(jié)果
7、為表和字段取別名
8、使用正則表達式查詢
MYSQL數(shù)據(jù)庫什么是查詢?
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫怎么查的?
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫數(shù)據(jù)的準備如下:
MYSQL數(shù)據(jù)庫
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,'男');
MYSQL數(shù)據(jù)庫然后這是學(xué)生成績表,其中定義了外鍵約束
MYSQL數(shù)據(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);
MYSQL數(shù)據(jù)庫一、查詢語句的基本語法
MYSQL數(shù)據(jù)庫查詢數(shù)據(jù)是指從數(shù)據(jù)庫中的數(shù)據(jù)表或視圖中獲取所需要的數(shù)據(jù),在MySQL中,可以使用SELECT語句來查詢數(shù)據(jù).根據(jù)查詢條件的不同,數(shù)據(jù)庫系統(tǒng)會找到不同的數(shù)據(jù).
SELECT語句的基本語法格式如下:
MYSQL數(shù)據(jù)庫
SELECT 屬性列表
FROM 表名或視圖列表
[WHERE 條件表達式1]
[GROUP BY 屬性名1 [HAVING 條件表達式2]]
[ORDER BY 屬性名2 [ASC|DESC]]
MYSQL數(shù)據(jù)庫屬性列表:表示需要查詢的字段名.
表名或視圖列表:表示即將進行數(shù)據(jù)查詢的數(shù)據(jù)表或者視圖,表或視圖可以有多個.
條件表達式1:設(shè)置查詢的條件.
屬性名1:表示按該字段中的數(shù)據(jù)進行分組.
條件表達式2:表示滿足該表達式的數(shù)據(jù)才能輸出.
屬性2:表示按該字段中的數(shù)據(jù)進行排序,排序方式由ASC或DESC參數(shù)指定.
ASC:表示按升序的順序進行排序.即表示值按照從小到大的順序排列.這是默認參數(shù).
DESC:表示按降序的順序進行排序.即表示值按照從大到小的順序排列.
MYSQL數(shù)據(jù)庫如果有WHERE子句,就按照“條件表達式1”指定的條件進行查詢;如果沒有WHERE子句,就查詢所有記錄.
如果有GROUP BY子句,就按照“屬性名1”指定的字段進行分組;如果GROUP BY子句后面帶著HAVING關(guān)鍵字,那么只有滿足“條件表達式2”中指定的條件的記錄才能夠輸出.GROUP BY子句通常和COUNT()、SUM()等聚合函數(shù)一起使用.
如果有ORDER BY子句,就按照“屬性名2”指定的字段進行排序.排序方式由ASC或DESC參數(shù)指定.默認的排序方式為ASC.
MYSQL數(shù)據(jù)庫二、在單表上查詢數(shù)據(jù)
MYSQL數(shù)據(jù)庫2.1、查詢所有字段
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫2.2、按條件查詢
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(1) 比較運算符
> , < ,= , != (< >),>= , <=
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_AGE>13;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出
IN關(guān)鍵字可以判斷某個字段的值是否在指定的集合中.如果字段的值在集合中,則滿足查詢條件,該紀錄將被查詢出來.如果不在集合中,則不滿足查詢條件.其語法規(guī)則如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n )
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_AGE in(11,12);
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫between v1 and v2 在v1至v2之間(包含v1,v2)
BETWEEN AND關(guān)鍵字可以判讀某個字段的值是否在指定的范圍內(nèi).如果字段的值在指定范圍內(nèi),則滿足查詢條件,該紀錄將被查詢出來.如果不在指定范圍內(nèi),則不滿足查詢條件.其語法規(guī)則如下:
[ NOT ] BETWEEN 取值1 AND 取值2
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_AGE between 13 and 15;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(2)邏輯運算符
MYSQL數(shù)據(jù)庫not ( ! ) 邏輯非
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_AGE NOT IN(13,14,16);
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫or ( || ) 邏輯或
OR關(guān)鍵字也可以用來聯(lián)合多個條件進行查詢,但是與AND關(guān)鍵字不同.使用OR關(guān)鍵字時,只要滿足這幾個查詢條件的其中一個,這樣的記錄將會被查詢出來.如果不滿足這些查詢條件中的任何一個,這樣的記錄將被排除掉.OR關(guān)鍵字的語法規(guī)則如下:
條件表達式1 OR 條件表達式2 [ …OR 條件表達式n ]
其中,OR可以用來連接兩個條件表達式.而且,可以同時使用多個OR關(guān)鍵字,這樣可以連接更多的條件表達式.
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_ID<2005 OR STU_ID>2015;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫and ( && ) 邏輯與
AND關(guān)鍵字可以用來聯(lián)合多個條件進行查詢.使用AND關(guān)鍵字時,只有同時滿足所有查詢條件的記錄會被查詢出來.如果不滿足這些查詢條件的其中一個,這樣的記錄將被排除掉.AND關(guān)鍵字的語法規(guī)則如下:
條件表達式1 AND 條件表達式2 [ … AND 條件表達式n ]
其中,AND可以連接兩個條件表達式.而且,可以同時使用多個AND關(guān)鍵字,這樣可以連接更多的條件表達式.
MYSQL數(shù)據(jù)庫(3)模糊查詢
MYSQL數(shù)據(jù)庫like 像
MYSQL數(shù)據(jù)庫LIKE關(guān)鍵字可以匹配字符串是否相等.如果字段的值與指定的字符串相匹配,則滿足查詢條件,該紀錄將被查詢出來.如果與指定的字符串不匹配,則不滿足查詢條件.其語法規(guī)則如下:[ NOT ] LIKE '字符串' “NOT”可選參數(shù),加上 NOT表示與指定的字符串不匹配時滿足條件;“字符串”表示指定用來匹配的字符串,該字符串必須加單引號或雙引號.
MYSQL數(shù)據(jù)庫通配符:
MYSQL數(shù)據(jù)庫% 任意字符
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME LIKE '%王';
MYSQL數(shù)據(jù)庫表示匹配任何以王結(jié)尾的
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME LIKE '阿%';
MYSQL數(shù)據(jù)庫表示匹配任何以阿開頭的
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫_ 單個字符
MYSQL數(shù)據(jù)庫比如說插入
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME LIKE '阿%';
MYSQL數(shù)據(jù)庫然后
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME LIKE '阿%';
MYSQL數(shù)據(jù)庫查詢的結(jié)果為空
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫但是如果下后面加兩個_符號
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME LIKE '_下__';
MYSQL數(shù)據(jù)庫查詢結(jié)果不為空
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫“字符串”參數(shù)的值可以是一個完整的字符串,也可以是包含百分號(%)或者下劃線(_)的通配字符.二者有很大區(qū)別
“%”可以代表任意長度的字符串,長度可以為0;
“_”只能表示單個字符.
如果要匹配姓張且名字只有兩個字的人的記錄,“張”字后面必須要有兩個“_”符號.因為一個漢字是兩個字符,而一個“_”符號只能代表一個字符.
MYSQL數(shù)據(jù)庫(4)空值查詢
MYSQL數(shù)據(jù)庫IS NULL關(guān)鍵字可以用來判斷字段的值是否為空值(NULL).如果字段的值是空值,則滿足查詢條件,該記錄將被查詢出來.如果字段的值不是空值,則不滿足查詢條件.其語法規(guī)則如下:
IS [ NOT ] NULL
其中,“NOT”是可選參數(shù),加上NOT表示字段不是空值時滿足條件.
IS NULL是一個整體,不能將IS換成”=”.
MYSQL數(shù)據(jù)庫三、使用聚合函數(shù)查詢數(shù)據(jù)
MYSQL數(shù)據(jù)庫3.1、group by 分組
如下:
MYSQL數(shù)據(jù)庫
select * from STUDENT group by STU_SEX;
MYSQL數(shù)據(jù)庫不加條件,那么就只取每個分組的第一條.
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫如果想看分組的內(nèi)容,可以加groub_concat
MYSQL數(shù)據(jù)庫
select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫3.2、一般情況下group需與統(tǒng)計函數(shù)(聚合函數(shù))一起使用才有意義
先準備一些數(shù)據(jù):
MYSQL數(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('無語了',6000,'審計部');
insert into EMPLOYEES values('什么人',5000,'審計部');
insert into EMPLOYEES values('不知道',4000,'審計部');
MYSQL數(shù)據(jù)庫mysql中的五種統(tǒng)計函數(shù):
(1)max:求最大值
求每個部門的最高工資:
MYSQL數(shù)據(jù)庫
select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(2)min:求最小值
求每個部門的最仰工資:
MYSQL數(shù)據(jù)庫
select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(3)sum:求總數(shù)和
求每個部門的工資總和:
MYSQL數(shù)據(jù)庫
select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(4)avg:求平均值
求每個部門的工資平均值
MYSQL數(shù)據(jù)庫
select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(5)count:求總行數(shù)
求每個部門工資大于一定金額的人數(shù)
MYSQL數(shù)據(jù)庫
select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫3.3、帶條件的groub by 字段 having,利用HAVING語句過濾分組數(shù)據(jù)
having 子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),使用having 條件顯示特定的組,也可以使用多個分組標準進行分組.
having 子句被限制子已經(jīng)在SELECT語句中定義的列和聚合表達式上.通常,你需要通過在HAVING子句中重復(fù)聚合函數(shù)表達式來引用聚合值,就如你在SELECT語句中做的那樣.
MYSQL數(shù)據(jù)庫查找平均工資大于6000的部門,并把部門里的人全部列出來
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫四、多表上聯(lián)合查詢
多表上聯(lián)合查詢分為內(nèi)連接查詢和外連接查詢
(1)隱式內(nèi)連接查詢
MYSQL數(shù)據(jù)庫查找大于90分的學(xué)生信息:
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(2)顯式內(nèi)連接查詢
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫用法:select .... from 表1 inner join 表2 on 條件表達式
MYSQL數(shù)據(jù)庫(3)外連接查詢
left join.左連接查詢.
用法 :select .... from 表1 left join 表2 on 條件表達式
意思是表1查出來的數(shù)據(jù)不能為null,但是其對應(yīng)表2的數(shù)據(jù)可以為null
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫right join就是相反的了,用法相同
用left join的時候,left join操作符左側(cè)表里的信息都會被查詢出來,右側(cè)表里沒有的記錄會填空(NULL).right join亦然;inner join的時候則只有條件合適的才會顯示出來
full join()
完整外部聯(lián)接返回左表和右表中的所有行.當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值.如果表之間有匹配行,則整個結(jié)果集行包含基表的數(shù)據(jù)
值.
僅當至少有一個同屬于兩表的行符合聯(lián)接條件時,內(nèi)聯(lián)接才返回行.內(nèi)聯(lián)接消除與另一個表中的任何行不匹配的行.而外聯(lián)接會返回 FROM 子句中提到的至少一個表或
視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件.將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行.完整外
部聯(lián)接中兩個表的所有行都將返回.
MYSQL數(shù)據(jù)庫五、子查詢
以一個查詢select的結(jié)果作為另一個查詢的條件
語法:select * from 表1 wher 條件1(select ..from 表2 where 條件2)
1、與In結(jié)合
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85);
MYSQL數(shù)據(jù)庫查找大于85分的學(xué)生信息
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫2、與EXISTS結(jié)合
EXISTS和NOT EXISTS操作符只測試某個子查詢是否返回了數(shù)據(jù)行.如果是,EXISTS將是true,NOT EXISTS將是false.
MYSQL數(shù)據(jù)庫
select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100);
MYSQL數(shù)據(jù)庫如果有學(xué)生成績大于100,才查詢所有的學(xué)生信息
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫3、ALL、ANY和SOME子查詢
any和all的操作符常見用法是結(jié)合一個相對比較操作符對一個數(shù)據(jù)列子查詢的結(jié)果進行測試.它們測試比較值是否與子查詢所返回的全部或一部分值匹配.比方說,如果比較值小于或等于子查詢所返回的每一個值,<=all將是true,只要比較值小于或等于子查詢所返回的任何一個值,<=any將是true.some是any的一個同義詞.
MYSQL數(shù)據(jù)庫
select STU_ID from GRADE where STU_SCORE <67;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫只要學(xué)號大于上面的任意一個就顯示出來:
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫六、合并查詢結(jié)果
合并查詢結(jié)果是將多個SELECT語句的查詢結(jié)果合并到一起.因為某種情況下,需要將幾個SELECT語句查詢出來的結(jié)果合并起來顯示.
使用UNION關(guān)鍵字時,數(shù)據(jù)庫系統(tǒng)會將所有的查詢結(jié)果合并到一起,然后去除掉相同的記錄.而UNION ALL關(guān)鍵字則只是簡單的合并到一起.其語法規(guī)則如下:
MYSQL數(shù)據(jù)庫
SELECT語句1
UNION | UNION ALL
SELECT語句2
UNION | UNION ALL ….
SELECT語句n ;
MYSQL數(shù)據(jù)庫七、排序與取數(shù)
7.1、order by
(1)order by price //默認升序排列
(2)order by price desc //降序排列
(3)order by price asc //升序排列,與默認一樣
(4)order by rand() //隨機排列,效率不高
MYSQL數(shù)據(jù)庫
select * from GRADE where STU_SCORE >80 order by STU_SCORE;
MYSQL數(shù)據(jù)庫默認是按升序的,
也可以這么寫
MYSQL數(shù)據(jù)庫
select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC;
MYSQL數(shù)據(jù)庫結(jié)果如下:
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫如果想換成降序的:
MYSQL數(shù)據(jù)庫
select * from GRADE where STU_SCORE >80 order by STU_SCORE desc;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫7.2、limit
MYSQL數(shù)據(jù)庫limit [offset,] N
offset 偏移量,可選,不寫則相當于limit 0,N
N 取出條目
取分數(shù)最高的前5條
MYSQL數(shù)據(jù)庫
select * from GRADE order by STU_SCORE desc limit 5;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫取分數(shù)最低的前5條
MYSQL數(shù)據(jù)庫
select * from GRADE order by STU_SCORE asc limit 5;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫取分數(shù)排名在10-15之間的5條
MYSQL數(shù)據(jù)庫
select * from GRADE order by STU_SCORE desc limit 10,5
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫八、為表和字段取別名
MYSQL數(shù)據(jù)庫使用AS來命名列
MYSQL數(shù)據(jù)庫
select STU_ID as '學(xué)號',STU_SCORE as '分數(shù)' from GRADE;
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫當表的名稱特別長時,在查詢中直接使用表名很不方便.這時可以為表取一個別名.用這個別名來代替表的名稱.
MySQL中為表取別名的基本形式如下:
表名 表的別名
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫九、使用正則表達式查詢
MYSQL數(shù)據(jù)庫正則表達式是用某種模式去匹配一類字符串的一個方式.例如,使用正則表達式可以查詢出包含A、B、C其中任一字母的字符串.正則表達式的查詢能力比通配字符的查詢能力更強大,而且更加的靈活.正則表達式可以應(yīng)用于非常復(fù)雜查詢.
MySQL中,使用REGEXP關(guān)鍵字來匹配查詢正則表達式.其基本形式如下:
屬性名 REGEXP '匹配方式'
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫在使用前先插入一些數(shù)據(jù):
MYSQL數(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,'男');
MYSQL數(shù)據(jù)庫(1)使用字符“^”可以匹配以特定字符或字符串開頭的記錄.
查詢所有以阿頭的
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP '^阿';
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫以數(shù)字開頭
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP '^[0-9]';
MYSQL數(shù)據(jù)庫(2)使用字符“$”可以匹配以特定字符或字符串結(jié)尾的記錄
以數(shù)字結(jié)尾
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP '[0-9]$';
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(3)用正則表達式來查詢時,可以用“.”來替代字符串中的任意一個字符.
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$';
MYSQL數(shù)據(jù)庫以w開頭,以數(shù)字結(jié)束,中間有4個
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(4)使用方括號([])
MYSQL數(shù)據(jù)庫可以將需要查詢字符組成一個字符集.只要記錄中包含方括號中的任意字符,該記錄將會被查詢出來.
例如,通過“[abc]”可以查詢包含a、b、c這三個字母中任何一個的記錄.
MYSQL數(shù)據(jù)庫使用方括號可以指定集合的區(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ù)字和小寫字母的
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫使用“[^字符集合]”可以匹配指定字符以外的字符
MYSQL數(shù)據(jù)庫(5){}表示出現(xiàn)的次數(shù)
MYSQL數(shù)據(jù)庫正則表達式中,“字符串{M}”表示字符串連續(xù)出現(xiàn)M次;“字符串{M,N}”表示字符串聯(lián)連續(xù)出現(xiàn)至少M次,最多N次.例如,“ab{2}”表示字符串“ab”連續(xù)出現(xiàn)兩次.“ab{2,4}”表示字符串“ab”連續(xù)出現(xiàn)至少兩次,最多四次.
o出現(xiàn)2次
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP 'o{2}';
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫(6)+表示到少出現(xiàn)一次
fa至少出現(xiàn)一次
MYSQL數(shù)據(jù)庫
select * from STUDENT where STU_NAME REGEXP '(fa)+';
MYSQL數(shù)據(jù)庫
MYSQL數(shù)據(jù)庫注意:
正則表達式可以匹配字符串.當表中的記錄包含這個字符串時,就可以將該記錄查詢出來.如果指定多個字符串時,需要用符號“|”隔開.只要匹配這些字符串中的任意一個即可.每個字符串與”|”之間不能有空格.因為,查詢過程中,數(shù)據(jù)庫系統(tǒng)會將空格也當作一個字符.這樣就查詢不出想要的結(jié)果.
正則表達式中,“*”和“+”都可以匹配多個該符號之前的字符.但是,“+”至少表示一個字符,而“*”可以表示零個字符.
MYSQL數(shù)據(jù)庫以上所述就是本文的全部內(nèi)容,希望大家能夠喜歡.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/5493.html