數(shù)據(jù)庫是mysql勇哗,使用的數(shù)據(jù)庫表名稱是my_student.
表的完整數(shù)據(jù)信息是:
完整語法是:
Select [select選項(xiàng)] 字段列表[字段別名]/* from 數(shù)據(jù)源 [where 字句] [group by子句 ][having 子句][order by 子句][limit 子句];
①[select選項(xiàng)]:
Select 選項(xiàng)包含:ALL(所有锯玛,默認(rèn))、distinct(去重)世囊。其中distinct針對的是查詢結(jié)果的整條記錄而言的。
select DISTINCT(sex) from my_student;
select DISTINCT(sex),name from my_student; 和 selectDISTINCT sex,name from my_student;結(jié)果是一樣的。
②[where 字句]:where是唯一一個從磁盤開始拿數(shù)據(jù)的時候就開始進(jìn)行判斷的條件,從磁盤取出一條記錄掏呼,開始進(jìn)行where判斷,判斷結(jié)果如果成立铅檩,那么取出結(jié)果保存到內(nèi)存憎夷,否則放棄。
select * from my_student where name = '哈哈1';
③[group by 子句 ]:分組子句昧旨,group by子句主要的作用是分組拾给,從而進(jìn)行統(tǒng)計(jì)操作富拗,而不是為了展示(展示的時候,只會展示分組記錄的第一條記錄)鸣戴,分組時,一般會結(jié)合使用count()粘拾、max()窄锅、min()、avg()缰雇、sum()函數(shù)入偷。
A、單子段分組:
selectc_id,count(*),max(height),min(height),avg(height),sum(age) from my_studentgroup by c_id ;
sql語句的意思是:my_student表以c_id進(jìn)行分組械哟,然后顯示分組后的每組的c_id名稱疏之、每組的總數(shù)、每組的最高暇咆、最低锋爪、平均身高和每組的年齡總和。
B爸业、多字段分組
select c_id,sex,count(*),max(height),min(height),avg(height),sum(age)from my_student group by c_id ,sex;
表示的含義是其骄,對整個表先按照c_id進(jìn)行分組,然后在此分組的基礎(chǔ)之上扯旷,然后每組再按照sex,進(jìn)行分組拯爽。
C、多字段分組(加上顯示每組的某一字段的所有數(shù)據(jù))
selectc_id,sex,count(*),max(height),min(height),avg(height),sum(age) ,GROUP_CONCAT(name)from my_student group by c_id ,sex;
④[having 子句]:having的作用類同where钧忽,而且having能做幾乎所有where能做的事情毯炮,而where卻不能做having能做的很多事情,主要是因?yàn)?/p>
where只能在磁盤提取數(shù)據(jù)的時候?qū)?shù)據(jù)進(jìn)行操作耸黑;而在內(nèi)存中對數(shù)據(jù)進(jìn)行g(shù)roup by分組之后的結(jié)果進(jìn)行處理桃煎,只能通過having。
selectc_id,count(*),max(height),min(height),avg(height),sum(age) from my_studentgroup by c_id having COUNT(*) >= 3;
⑤[order by 子句]:對數(shù)據(jù)進(jìn)行排序操作崎坊,根據(jù)某個字段進(jìn)行升序或者降序排序备禀。(進(jìn)行多字段排序的時候,先根據(jù)某一字段進(jìn)行潘旭奈揍,然后在排序好的內(nèi)部再按照某字段進(jìn)行排序)
A曲尸、單個字段的排序:
select * from my_student order by c_id;
B、多字段排序
select * from my_student order by c_id,sex;
⑥[limit 子句]:限制結(jié)果的數(shù)量男翰。Limit 偏移量? 記錄條數(shù);
A另患、select * frommy_student limit 2;
B、select * frommy_student limit 0,3;