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的意思是:在已经分组的查询结果中,再进行一个过滤。