mysql单表无条件查询

数据查询语句-单表无条件查询:

格式:

select [distinct] <选项>  [as <显示列名>]  [,<选项>  [as <显示列名>]  [,……] from <表名\视图名> [limit [M,]N]

前期准备:

1、使用select语句

(1)查询所有的数据列

用*表示所有的列:

select * from 表名;

(2)查询部分行和列

需要查询那些字段,把字段写出来

select sno from 表名;

(3)在查询中使用列(字段)的别名

As可改变结果集中列的名称(注:as可以省略)

select sname as 名字 from 表名;

(4)查询空值

在MySQL中,空值(Null)与空字符(’’)相同吗?答案是否定的。
举例说明:插入空字符串” ”;然后进行查询;
在SQL语句中采用”is null”或者”is not null”来判断列值是否为空值,查询为null值的用法;

Update 表名 set ssex="男" where ssex is null;

例1:查询student表里sbirthday为空值的记录;
例2:查询sc表里成绩为null的记录;

2、常用函数

在这里插入图片描述

例1:查询sc表所有学生的总成绩;

select sum(degree) from sc;

例2:查询sc表所有学生的平均成绩;

select avg(degree) from sc;

例3:查询student表总共有多少行记录;

select count(*) from student;

注:count(sno)代表sno这个字段总共出现多少行记录;
count(*)代表所有字段总共出现多少行记录

注:字段值为null值,这时候不计数;

例4:查询student表里名字没有重复的总共有多少行记录;

select count(distinct sname) from student;

例5:查询student表里每个人的出生年份,出生月日;
DATE_FORMAT(date,"%m%d");

select sname,DATE_FORMAT(sbirthday,"%m-%d") from student;

3、limit 的用法

limit m:表示显示前m行记录;
limit m,n:表示从m+1条记录开始显示,总共显示n条记录;
例1:显示student表里的第2行到第6行记录;

select * from student limit 1,5;

4、distinct的用法

Distinct用于去重
例1:显示student表里去重后的系别;
例2:显示student表里去重后的名字;
例3:求student表去重后的名字一共有多少个;

select distinct 系别 from student;
select distinct 名字 from student;
select count(distinct sname) from student;

题型总结

(1)在gradem库里查询teacher表里tno,tname字段,列名显示用中文;显示形式如下:(as 给字段重命名)

教师编号教师姓名
101李新
102小小
103小明
104小米
select tno as 教师编号,tname as 教师名字 from teacher;

(2)请在gradem库的sc表查询已经选修了课程的学生的学号,要求学号不重复显示;(及显示选修课程的学生去重后的学号)函数:distinct(用于字段去重)

select distinct sno from sc where cno is not null and cno !="";

(3)查询gradem库里sc表里成绩为空字符或者null的记录;

select * from sc where degree is null or degree="";

(4)在gradem库的sc表里,查询课程co2的平均成绩;
avg:实现求字段的平均值;

select avg(degree) from sc where cno="c02";

(4)在gradem库的sc表里,查询课程co2的总成绩;
sum:实现求字段的和;

select sum(degree) from sc where cno="c02";

(5)查询student表里每个学生的年龄(可能涉及到year函数以及DATE_FORMAT函数)

select year(now())-year(sbirthday)  #错误思想

逻辑判断:生日月日>当前时间月日:年的差值-1
生日月日<=当前时间月日:年的差值-0

例:2000年11月11日,2019-2000-1

select year(now())-year(sbirthday)-(DATE_FORMAT(sbirthday,"%m%d")>DATE_FORMAT(now(),"%m%d") from student;

学生:2000年11月11日生日:2019-2000=19还是18;

(6)显示sc表去重后的课程数有多少;(count 计数)

select count(distinct cno) from sc;

(7)显示teacher表里的第3行到第8行记录;(8-3+1)
limit m,n:从m+1行开始显示,总共显示n条记录;
limit 2,6;

select * from teacher limit 2,6;

(8)显示teacher表里的前9行记录;

select * from teacher limit 9;

单表无条件查询:
as 给字段起别名(as省略)
sum(字段的和) avg(字段的平均值) count(计数) year(date)返回日期的年份
DATE_FORMAT(date,format)(转化日期的格式)
limit : limit m;查看前m行
limit m,n:从m+1行开始显示,总共显示n条记录;
distinct:字段去重

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侬本多情。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值