mysql增删查改------插入与查询数据
mysql增刪查改
- 插入數據
- 查詢數據
- MySQL聚合函數
- 聯結查詢
- 內聯結查詢
- 傳統方式----where
- 新方式-----inner join方式
- 自聯結查詢
- 外聯結查詢
- 左聯結查詢
- 右聯結查詢
- 復合條件聯結查詢--------內聯結
- 子查詢
- 帶some/any 與all的子查詢之間的區別
- 帶(not) exists 的查詢
- 帶(not) in的查詢
- 聯結查詢和子查詢的比較
- 帶比較運算符的子查詢
- 合并查詢
- 帶 all的union 與不帶的區別
- 用正則表達式查詢
- 1,匹配開始/結尾的字符
- 匹配任一字符
- 匹配多個字符
- 匹配字符串
插入數據
插入數據時候----
同時插入多行記錄的INSERT語句等同于多個單行插入的INSERT語句,但是多行的INSERT語句在處理過程中效率更高。因為MySQL執行單條INSERT語句插入多行數據比使用多條INSERT語句快,所以在插入多條記錄時最好選擇使用單條INSERT語句的方式插入。
傳統插入方式不在贅述,
向大部分數據庫一樣,mysql也支持將查詢的列插入到某一張表中;
建表----插入----然后清空
mysql> select * from emp2; +-------+--------+-----------+------+------------+---------+---------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+--------+-----------+------+------------+---------+---------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 | +-------+--------+-----------+------+------------+---------+---------+--------+ 14 rows in set (0.00 sec)mysql> truncate emp2; Query OK, 0 rows affected (0.11 sec)mysql> select * from emp2; Empty set (0.02 sec)之后
-- 可以選擇指定字段, -- mysql> insert into emp2 select * from emp; Query OK, 14 rows affected (0.04 sec) Records: 14 Duplicates: 0 Warnings: 0mysql> select * from emp2; +-------+--------+-----------+------+------------+---------+---------+--------+ | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +-------+--------+-----------+------+------------+---------+---------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 40 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 40 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 | +-------+--------+-----------+------+------------+---------+---------+--------+ 14 rows in set (0.00 sec)查詢數據
建表什么的不在贅述,
直接上活-----
mysql> select * from userinfo order by score desc ,height; +------+----------+--------+-------+--------+ | id | name | gender | score | height | +------+----------+--------+-------+--------+ | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | | 1002 | 李四 | 女 | 130.5 | 167.3 | | 1001 | 張三 | 男 | 128.8 | 173.4 | | 1009 | 李二狗 | 男 | 123.4 | 178.9 | | 1004 | 李六 | 男 | 123.4 | 180.4 | | 1010 | 王建國 | 男 | 120.9 | 166.4 | | 1003 | 王五 | 男 | 111.7 | 177.8 | | 1008 | Gavin | 男 | 111.3 | 188.8 | | 1006 | 阿依古麗 | 女 | 100.4 | 158.9 | | 1007 | Jack | 女 | 100.4 | 198.7 | +------+----------+--------+-------+--------+ 10 rows in set (0.00 sec)需求一----
按照score降序height升序------
需求2-------
按照性別分組,求出男女的平均身高,并要查看男女方所有人姓名;
分析----要求的是平均身高,所以選擇的主體目標是 select avg(height),然后再添加附加條件—
mysql> select avg(height) as '平均身高' ,group_concat(name) as '姓名' from userinfo group by gender; +-----------+------------------------------------+ | 平均身高 | 姓名 | +-----------+------------------------------------+ | 172.90000 | 李四,古力娜華,阿依古麗,Jack | | 177.61666 | 張三,王五,李六,Gavin,李二狗,王建國 | +-----------+------------------------------------+ 2 rows in set (0.00 sec)需求3----
統計男女數量,并顯示出男女姓名
查看字段的每條記錄名稱,可以在GROUP BY子句中使用GROUP_CONCAT()函數,將每個分組中各個字段的值顯示出來。
HAVING關鍵字與WHERE關鍵字都是用來過濾數據的,兩者有什么區別呢?其中重要的一點是,HAVING在數據分組之后進行過濾來選擇分組,而WHERE在分組之前來選擇記錄。另外,WHERE排除的記錄不再包括在分組中。
對于所得結果數據之查看部分-----
mysql> select * from userinfo limit 4,3; +------+----------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+----------+--------+-------+--------+-----------+ | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | orange | | 1006 | 阿依古麗 | 女 | 100.4 | 158.9 | mongo | | 1007 | Jack | 女 | 100.4 | 198.7 | banana | +------+----------+--------+-------+--------+-----------+ 3 rows in set (0.00 sec)mysql> select * from userinfo limit 4 offset 3; +------+----------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+----------+--------+-------+--------+-----------+ | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | orange | | 1006 | 阿依古麗 | 女 | 100.4 | 158.9 | mongo | | 1007 | Jack | 女 | 100.4 | 198.7 | banana | +------+----------+--------+-------+--------+-----------+ 4 rows in set (0.00 sec)小結-----
查詢數據
1,查詢某寫字段下所有信息—
select 字段名1,字段名2,…字段名n from 表名;
2,查詢表中所有信息
select * from 表名;
3,限制查詢條件達到篩選目的—
select 字段名 from 表名 where 條件1 and/or 條件2
總體格式就是------
4,select 字段名 as 查詢字段的臨時字段名 from 表名 where 條件 group by 字段名 order by 字段名 limit 偏移量,記錄數量;
其中可以穿插各種函數;
MySQL聚合函數
MySQL聚合函數
COUNT()函數
COUNT()函數統計數據表中包含的記錄行的總數,或者根據查詢結果返回列中包含的數據行數。其使用方法有兩種:
**
● COUNT(*)計算表中總的行數,不管某列是否有數值或者為空值。
● COUNT(字段名)計算指定列下總的行數,計算時將忽略空值的行。
空值被COUNT(字段名)函數忽略;
而在COUNT()函數所有記錄都不忽略。
sum()函數再計算和的時候忽略null的行;
聯結查詢
將多張表連結起來以便于查詢數據,
內聯結查詢
傳統方式----where
將字段通過where進行篩選
mysql> select userinfo.id ,userinfo.name from userinfo where userinfo.id=usertest.id ; ERROR 1054 (42S22): Unknown column 'usertest.id' in 'where clause' mysql> select userinfo.id ,userinfo.name from userinfo,usertest where userinfo.id=usertest.id ; +------+----------+ | id | name | +------+----------+ | 1001 | 張三 | | 1003 | 王五 | | 1005 | 古力娜華 | | 1007 | Jack | | 1008 | Gavin | | 1009 | 李二狗 | | 1010 | 王建國 | | 1011 | 瑪麗亞 | +------+----------+ 8 rows in set (0.02 sec)新方式-----inner join方式
mysql> select userinfo.id ,userinfo.name from userinfo inner join usertest on userinfo.id=usertest.id; +------+----------+ | id | name | +------+----------+ | 1001 | 張三 | | 1003 | 王五 | | 1005 | 古力娜華 | | 1007 | Jack | | 1008 | Gavin | | 1009 | 李二狗 | | 1010 | 王建國 | | 1011 | 瑪麗亞 | +------+----------+ 8 rows in set (0.00 sec)內連接(INNER JOIN)使用比較運算符進行表間某(些)列數據的比較操作,并列出這些表中與連接條件相匹配的數據行,組合成新的記錄,也就是說,在內連接查詢中,只有滿足條件的記錄才能出現在結果關系中。
一般是建議使用內聯結,有些情況下使用where 操作可能會影響性能;
自聯結查詢
內聯結除了可以跟別的表進行之外還可以自己跟自己聯結------又叫自聯結查詢.
外聯結查詢
左聯結查詢
LEFT JOIN(左連接):返回包括左表中的所有記錄和右表中連接字段相等的記錄。
mysql> select userinfo.name,userinfo.fruitname from userinfo left join usertest on userinfo.name =usertest.name ; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 李四 | apple | | 王五 | pear | | 李六 | apple | | 古力娜華 | orange | | 阿依古麗 | mongo | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | NULL | | 穿耳戈 | NULL | +----------+-----------+ 12 rows in set (0.02 sec)ysql> select userinfo.name,userinfo.fruitname from userinfo left outer join usertest on userinfo.name =usertest.name ; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 李四 | apple | | 王五 | pear | | 李六 | apple | | 古力娜華 | orange | | 阿依古麗 | mongo | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | peak | | 穿耳戈 | peak | +----------+-----------+ 12 rows in set (0.02 sec)left join 等同于left outer join----- 可以看作省略outer
右聯結查詢
RIGHT JOIN(右連接):返回包括右表中的所有記錄和左表中連接字段相等的記錄。
mysql> select userinfo.name,userinfo.fruitname from userinfo right join usertest on userinfo.name =usertest.name ; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 王五 | pear | | 古力娜華 | orange | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | NULL | | NULL | NULL | | 阿依古麗 | mongo | | 李六 | apple | +----------+-----------+ 11 rows in set (0.00 sec)mysql> select userinfo.name,userinfo.fruitname from userinfo right outer join usertest on userinfo.name =usertest.name ; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 王五 | pear | | 古力娜華 | orange | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | peak | | NULL | NULL | | 阿依古麗 | mongo | | 李六 | apple | +----------+-----------+ 11 rows in set (0.00 sec)復合條件聯結查詢--------內聯結
就是再內聯結條件上進一步細化得到的查詢
mysql> select u1.name,u1.fruitname from userinfo as u1 inner join usertest as u2 on u1.id=u2.id ; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 王五 | pear | | 古力娜華 | orange | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | peak | +----------+-----------+ 8 rows in set (0.00 sec)mysql> select u1.name,u1.fruitname from userinfo as u1 inner join usertest as u2 on u1.id=u2.id and u1.id=1008; +-------+-----------+ | name | fruitname | +-------+-----------+ | Gavin | mongo | +-------+-----------+ 1 row in set (0.00 sec)子查詢
子查詢很容易理解就是在查詢的基礎之前先進行一次條件篩選;
有子查詢時,先執行內層子查詢,再執行外層查詢,內層子查詢的結果作為外部查詢的比較條件。
子查詢指一個查詢語句嵌套在另一個查詢語句內部的查詢,這個特性從MySQL 4.1開始引入。在SELECT子句中先計算子查詢,子查詢結果作為外層另一個查詢的過濾條件,查詢可以基于一個表或者多個表。子查詢中常用的操作符有ANY(SOME)、ALL、IN、EXISTS。子查詢可以添加到SELECT、UPDATE和DELETE語句中,而且可以進行多層嵌套。子查詢中也可以使用比較運算符,如**“<”“<=”“>”“>=”和“!=”**等。
帶some/any 與all的子查詢之間的區別
**原表數據-----** mysql> select * from user01; +--------+ | scores | +--------+ | 111 | | 112 | | 118 | | 120 | | 121 | | 108 | +--------+ 6 rows in set (0.00 sec)mysql> select * from userinfo; +------+----------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+----------+--------+-------+--------+-----------+ | 1001 | 張三 | 男 | 128.8 | 173.4 | pear | | 1002 | 李四 | 女 | 130.5 | 167.3 | apple | | 1003 | 王五 | 男 | 111.7 | 177.8 | pear | | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | orange | | 1006 | 阿依古麗 | 女 | 100.4 | 158.9 | mongo | | 1007 | Jack | 女 | 100.4 | 198.7 | banana | | 1008 | Gavin | 男 | 111.3 | 188.8 | mongo | | 1009 | 李二狗 | 男 | 123.4 | 178.9 | orange | | 1010 | 王建國 | 男 | 120.9 | 166.4 | banana | | 1011 | 瑪麗亞 | 男 | NULL | NULL | peak | | 1012 | 穿耳戈 | 男 | NULL | NULL | peak | +------+----------+--------+-------+--------+-----------+ 12 rows in set (0.00 sec) mysql> select name ,score from userinfo where score>any (select scores from user01); +----------+-------+ | name | score | +----------+-------+ | 張三 | 128.8 | | 李四 | 130.5 | | 王五 | 111.7 | | 李六 | 123.4 | | 古力娜華 | 145.6 | | Gavin | 111.3 | | 李二狗 | 123.4 | | 王建國 | 120.9 | +----------+-------+ 8 rows in set (0.02 sec)mysql> select name ,score from userinfo where score>some (select scores from user01); +----------+-------+ | name | score | +----------+-------+ | 張三 | 128.8 | | 李四 | 130.5 | | 王五 | 111.7 | | 李六 | 123.4 | | 古力娜華 | 145.6 | | Gavin | 111.3 | | 李二狗 | 123.4 | | 王建國 | 120.9 | +----------+-------+ 8 rows in set (0.00 sec) mysql> select name ,score from userinfo where score>all (select scores from user01); +----------+-------+ | name | score | +----------+-------+ | 張三 | 128.8 | | 李四 | 130.5 | | 李六 | 123.4 | | 古力娜華 | 145.6 | | 李二狗 | 123.4 | +----------+-------+ 5 rows in set (0.00 sec)可以發現some和any的效果是一樣的;
select name ,score from userinfo where score>some (select scores from user01);
------some/any 表示 滿足其中的一個條件即可,即userinfo.score 的值大于user01.scores中的最小值就算滿足條件;
select name ,score from userinfo where score>all (select scores from user01);
------all表示滿足userinfo.score 的值大于user01.scores中的所有值,即要求userinfo.score 的值大于user01.scores中的最大值
帶(not) exists 的查詢
mysql> select name ,score from userinfo where exists(select score from userinfo where score=150); Empty set (0.02 sec)mysql> select name ,score from userinfo where exists(select score from userinfo where score=100.4); +----------+-------+ | name | score | +----------+-------+ | 張三 | 128.8 | | 李四 | 130.5 | | 王五 | 111.7 | | 李六 | 123.4 | | 古力娜華 | 145.6 | | 阿依古麗 | 100.4 | | Jack | 100.4 | | Gavin | 111.3 | | 李二狗 | 123.4 | | 王建國 | 120.9 | | 瑪麗亞 | NULL | | 穿耳戈 | NULL | +----------+-------+ 12 rows in set (0.00 sec)可以發現exists的作用是如果exists后面的執行結果為true則執行前面的查詢,否則不執行;
即由于不存在score=150 的記錄結果為false,所以不執行查詢,存在score=100.4的記錄,結果為true所以執行查詢;
同理可以理解 not exsits ;
mysql> select name ,score from userinfo where not exists(select score from userinfo where score=150); +----------+-------+ | name | score | +----------+-------+ | 張三 | 128.8 | | 李四 | 130.5 | | 王五 | 111.7 | | 李六 | 123.4 | | 古力娜華 | 145.6 | | 阿依古麗 | 100.4 | | Jack | 100.4 | | Gavin | 111.3 | | 李二狗 | 123.4 | | 王建國 | 120.9 | | 瑪麗亞 | NULL | | 穿耳戈 | NULL | +----------+-------+ 12 rows in set (0.00 sec)EXISTS和NOT EXISTS的結果只取決于是否會返回行,而不取決于這些行的內容,所以這個子查詢輸入列表通常是無關緊要的。
帶(not) in的查詢
mysql> select id, name ,fruitname from userinfo where id in(select id from usertest); +------+----------+-----------+ | id | name | fruitname | +------+----------+-----------+ | 1001 | 張三 | pear | | 1003 | 王五 | pear | | 1005 | 古力娜華 | orange | | 1007 | Jack | banana | | 1008 | Gavin | mongo | | 1009 | 李二狗 | orange | | 1010 | 王建國 | banana | | 1011 | 瑪麗亞 | peak | +------+----------+-----------+ 8 rows in set (0.00 sec)mysql> select id, name ,fruitname from userinfo where id in(1001,1002,1003,1004,1005); +------+----------+-----------+ | id | name | fruitname | +------+----------+-----------+ | 1001 | 張三 | pear | | 1002 | 李四 | apple | | 1003 | 王五 | pear | | 1004 | 李六 | apple | | 1005 | 古力娜華 | orange | +------+----------+-----------+ 5 rows in set (0.00 sec)為了便于理解第二個做了一個簡單的查詢,只要id再in后面的這些數據中就篩選出來;
not in 跟in正好相反
mysql> select id, name ,fruitname from userinfo where id not in(select id from usertest); +------+----------+-----------+ | id | name | fruitname | +------+----------+-----------+ | 1002 | 李四 | apple | | 1004 | 李六 | apple | | 1006 | 阿依古麗 | mongo | | 1012 | 穿耳戈 | peak | +------+----------+-----------+ 4 rows in set (0.00 sec)子查詢的功能也可以通過連接查詢完成,但是子查詢使得MySQL代碼更容易閱讀和編寫。
聯結查詢和子查詢的比較
用聯結查詢 完成 in 的 實現的效果-------
mysql> select u1.id,u1.name,u1.fruitname from userinfo as u1 inner join usertest as u2 on u1.id=u2.id; +------+----------+-----------+ | id | name | fruitname | +------+----------+-----------+ | 1001 | 張三 | pear | | 1003 | 王五 | pear | | 1005 | 古力娜華 | orange | | 1007 | Jack | banana | | 1008 | Gavin | mongo | | 1009 | 李二狗 | orange | | 1010 | 王建國 | banana | | 1011 | 瑪麗亞 | peak | +------+----------+-----------+ 8 rows in set (0.00 sec)select id, name ,fruitname from userinfo where id in(select id from usertest); +------+----------+-----------+ | id | name | fruitname | +------+----------+-----------+ | 1001 | 張三 | pear | | 1003 | 王五 | pear | | 1005 | 古力娜華 | orange | | 1007 | Jack | banana | | 1008 | Gavin | mongo | | 1009 | 李二狗 | orange | | 1010 | 王建國 | banana | | 1011 | 瑪麗亞 | peak | +------+----------+-----------+ 8 rows in set (0.00 sec)帶比較運算符的子查詢
只做演示不做贅述…
比較符 “<”“<=”“=”“>=”和“!=”,’<=>'等等,
合并查詢
利用UNION關鍵字,可以給出多條SELECT語句,并將它們的結果組合成單個結果集。合并時,兩個表對應的列數和數據類型必須相同。
mysql> select name ,fruitname from userinfo union select name ,fruitname from usertest; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 李四 | apple | | 王五 | pear | | 李六 | apple | | 古力娜華 | orange | | 阿依古麗 | mongo | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | peak | | 穿耳戈 | peak | | Gavin | peak | | 李二狗 | mongo | | 王建國 | apple | | 瑪麗亞 | orange | | 韓非 | apple | +----------+-----------+ 17 rows in set (0.00 sec)mysql> select name ,fruitname from userinfo union all select name ,fruitname from usertest; +----------+-----------+ | name | fruitname | +----------+-----------+ | 張三 | pear | | 李四 | apple | | 王五 | pear | | 李六 | apple | | 古力娜華 | orange | | 阿依古麗 | mongo | | Jack | banana | | Gavin | mongo | | 李二狗 | orange | | 王建國 | banana | | 瑪麗亞 | peak | | 穿耳戈 | peak | | 張三 | pear | | 王五 | pear | | 古力娜華 | orange | | Jack | banana | | Gavin | peak | | 李二狗 | mongo | | 王建國 | apple | | 瑪麗亞 | orange | | 韓非 | apple | | 阿依古麗 | mongo | | 李六 | apple | +----------+-----------+ 23 rows in set (0.00 sec)帶 all的union 與不帶的區別
由上述數據可以看到帶 all的union 與不帶的區別,不帶all的會將才能重復數據剔除,而帶all的則顯示所有數據;
用正則表達式查詢
正則表達式符號以及含義----
練習正則表達式-------
源數據表
1,匹配開始/結尾的字符
以a開頭的
mysql> select * from userinfo where fruitname regexp '^a'; +------+-------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+-------+--------+-------+--------+-----------+ | 1002 | 李四 | 女 | 130.5 | 167.3 | apple | | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | | 1019 | jasdk | 男 | NULL | NULL | aubergine | +------+-------+--------+-------+--------+-----------+ 3 rows in set (0.00 sec)以ge結尾的
mysql> select * from userinfo where fruitname regexp 'ge$'; +------+----------+--------+-------+--------+---------------+ | id | name | gender | score | height | fruitname | +------+----------+--------+-------+--------+---------------+ | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | orange | | 1009 | 李二狗 | 男 | 123.4 | 178.9 | orange | | 1020 | Gavinqwe | 男 | NULL | NULL | cabbage | | 1022 | NULL | 男 | NULL | NULL | white cabbage | +------+----------+--------+-------+--------+---------------+ 4 rows in set (0.00 sec)匹配任一字符
mysql> select * from userinfo where fruitname regexp 'n.a'-> ; +------+--------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+--------+--------+-------+--------+-----------+ | 1014 | 李四12 | 男 | NULL | NULL | pineaple | +------+--------+--------+-------+--------+-----------+ 1 row in set (0.00 sec)匹配多個字符
mysql> select * from userinfo where fruitname regexp 'ap+'; +------+--------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+--------+--------+-------+--------+-----------+ | 1002 | 李四 | 女 | 130.5 | 167.3 | apple | | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | | 1013 | 張三12 | 男 | NULL | NULL | grape | | 1014 | 李四12 | 男 | NULL | NULL | pineaple | | 1016 | 李六12 | 男 | NULL | NULL | grape | +------+--------+--------+-------+--------+-----------+ 5 rows in set (0.00 sec)--匹配a緊跟其后至少有一個p--mysql> select * from userinfo where fruitname regexp '^ap+'; +------+------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+------+--------+-------+--------+-----------+ | 1002 | 李四 | 女 | 130.5 | 167.3 | apple | | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | +------+------+--------+-------+--------+-----------+ 2 rows in set (0.00 sec)--匹配以a開頭緊跟其后至少有一個p--mysql> select * from userinfo where fruitname regexp 'a*k'; +------+--------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+--------+--------+-------+--------+-----------+ | 1011 | 瑪麗亞 | 男 | NULL | NULL | peark | | 1012 | 穿耳戈 | 男 | NULL | NULL | peark | +------+--------+--------+-------+--------+-----------+ 2 rows in set (0.00 sec)--匹配k前面有n個a(n最少為0)--匹配字符串
多個字符串之間要用 | 間隔
mysql> select * from userinfo where fruitname regexp 'an|ap'; +------+----------+--------+-------+--------+-----------+ | id | name | gender | score | height | fruitname | +------+----------+--------+-------+--------+-----------+ | 1002 | 李四 | 女 | 130.5 | 167.3 | apple | | 1004 | 李六 | 男 | 123.4 | 180.4 | apple | | 1005 | 古力娜華 | 女 | 145.6 | 166.7 | orange | | 1007 | Jack | 女 | 100.4 | 198.7 | banana | | 1009 | 李二狗 | 男 | 123.4 | 178.9 | orange | | 1010 | 王建國 | 男 | 120.9 | 166.4 | banana | | 1013 | 張三12 | 男 | NULL | NULL | grape | | 1014 | 李四12 | 男 | NULL | NULL | pineaple | | 1016 | 李六12 | 男 | NULL | NULL | grape | +------+----------+--------+-------+--------+-----------+ 9 rows in set (0.00 sec)總結
以上是生活随笔為你收集整理的mysql增删查改------插入与查询数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你需要来自trustedinstalle
- 下一篇: linux cmake编译源码,linu