MySQL之where條件數據篩選


語法:

-- select * from 表名 where 條件;

測試數據:

-- 建表語句
create table `student` (
`sid` int(11) primary key auto_increment,
`sname` varchar(20) not null,
`sex` varchar(10) default null,
`isdelete` tinyint(1) default 0
)charset=utf8;

-- 插入數據
insert into `student`(`sid`, `sname`, `sex`) values
(0, '達摩', '男'),
(0, '典韋', '男'),
(0, '曹操', '男'),
(0, '鍾無艷', '女'),
(0, '孫悟空', '男'),
(0, '蘭陵王', '男'),
(0, '程咬金', '男'),
(0, '劉備', '男'),
(0, '劉禪', '男'),
(0, '孫尚香', '女'),
(0, '孫臏', '男');

比較運算符

  • 等於: =
  • 大於: >
  • 小於 :<
  • 大於等於: >=
  • 小於等於 :<=
  • 不等於: !=或者<>
-- 查詢sid小於3的學生信息
select * from student where sid<3;

執行結果:

邏輯運算符

  • 且:and
  • 或: or
  • 非:not
-- 查詞 sid 大於 8 並且 sex 為 男 的學生
select * from student where sid>8 and sex='男';

-- 查詢 sid 大於等於 10 或者 sid 小於 3 的學生;
select * from student where sid>=10 or sid<3;

-- 查詢 sid 不大於 3 的學生
select * from student where not sid>3;

執行結果:

優先級:not>and>or

注意:and 比 or 優先運算。如果同時出現並希望 or 優先運算,可以使用小括號。

模糊查詢----like

  • % 表示匹配一個或多個任意字符

    select * from student where sname like '孫%';
    select * from student where sname like '%無%';
    select * from student where sname like '孫%' or sname like '%無%';
    

執行結果:

  • _ 表示匹配一個任意字符

    select * from student where sname like '孫_';
    select * from student where sname like '孫__';  -- 兩個下划線
    

范圍查詢

  • 非連續范圍查詢:in

    select * from student where sid in(1,2,3,8);
    

    執行結果:

    注:假如沒有第 8 條數據,不會報錯,只是沒有返回值而已

  • 連續范圍查詢:between ... and ...

    select * from student where sid between 3 and 8;
    select * from student where sid between 3 and 8 and sex='男';
    

    執行結果:

    注 1:假如沒有第 8 條數據,不會報錯,只是沒有返回值而已

    注 2:between…and…和 and 同時運用,會優先計算 between…and…

空與非空

  • 空判斷:is null
  • 非空判斷:is not null
-- 查詢沒有性別信息的同學
select * from student where sex is null;

執行結果:

注意:null’ ’的不同。null就是空,在計算機中不占用任何內存;’ ’為空字符
串,需要占據一定內存。

聚合函數

請查看MySQL之函數一節

分組----group by

請查看group by分組查詢一節

分組后的數據篩選----having

請查看group by分組查詢一節

排序----order by

  • 語法:select * from 表名 order by 列1 asc/desc, 列2 asc/desc, ...;
  • 說明
    • 將數據按照列 1 進行排序,如果某些列 1 的值相同,則按照列 2 進
      行排序。
    • 默認按照從小到大的順序排序------升序 asc。
    • asc:升序;desc:降序。

示例:

select * from student
where sex='女'
order by sid desc;

執行結果:

獲取部分行----limit

  • 語法:select * from 表名 limit atart,count;
  • 說明:從start開始,獲取count條數據,start索引從0開始;當limit后只接收一個參數count時,則表示要獲取count條數據。

示例:

select * from student limit 1,5;

執行結果:

分頁

語法:select * from 表名 where 查詢條件 limit (curPage - 1)*pageSize,pageSize;

說明:curPage是當前第幾頁;pageSize是一頁多少條記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM