初始数据
创建表(要记得先选择好我们的数据库 use+数据库名)
create table student( studentno int(4) primary key not null auto_increment comment'学生编号', loginpwd varchar(20) not null comment'密码', studentname varchar(20) not null comment'学生姓名', sex varchar(10) not null comment'性别', gradeid int(10) not null comment'年级编号', phone varchar(20) not null comment'电话号码', address varchar(50) comment'地址', borndate datetime not null comment'生日', Email varchar(50) comment'邮箱', indentiyucard varchar(50) not null comment'身份证号' )
添加数据
insert into student values(1001,'1234','小唐','男',1,'13112312345','长沙市','2002-7-11','xaiotang@qq.com','320303198712031010'); insert into student values(1002,'1234','小喜','男',2,'13112312346','天津市','2021-2-3','xiaoxi@qq.com','320303198712031011'); insert into student values(1003,'1234','小欢','男',3,'13112312347','重庆市',now(),'xaiohuan@qq.com','320303198712031012'); insert into student values(1004,'1234','小黄','女',1,'13112312348','广州市','2002-2-14','xaiohuang@qq.com','320303198712031013');
添加好了之后,我们来看看吧
select * from student;
基本结构介绍
刚刚其实我们就已经出现过了【手动狗头】,只要你这个逻辑搞清楚,查询语句对你来说,just so so
由于刚刚我们是要查看所有表的信息,所以我们没有筛选条件,所以我们就没有写上去了
小实验
我们要去查找小唐的所有信息???
思路:
1.输出的话就一个*解决了
2.数据来源于我们的学生表
3.条件是名字等于小唐???(在这里有可能会有两个小唐,一般来说我们都是用主键(唯一确定的编号)也就是学号来查询,在这里为了方便理解就用的学生姓名)
select * from student where studentname='小唐';
如果只要小唐的姓名和小唐的住址???
select studentname 姓名,address 地址 from student where studentname='小唐';
在这里,为了让统计更加的直观,小唐用了别名,也就是我们在select 选择要显示的列的时候 空格来加上一个名字,这样就会显示我们的别名了!
升序和降序排列 order by
就是在我们的最后加上一句order by 列名 +desc(降序)/asc(升序)
我们让我们的学号单独降序输出试试看吧
select studentno from student order by studentno desc;
是不是很简单!
模糊搜索 like
有时候我们想要去查找,姓唐的人,但是我们又不知道他的具体信息,这个时候就引出我们的模糊搜索了!!!
- %
这个是我们模糊搜索的第一种用法,比如说我要查找姓黄的所有人
where studentname like '黄%'
也就是说,无论黄后面是什么字,只要你的第一个字是黄,那么我都会选择你
- _
这个是我们模糊搜索的第二种用法,比如说我要查找姓黄的所有人
where studentname like '黄_'
他的意思就相对简单多了,限定了,你加上黄只可以有两个字(是不是有点少,我们再来一个_就是三个字),还有这种写法的
where studentname like '_黄_'
就是说,你的倒数第二个字是黄就可以啦
分组 group by
我们一个需要统计一个列的种数,或者符合这个条件的行的种数,就比我们的年级分为1,2,3…,先在我需要查看有多少个年级,就需要用到我们的group by
select gradeid from student group by gradeid;
聚合函数 count(统计),max(),avg(),min(),sum()
MY SQL 为了更好的方便我们查找,很分析,就推出了我们的聚合函数,使用这些命令,我们可以更加方便的分析,举个例子,比如我现在需要统计我们刚刚分组,每一个对应年级的人数,直接在分组的基础上加上一个另外一个count就可以啦
select gradeid,count(gradeid) from student group by gradeid;
同时这些聚合函数也可也用于where,比如说我要输出我高于平均成绩的成绩,那么在where应该这样写,where 成绩>avg(成绩)