数据库管理命令汇总
1,查询所有数据库
show databeses;
2,创建数据库
create database day15 -- 指定默认字符集创建数据库 (day15为数据库名)
default character set utf8; -- 命令结束用;号(utf8位指定字符集)
3,查看数据的默认字符集
show create database day15 -- (day15为数据库名)
4,删除数据库
drop database day15;
5,修改数据库
alter database day15 default character set gbk;
--------------- 表管理 -------------
选择数据库 (user day15)
1,查看所有表
show tables;
2,创建表
create table student( -- student为表名
sid int, -- sid 为字段名 int 为字段类型
sname varchar(20), -- 20为类型长度
sage int
);
3,查看表结构
desc student;
4,删除表
drop table student;
5,修改表
1)添加字段
alter table student add column sgender varchar(2);
2)删除字段
alter table student drop column sgender;
3)修改字段类型
alter table student modify column remark varchar(100);
4)修改字段名称
alter table student change column sgender gender varchar(2);
5)修改表名称
alter table student rename to teacher;
---------- 增删改数据 --------------
-- 1.1增加数据
-- 插入所有字段。一定一次按顺序插入
insert into student values(1,'张三','男',20);
-- 注意不能少或者多字段值
insert into student values(2,'李四',20); -- 这样是错误的
-- 插入部分字段
insert into student(id,name)values(2,'李四');
-- 1.2修改数据
-- 修改所有数据(不建议使用)
update student set gender='女';
-- 带条件的修改(推荐使用)
update student set gender='男' where id=1; -- 新修改id 为1的学生,修改性别为男
-- 修改多个字段,注意:set字段名=值,字段名=值,.....
update student set gender='男',age=30 where id=2;
-- 1.3 删除数据
-- 删除所有数据(建议少用)
delete from student;
-- 带条件删除(推荐使用)
delete from student where id=2;
-- 另一种方式
-- delete from:可以全表删除 1)可以带条件删除 2)只能删除表的数据,不能删除表的约束 3)使用delete from 删除的数据可以回滚(事物)
-- truncate table:可以删除全表 1)不能带条件删除 2)既可以删除表的数据,也可以删除表的约束 3)使用truncate table删除的数据不能回滚。
truncate table student;
--------------- 查询数据 ----------------
1、查询所有列
select * from student;
2、查询指定列
select id,name,gender from student;
3、查询时添加常量列
-- 需求:在查询student表时添加一个班级列,内容为"java就业班"
select id,name,gender,age,'java就业班'as'年级' from student;
4、查询时合并列
-- 需求:查询每个学生的servlet和jsp的总成绩
select id,name,(servlet+jsp)as'总成绩'from student;
-- 注意:合并列只能合并数值类型的字段。
select id,(name+servlet)from student; -- 这样做是错误的
5、查询时去除重复记录(distinct)
-- 需求:查询学生的性别 男 女
select distinct gender from student;
-- 另一种语法
select distinct(gender) from student;
-- 需求:查询学生所在的地区
select distinct address from student;
6、条件查询(where)
--1) 逻辑条件:and(与) or(或)
-- 需求:查询Id为2,且姓名为李四的学生
select * from student where id=2 and name='李四';-- 交集
-- 需求:查询id为2,或者姓名为张三的学生
select * from student where id=2 or name='张三';-- 并集
-- 2)比较条件:> < >= <= <>(不等于) between and (等价于>=且<=)
-- 需求:查询servlet成绩大于70分的学生
select * from student where servlet>70;
-- 需求:查询jsp成绩大于等于75,且小于等于90分的学生
select * from student where jsp>=75 and jsp<=90;
-- 另一种语法
select *from student where jsp between 75 and 90; -- (包前包后)
-- 需求:查询性别不为男的学生
select * from student where gender<>'男';
3)判空条件(null 空字符串):is null/is not null/='' /<>''
-- 需求:查询地址为空的学生(包括null 和空字符串)
-- null vs 空字符串
-- null:表示没有值
-- 空字符串:有值
--判断null
select * from student where address is null;
-- 判断空字符串
select * from student where address='';
select * from student where address is null or address=''; -- (包括null和空字符串)
-- 需求:查询有地址的学生(bubaokuo null和空字符串)
select * from student where address is not null and address<>'';
4)模糊条件:like
-- 通常使用一下替换标记:
-- %:表示任意个字符
-- _:表示一个字符
-- 需求:查询姓张的学生
select * from student where name like '张%';
-- 需求:查询姓'李',且姓名只有两个字的学生
select * from student where name like '李_';
------------------聚合查询---------------------------
-- 聚合查询(使用聚合函数的查询)
-- 常用的聚合函数: sum() avg() max() min() count()
-- 需求:查询学生的servlet的总成绩(sum():求和函数)
select sum(servlet) as 'servlet总成绩' from student;
--需求: 查询学生的servlet平均分
select avg(servlet) as 'servlet平均分' from student;
--需求:查询当前servlet最高分
select max(servlet) as 'servlet最高分' from student;
--需求:查询最低分
select min(servlet) as 'servlet最低分' from student;
--需求:统计当前有多少学生(count(字段))
select count(*) from student;
select count(id) from student;
-- 注意:count()函数统计的数量不包含null的数据
-- 使用count 统计表的记录数,要使用不包含null值的字段
select count(age) from student;
-------------分页查询------------------------
-- 分页查询(limit 起始行,查询几行)
-- 起始行从0开始
-- 分页:当前页 每页显示多少条
-- 分页查询当前页的数据的sql:select * from student limit(当前页-1)*每页显示多少条数据,每页显示多少条;
-- 需求:查询第1,2条记录(第一页的数据)
select * from student limit 0,2;
-- 需求:查询第3,4条记录(第二页的数据)
select * from student limit 2,2;
-- 查询 第5,6条记录(第3页的数据)
select * from student limit 4,2;
-- 查询第7,8 条记录(第四页的书)
select * from student limit 6,2;
----------------查询排序-------------------
-- 查询排序(order by)
-- 语法: order by 字段 asc/desc
-- asc:顺序,正序。数值:递增,字母:自然顺序(a-z)
-- desc:倒序,反序。数值:递减,字母:自然反序(z-a)
--默认情况下,按照插入记录顺序排序
select * from student;
--需求:按照id顺序排序
select * from student order by id asc;
select * from student order by id; -- 默认正序
select * from student order by id desc; -- 反序
-- 注意:多个排序条件
--需求:按照servlet正序,按照jsp的倒序
select * from student order by servlet asc,jsp desc;
------------------分组查询-----------------------
---分组查询(group by)
-- 需求:查询男女的人数
-- 预期结果:
-- 男 3
-- 女 2
1)把学生按照性别分组(group by gender)
2)统计每组的人数(count(*))
select gender,count(*) from student group by gender;
--------------------分组查询后筛选------------
-- 需求:查询总人数大于2的性别
-- 1)查询男女的人数
-- 2)筛选出人数大于2的记录(having)
-- 注意:分组之前条件使用where 关键字,分组之后条件使用having关键字
select gender,count(*) from student where group by gender having count(*)>2;
总结:
mysql基础
1)mysql数据库作用:管理数据
2)mysql存储结构:
数据库: 管理数据库(CRUD)
表: 管理表(CRUD)
数据: 管理数据
增删改:
查询:
12种查询(单表查询)