數(shù)據(jù)庫模糊查詢學(xué)習(xí)
1. 模糊查詢(like)值用于字符串
字符串包括:varchar、char

2.對于模糊查詢就需要用到通配符
通配符包括:%(百分號)—代表任意多個(gè)字符
_(英文的下滑線)—代表任意一個(gè)字符

3.實(shí)例:
3.1 學(xué)生姓名以吳開頭
SELECT * FROM t_user_customer WHERE customer_name LIKE '吳%';
3.2 姓名是兩個(gè)字符的學(xué)生
SELECT * FROM t_user_customer WHERE customer_name LIKE '_';
3.3學(xué)生姓名包含 李
SELECT * FROM t_user_customer WHERE customer_name LIKE '%李%';
3.4 姓名最后一位 是民的學(xué)生
SELECT * FROM t_user_customer WHERE customer_name LIKE '%民';
3.5 姓名是 馬東什么
SELECT * FROM t_user_customer WHERE customer_name LIKE '馬冬';
3.6 精確查詢 學(xué)生姓名為 馬冬梅的學(xué)生
SELECT * FROM t_user_customer WHERE customer__name = '馬冬梅';
3.7. 學(xué)生姓名不等于 張子棟 只顯示學(xué)生 編號 姓名
SELECT customer_name,customer_id FROM t_user_customer WHERE customer_name <> '張子棟 ';
3.8. 學(xué)生省份為重慶的 只顯示 學(xué)生編號 姓名 省份
SELECT customer_name,customer_id, province FROM t_user_customer WHERE province = '重慶';
4.IN (用于多個(gè)過濾條件且條件沒有并列關(guān)系)

5.實(shí)例

5.1 查詢學(xué)生年齡 是 23 30
SELECT * FROM
t_user_customer WHERE age IN (23,30);5.2 查詢學(xué)生省份 是 安徽 重慶
SELECT * FROM
t_user_customer WHERE province IN ('安徽','重慶');

6.組合型的實(shí)例
6.1 查詢年齡為23省份是重慶的或者年齡是29的省份是安徽的所有同學(xué)信息
SELECT * FROM t_user_customer WHERE (age,province) IN ((23,'重慶'),(29,'安徽'));
SELECT * FROM t_user_customer WHERE (age,province) IN ((23,''));
6.2 查詢年齡23的重慶的之外所有學(xué)生信息;
SELECT * FROM t_user_customer WHERE (age ,province) NOT IN ((23,'重慶'));
6.3 查詢年齡不為23且省份不是重慶或者年齡不為29且省份不是安徽的所有學(xué)生信息;
SELECT * FROM t_user_customer WHERE (age ,province) NOT IN ((23,'重慶'),(29,'安徽'));
7orderby (排序)- 升序(asc)-降序(desc)
- 30 查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行降序排序;
SELECT * FROMt_user_customerWHERE age >19 ORDER BY customer_id DESC;
-- 查詢出年齡大于19歲的所有學(xué)生并以年齡進(jìn)行降序排序 如果有年齡相同的,以序號升序排序
SELECT * FROMt_user_customerWHERE age>19 ORDER BY age DESC, customer_id ASC;
32 查詢出性別為男的所有學(xué)生,并按照年齡降序排序,若有年齡相同的則以創(chuàng)建時(shí)間進(jìn)行升序排序scores
SELECT * FROMt_user_customerWHERE sex ='0' ORDER BY age DESC ,create_time ASC;
-- 33查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行降序排序取前10條記錄;
SELECT * FROMt_user_customerWHERE age>19 ORDER BY customer_id LIMIT 0,10;
-- 34查詢出年齡最大的男同學(xué)
SELECT * FROMt_user_customerWHERE sex ='0'ORDER BY age DESC LIMIT 1 ;
SELECT * FROMt_user_customerWHERE age =(SELECT age FROMt_user_customerWHERE sex ='0' ORDER BY age DESC LIMIT 1);
8.limit :
- 只能用于mysql 使用
- 查詢結(jié)果以0位起始序號
- limit -n,m-n代表起始位置-m代表展現(xiàn)m條數(shù)據(jù)
-- 33查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行降序排序取前10條記錄;
SELECT * FROMt_user_customerWHERE age>19 ORDER BY customer_id LIMIT 0,10;
7.distinct去重

8.group by 分組
聚合函數(shù): 統(tǒng)計(jì)(count)、求和(sum)、平均值(avg)、最大(max)最小(min)
8.1查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行升序排序;
SELECT * FROM t_user_customer WHERE age >19 ORDER BY customer_id ASC;
8.2 查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行降序排序;
SELECT * FROM t_user_customer WHERE age >19 ORDER BY customer_id DESC;
9.having 對聚合函數(shù)過濾只能用having

9.1 統(tǒng)計(jì)出每門課的平均成績
SELECT cno ,AVG (degree)FROM
scores GROUP BY cno ;9.2統(tǒng)計(jì)出每門課的最大成績
SELECT cno ,MAX(degree) FROM
scores GROUP BY cno ;-- 40統(tǒng)計(jì)出每門課程的總?cè)藬?shù)
SELECT cno ,COUNT(sno)FROM
scores GROUP BY cno;
-- 41統(tǒng)計(jì)出選修人數(shù)少于2人的課程
SELECT cno,COUNT(cno) FROM scores GROUP BY cno HAVING COUNT(cno) < 2;
-- 42.統(tǒng)計(jì)出成績不及格的學(xué)生
SELECT sno ,MIN(degree) FROM scoresGROUP BY sno HAVING MIN(degree) < 60;
-- 43 統(tǒng)計(jì)出全部成績都不及格的學(xué)生
SELECT sno ,MAX(degree) FROM scoresGROUP BY sno HAVING MAX(degree) < 60;

- 查詢出年齡大于19歲的所有學(xué)生并以序號進(jìn)行降序排序取前10條記錄;
SELECT * FROMt_user_customerWHERE age > 19 ORDER BY customer_id LIMIT 0,10;
-- 查詢出年齡最大的男同學(xué)
SELECT * FROM t_user_customer WHERE s