基础实用的数据库语句总结
假设有三张表:学生表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,
'男'
)