查詢記錄
select*from 表名 [where 條件];
eg:select*from students;//查詢 students 表中所有記錄,所有字段的值都顯示出來(lái)
select field1,field2,...fieldn... from 表名 [where 條件];
eg:select id,name,age from students;//查詢 students 表中所有記錄, 只顯示出 id困檩,name,age三個(gè)字段的值
1.“*”表示將所有的字段都顯示出來(lái)
2.用逗號(hào)分割,列出需要顯示的字段
查詢不重復(fù)的記錄
select distinct 字段 from 表名;
eg: select distinct name from students;//查詢名字不相同的學(xué)生;
select distinct name,age from students;//查詢名字和年齡同時(shí)不同的學(xué)生
1.distinct必須放在最開(kāi)頭
2.distinct只能使用需要去重的字段進(jìn)行操作。 ----也就是說(shuō)我sidtinct了name,age兩個(gè)字段陈症,我后面想根據(jù)id進(jìn)行排序,是不可以的震糖,因?yàn)橹荒躰ame,age兩個(gè)字段進(jìn)行操作.
3.distinct去重多個(gè)字段時(shí)录肯,含義是:幾個(gè)字段 同時(shí)重復(fù) 時(shí)才會(huì)被 過(guò)濾。
條件查詢
select 字段 from 表名 where 條件;
eg:select * from student where sex='男' and age>20; //查詢性別是男吊说,并且年齡大于20歲的人论咏。
where后面的條件可以用>、<颁井、>=厅贪、<=、!=等多種比較運(yùn)算符雅宾,多個(gè)條件之間可以用or养涮、and等邏輯運(yùn)算符
排序和限制
排序
select * from 表名 [where 條件] [ order by field1 [desc/asc],field2 [desc/asc]... ];
eg:select *from student order by age desc;//查詢學(xué)生表并按年齡降序排列。
1.desc 降序排列眉抬,asc 升序排列
2.order by 后面可以跟多個(gè)不同的排序字段贯吓,每個(gè)排序字段都可以有不同的排序順序。
3.如果排序字段的值一樣蜀变,則相同的字段按照第二個(gè)排序字段進(jìn)行排序悄谐。
4.如果只有一個(gè)排序字段,則字段相同的記錄將會(huì)無(wú)序排列库北。
限制
限制
select ... [limit 起始偏移量,行數(shù)];
eg:select * from student order by mark desc limit 5;//取出成績(jī)前五名的學(xué)生(省略了起始偏移量爬舰,此時(shí)默認(rèn)為0)
1.默認(rèn)情況下,起始偏移量為0贤惯,只寫(xiě)記錄行數(shù)就可以洼专。
聚合
select 字段 fun_name from 表名 [where 條件] [group by field1,field2...] [with rollup] [having 條件];
1.fun_name 表示要做的聚合操作棒掠,也就是說(shuō)聚合函數(shù)孵构,常用的有 : sum(求和)、count(*)(記錄數(shù))烟很、max(最大值)颈墅、min(最小值)蜡镶。
2.group by關(guān)鍵字 表示要進(jìn)行分類聚合的字段。比如要按照部門(mén)分類統(tǒng)計(jì)員工數(shù)量恤筛,部門(mén)就應(yīng)該寫(xiě)在group by 后面官还。
3.with rollup 是可選語(yǔ)法,表明是否對(duì)分類聚合后的結(jié)果進(jìn)行再匯總
4.having 關(guān)鍵字表示對(duì)分類后的結(jié)果再進(jìn)行條件過(guò)濾毒坛。
統(tǒng)計(jì)總?cè)藬?shù)
select count(1) from A;
統(tǒng)計(jì)各個(gè)姓的人數(shù)
select xing,count(1) from A group by xing;
既要統(tǒng)計(jì)各個(gè)姓的人數(shù)望伦,又統(tǒng)計(jì)總?cè)藬?shù)
select xing,count(1) from A group by xing with rollup;
統(tǒng)計(jì)人數(shù)大4的姓
select xing,count(1) from A group by xing having count(1)>4;
.表連接
內(nèi)連接和外連接
他們之間最主要的區(qū)別:內(nèi)連接僅選出兩張表中互相匹配的記錄,外連接會(huì)選出其他不匹配的記錄煎殷。
以下是員工表staff和職位表deptno:
內(nèi)連接
select staff.name,deptname from staff,deptno where staff.name=deptno.name;
外連接 分為左連接和右連接
左連接:包含所有左邊表中的記錄屯伞,甚至是右邊表中沒(méi)有和他匹配的記錄。
右連接:包含所有右邊表中的記錄豪直,甚至是右邊表中沒(méi)有和他匹配的記錄劣摇。
外連接(左連接):
select staff.name,deptname from staff left join deptno on staff.name=deptno.name;
外連接(右連接):
select deptname,deptno.name from staff right join deptno on deptno.name=staff.name;
在mybatis中模糊查詢:
concat() 函數(shù),是用來(lái)連接字符串弓乙。
精確查詢: select * from user where name=”zhangsan”
模糊查詢末融; select * from user where name like “%zhang%”(匹配所有有zhang的數(shù)據(jù)記錄)
在實(shí)際的使用中,條件是作為參數(shù)傳遞進(jìn)來(lái)的暇韧。 所以我們使用 concat() 函數(shù)
mybatis:
select * from user where name like concat(“%”, #{name},”%”)