一、单表查询
1.查表的数据
select * from stu; (*代表所有字段,stu是表名)
2.查询表中的姓名和学号字段
select NO,name from stu;(NO,name是字段名,stu是表名)
3.查询表中的专业
消除重复值distinct,要消除谁就在谁前面加上distinct
select distinct sdept from stu;(sdept是字段名,stu是表名)
4.查询时使用别名
别名就是显示名,方便查看,并不改变实际列名称
查询时修改NO为学号,name为姓名(其中as可省略)
select NO as 学号 , name as 姓名 from stu;
5.查询时修改年龄都加一岁,成绩加2(此时无列名)
select age+1 , score+2 from stu;
二、条件查询
1.相等条件查询
①:查询专业为计算机同学的情况
select * from stu where sdept = "计算机";
2.不相等条件查询
①:查询年龄大于18岁的同学信息
slelect * from stu where age > 18;
②:查询成绩大于70分,英语专业同学的姓名(多个条件查询+and)
select name from stu where score>70 and sdept="英语";
③:查询不是计算机专业的同学姓名、年龄
select name,age from stu where sdept != "计算机";
3.区间查询 between、 not between
①:查询年龄在18-20之间的同学信息
select * from stu where age between 18 and 20;
②:查询成绩不在60-80之间的同学信息
select * from stu where score not between 60 and 80;
4.确定具体值 in、not in
①:查询年龄是16、17岁学生的姓名、系别、年龄
select name,age,sdept from stu where age in (16,17);
②:查询不是计算机、英语、建筑系的学生姓名、性别
select name,xb from stu where sdept not in ("计算机","英语","建筑系");
三、模糊查询
1.like运算符查询
通配符:%代表多个任意字、_(英文状态下的下划线)代表单个字
①:查询姓王同学的信息(只知道姓王,但不知道几个字)
select * from stu where name like "王%"
②:查询两个字的名字,姓王同学的信息
select * from stu where name like "王_"
③:查询名字第2个字不是小的同学学号和姓名
select NO,name from stu where name not like "_小%";
四、空值查询
1.涉及空值的查询
①:查询没有成绩的同学
select * from stu where score is null;
2.多重条件查询
①:查询计算机或16岁上英语系的学生姓名、年龄、性别
select name,age,xb from stu where sdept="计算机" or age=16 and sdept="英语"
与(and)、或(or)、非(!)在同一句里的优先级:非>与>或
5.order by 语句
对查询结果按一个或多个属性列升序(asc),降序(desc)排列,若什么都不加,默认升序asc
①:查询英语专业学生的学号和成绩,查询结果按分数降低
select NO,score from stu where sdept="英语" order by score desc;
②:查询全体学生情况按性别降序
select * from stu order by xb desc;
③:查询全体学生情况,查询结果按所在系的名称升序,同一系按年龄降序
select * from stu order by sdept asc,age desc;