1. 基本語法
SQL(Structured Query Language)結(jié)構(gòu)化查詢語言,通過SQL,我們就可以查詢數(shù)據(jù)庫中的數(shù)據(jù),而數(shù)據(jù)再數(shù)據(jù)庫中又是以表的形式保存的,所以SQL查詢,主要就是對(duì)表進(jìn)行查詢。
SQL的語法就和學(xué)習(xí)英語的語法、漢語拼音一樣,滿足給定的套路,去使用就可以了。
當(dāng)我們拿到了數(shù)據(jù)庫的連接信息,連接到一個(gè)數(shù)據(jù)庫上,我們就可以開始寫SQL了。
簡單介紹客戶端Navicat的使用
這一個(gè)一個(gè)圓柱形的,就是一個(gè)數(shù)據(jù)庫實(shí)例,下面那些電子表格圖標(biāo)的就是表,數(shù)據(jù)就存儲(chǔ)在表中。
使用Navicat查看表結(jié)構(gòu)信息,介紹下表、字段、注釋等
select
下面,我們來看看,怎樣查看一張表的數(shù)據(jù);SQL的語法呢,就好比是一個(gè)公式,初學(xué)的話我們?nèi)ヌ子镁涂梢粤恕?/p>
SELECT 列名稱 FROM 表名稱
或者
SELECT * FROM 表名稱
使用Navicat執(zhí)行查詢
-- 查看學(xué)生表數(shù)據(jù),指定字段
select s_id,s_name from t_student;
-- 查看所有字段
select *from t_student;
排序
排序是很常用的功能,我們想要對(duì)結(jié)果集進(jìn)行指定的排序,就要使用order by
order by 字段名
默認(rèn)升序,可以使用desc降序排列
-- 學(xué)生ID降序排列
select *from t_student order by s_id desc;
多字段排序
-- 班級(jí)ID升序排列,班級(jí)ID一樣的按學(xué)生ID降序排列
select *from t_student order by c_id,s_id desc;
limit
指定返回記錄的數(shù)目
我們上面,都是查詢一張表所有的數(shù)據(jù),有的時(shí)候表的數(shù)據(jù)量很大,或者我們只想看看排名前3的數(shù)據(jù),我們就可以使用limit
-- 學(xué)生ID降序排列,取前3條記錄
select *from t_student order by s_id desc limit 3;
where
前面,我們可以查看一張表的所有數(shù)據(jù)、做排序、然后只取前幾行,實(shí)際使用時(shí),一定會(huì)有這樣的需求,比如我們只想看學(xué)生ID是105的記錄,就需要使用where了,它可以對(duì)數(shù)據(jù)進(jìn)行過濾。
SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值
-- 查看學(xué)生ID是105的學(xué)生信息
select *from t_student where s_id = 105;
-- 查看學(xué)生ID不是105的其他學(xué)生信息
select *from t_student where s_id <> 105 ;
-- 查看學(xué)生ID在103和108之間的學(xué)生信息
select *from t_student where s_id between 103 and 108;
這里還有一個(gè)操作符很常用,就是 in 和 not in。
in 表示在多個(gè)值中存在,加上not則表示不存在
-- 查看學(xué)生ID是103,105,,107的學(xué)生信息
select *from t_student where s_id in (103,105,107);
-- 查看學(xué)生ID不在102中的其他學(xué)生信息
select *from t_student where s_id not in (102);
like
匹配字符串,像‘xxxx’一樣
%: 表示任意個(gè)或多個(gè)字符
_:表示任意單個(gè)字符
-- 查看喜歡吃肉的學(xué)生信息
select *from t_student where s_hobby like '吃肉%';
select *from t_student where s_hobby like '%吃肉%';
and 和 or
上面,我們都是一個(gè)單獨(dú)的過濾條件,實(shí)際上,我們的會(huì)有各種各樣的情況,需要同時(shí)滿足多種過濾條件,這就用到了 and 和 or。
AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。
如果第一個(gè)條件和第二個(gè)條件都成立,則 AND 運(yùn)算符顯示一條記錄。
如果第一個(gè)條件和第二個(gè)條件中只要有一個(gè)成立,則 OR 運(yùn)算符顯示一條記錄。
-- 查看班級(jí)ID是901的所有男生信息
select *from t_student where c_id=901 and s_gender=0;
-- 查看班級(jí)ID是901或者s_id大于107的學(xué)生信息
select *from t_student where c_id=901 or s_id > 107;