MySQL 学习笔记_01(实例实操)
- 登录
mysql -u root -p
- 显示数据库
show databases;
- 新建一个数据库
create databases DemoOne;
-
show
一下
- 使用数据库
-
use DemoOne
DemoOne用做演示
- 添加表
- 比如我现在要做一个学生的数据库。应该会有<学生序号><学生学号><学生姓名><学生年龄><学生性别><学生电话号码>
create table student_info(
id int NOT NULL,
number bigint NOT NULL,
name varchar(32) NOT NULL,
age int NOT NULL,
sex varchar(32) NOT NULL,
phone bigint
) DEFAULT CHARSET=utf8;
- 查看表
- 需要在选择数据库后才能够查看选择的数据库中的表,如果不确定自己是否选择了数据库。用
select database();
来查看。 show tables;
- 如果要查看表的结构,可以用
desc [表名]
。 - 可以看见我上面的表中的数据age的数据格式出了问题,应该是int的因为现在还没有任何数据,可以删掉重建。
drop table student_info;
之后再新建一个即可。- 修改的话可以用
alter table student_info modify age INT;
- 插入数据
--insert 的格式
insert into [表名]
(字段1,字段2,字段3,....,字段n)
values
(值1,值2,值3,.....,值n) --插入一个数据
(值1,值2,值3,.....,值n) --如果需要插入多个数据,就这样
(值1,值2,值3,.....,值n)
(值1,值2,值3,.....,值n); --不要忘记分号
- 随便插入一些数据
insert into student_info
(id,number,name,age,sex,phone)
values
(1,12345601,"张一一",20,"男",10088),
(2,12345602,"李二二",20,"女",10011),
(3,12345603,"王三三",21,"男",10022),
(4,12345604,"周思思",19,"女",10033),
(5,13345609,"毛五五",21,"男",10055),
(6,12345610,"陈六",19,"男",10023);
- 查看之前插入的数据
select ... from [表名]
- 比如
select * from student_info;
- 注意这里的
*
代表选择了所有字段。 - 如果要单选的话可以改,查看自己想要查看的数据。
select name from student_info;
- 如果说数据太多了还可以加上
limit
来查看前几个或者从哪开始查看下面的哪几个
--limit 的用法
limit 4 -- 从0开始显示4个 (0,0+4=4]
limit 2 3 --从2开始显示3个 (2,2+3=5]
- 筛选数据
- 筛选数据,可以用where来做。也可以将where,理解为if
- 比如,我要查看性别为女的学生信息
select * from student_info where sex="女";
- 我要查看性别为女并且年龄大于19岁的
select * from student_info where sex="女" and age > 19;
- 我要找出这几个学生当中姓毛的同学
select * from student_info where name like "毛%";
- 操作数据
- 排序
- 通过年龄大小升序来排列
select * from student_info order by age;
- 通过年龄大小降序来排列
select * from student_info order by age desc;
order by
默认是升序,在后面加上desc
就可以设置为降序。
- 找出学号在12345601和12345608之间的学生
select * from student_info where number between 12345601 and 12345608;
- 分组查询
- 分组查询是将数据先进行分组,然后再进行操作
--分组用的是group by
select
...
from
...
group by
...
- 比如,我要不同性别的平均年龄
select sex,avg(age) from student_info group by sex;
- 那么如果我就是要查看女生的平均年龄,我不想查看男生的。
- 就需要使用到
having
select
sex,avg(age)
from
student_info
group by
sex
having
sex="女";
select sex,avg(age) from student_info group by sex having sex="女";
having
的意思是:在已经分组的查询结果中,再进行一个过滤。