在我們對數據庫進行操作時,在建成表格後我們一般不進行修改,所以更多的操作是查詢。
對於一個表格,我們只想查詢它的部分列的內容,該怎麼做?
想讓我們看看原來的表格
#查詢表students的 id name 列的內容
select id,name from students;
當我們需要消除表中重複的值時:
#消除students表中gender的重複值
select distinct gender from students
#消除兩列重複的值
select distinct id,gender from students;
我們發現,gender列有重複行,造成這種結果的原因是什麼呢?
其實我們已經消除了重複行,儘管有gender列存在一致的行,但是它們的id列內容不重複。
所以在消除重複的操作時,消除的判斷是基於整個行的。
where語句
where 是對於行的篩選
where 後可以進行怎樣的判斷呢?
1.比較運算符
等於 =
大於 >
大於等於 >=
小於<
小於等於 <=
不等於 != 或 <>
例:
#查詢id大於等於2的同學
select * from students where id>=2
2.邏輯運算符
與 and
或 or
非 not
例:
#查詢id>=3的男同學【注】gender=0爲女 gender=1爲男
select * from students where id>=3 and gender=1;
3.模糊查詢
like
% 表示任意多個任意字符
_ 表示一個任意字符
例:
#查詢名字以奇開頭的學生
select * from students where name like '奇%';
這樣我們就可以查詢出name中以 “奇”開頭的同學。
我們可以通過 '奇_'查詢name以”奇“開頭,兩個字符的同學。
也可以通過’%奇%‘查詢name中包含”奇“字的同學。
例2:
#查詢name中包含’哈‘或者’奇‘開頭的學生
select * from students where name like '奇%' or name like '%哈%';
範圍查詢:
in 表示在一個非連續的範圍內
between 表示在一個連續範圍內
例:
#查詢id爲1和3的學生
select * from students where id in (1,3);
#查詢id=3至id=4的同學
select * from students wheere id between 3 and 4;
空判斷:
null 與 ’ ‘ 是不同的
判空 is null (不爲空爲 is not null)
例:
#更換另一個列表如下
#將表中的hobby列爲null的顯示出來
select * from student where hobby is null;
優先級
小括號,not,比較運算符,邏輯運算符
and 比 or 先運算,如果同時出現,想先執行or,需要加小括號