基礎實用的數據庫語句總結
假設有三張表:學生表student,教師表teacher,學校表school,三張表分別有字段:學生姓名sname、年齡sage、性別sgender、所屬教師steacher、所屬學校sschool,教師姓名tname、年齡tage、性別tgender、所屬學校tschool,學校名字schoolname、地址address等字段
一、單表查詢:不含任何條件的查詢語句
select * from student (查詢student表中所有學生的所有信息)
select sname from student (查詢student表中所有學生的名字)
select sname,sage,sgender from student (查詢student表中所有學生的名字、年齡、性別三個信息)
二、單表查詢:根據條件進行搜索
select * from student where sname='張三' (查詢student表中,姓名爲“張三”的所有學生的所有信息,可能有多個學生信息,因爲可能會有多個學生名字叫“張三”)
select * from student where sname in ('張三','李四','王五') (查詢student表中學生姓名爲“張三”或者是“李四”或者是“王五”的學生的所有信息)
select * from student where sage between 15 and 20 (搜索年齡在15-20之間的學生的信息,不同數據庫可能效果不一樣:有些數據庫包含了15和20 ,有些不包含,有些只包含15不包含20,有些包含20不包含15)
select * from student where sname like '%三'% (搜索名字包含了‘三’這個字符的學生信息)
三、多表聯合查詢
select * from student,teacher where sname='張三' and steacher=tname (搜索學生“張三”以及張三所屬的教師的信息,最後會返回sname、sage、sgender、steacher、sschool、tname、tage、tgender、tschool)
select * from student left join teacher on steacher=tname (無論教師表中是否有教師匹配學生表的所屬教師,一定會返回學生表中的信息)
select sname、tname from (select * from student,teacher where steacher=tname) midtablename(子查詢,子查詢需要注意的子表必須有單獨的表明,比如midtablename,如果沒有命名會報錯)
四、實用查詢語句
select name,
sum(math) as math,
sum(english) as english,
sum(chines) as chines
from (select name,
case subject1 when '數學' then 1 else 0 end as math,
case subject2 when '英語' then 1 else 0 end as english,
case subject3 when '語文' then 1 else 0 end as chines
from table where name='%三%'
) midtablename
group by name
(例子說明:小學6年,12個學期,假設每學期都有數學和語文,從3年級開始纔有英語,那麼對於一個學生而言,他就學了12次數學和語文,學了6次英語,這個SQL語句就統計了學生在6年12個學期中,所學的數學、英語、語文的次數,以學期爲粒度進行統計)
select name,
case when grade<60 then '不及格'
when grade>60 then '及格'
end as result from table
(搜索學生信息並顯示學生最後結果是否及格)
select * from table order by lastTime desc limit 1 (取出表中時間最近的一條記錄,通過lastTime進行降序排序,再限制記錄條數爲1,達到取出lastTime最近的一條記錄)
五、刪除語句
delete from table where ……
六、插入語句
insert into table values (
'張三',
15,
'男'
)