-- 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
-- 5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
-- 7、查询学过"张三"老师授课的同学的信息
方法二:
-- 8、查询没学过"张三"老师授课的同学的信息
-- 9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
-- 10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
-- 15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
-- 28、查询男生、女生人数
-- 42、查询每门课程成绩最好的前两名
-- 35、查询所有学生的课程及分数情况
(1)查询表中全部信息:
select * from 表名
(2)查询表中指定列的信息:
select 列1,列2 from 表名
(3)去重:
select distinct 列... from 表名
(4)拼接结果:
select concat(列1,列2) from 表名
(5)设置别名(注意:关键字as可以省略)
select 列 as 别名 from 表名
select 列 别名 from 表名
(6)条件查询:
select 列... from 表名 where 条件
条件中比较运算符:(等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <>)
(7)where 列 比较运算符 值
注意:字符串、日期需使用单引号括起来
(8)逻辑运算符(并且:and或&& 或:or 非:not或!)
where 条件1 逻辑运算符 条件2
where not 条件
(9)范围查询:
where 列 between 条件1 and 条件2 //列在这个区间的值where 列 not between 条件1 and 条件2 //不在这个区间where !( 列 between 条件1 and 条件2 ) //同样表示不在这个区间
集合查询(判断列的值是否在指定的集合中):
where 列 in(值1,值2) //列中的数据是in后的值里面的where 列 not in(值1,值2) //不是in中指定值的数据
null值查询(注意:列中值为null不能使用=去查询):
where 列 is null //查询列中值为null的数据
资料来源 网页链接
有时需要将表中的记录去掉重复后显示出来,可以用distinct关键字来实现,例如执行语句 SELECT * FROM user返回结果如下:
此时看到id=2,3的记录username字段相同,如果想查询所有不重复的username,可以执行如下:
SELECT distinct username FROM user
例如执行排序语句: SELECT * FROM user order by id asc得到三条升序的数据,如果想限制只显示2条,可以使用LIMIT关键字: SELECT * FROM user order by id asc limit 0,2。LIMIT后面跟着的表示起始偏移量和前N行记录,默认起始偏移量为0,所以这句话也可以写为: SELECT * FROM user order by id asc limit 2。 LIMIT经常和order by一起配合使用来进行分页显示。
聚合 *** 作的语法涉及下面几个参数:
示例:
表连接从大类上分为内连接和外连接。二者区别在于内连接只选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。
示例:
创建一个雇员表deployee,有五个人:
再创建一个部门表,有4个部门:
某些情况下,查询的条件是另外一个select语句的结果,这时用到子查询。子查询关键字有in,not in,= ,!=,exists,not exists等。
如执行 select * from deployee where deployee.dep_id in (select dep_id from department)也表示查询有部门的雇员。如果子查询记录数唯一,可以使用=代替in:
select * from deployee where deployee.dep_id in (select dep_id from department where dep_id = 'sale') 由于子查询只有一条记录,所有可以用等号
如果要求将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,需要使用union和union all关键字来实现。
union 和 union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果进行一次distinct,去除重复的记录。
示例:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)