1.查看表
* 查看该数据库下有哪些表
show tables;
* 查看某个表的结构信息
desc 表名;
2.删除表
drop table 表名; //实际开发中基本不使用
3.修改表
1.添加列
alter table 表名 add 列名 类型(长度) 约束;
2.修改列类型,长度和约束
alter table 表名 modify 列名 类型(长度) 约束;
3.删除列
alter table 表名 drop 列名;
4.修改列名称
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
5.修改表名
rename table 表名 to 新的表名;
6.修改表的字符集
alter table 表名 character set 字符集;
1.添加表的记录
1.语法: (添加记录)
* 向表中插入某些列:
insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…)
* 向表中插入所有列:
insert into 表名 values (值1,值2,值3…);
1.1语法使用
* 添加某几列
insert into user (id,username,password) values (null,'aaa','123');
* 添加所有列
insert into user values (null,'bbb','123',23,'1993-09-01');
* 添加中文记录
insert into user values (null,'张三','123',23,'1993-09-01');
//将my.ini文件中的 [client] 下的字符集改为 gbk
//重启mysql服务
2.修改表的记录
1.语法
update 表名 set 列名=值,列名=值 [where 条件];
1.1语法的使用
* 修改某一列的所有值
update user set password = 'abc';
* 按条件修改数据
update user set password = 'xyz' where username = 'bbb';
* 按条件修改多个列
update user set password='123',age=34 where username='aaa';
3.删除表的记录
1.语法
delete from 表名 [where 条件]; //属于 DML 语句
1.1语法的使用
* 删除某一条记录
delete from user where id = 2;
* 删除表中的所有记录
delete from user;
4.查看表的记录
1.语法
select [distinct] *|列名 from 表 [条件];
1.1语法的使用
* 查询所有学生考试成绩信息
select * from exam;
* 查询所有学生的姓名和英语成绩
select name,english from exam;
* 查询英语成绩信息(不显示重复的值),关键字 distinct
select distinct english from exam;
* 查看学生姓名和学生的总成绩
select name,english+chinese+math from exam;
* 别名查询
select name,english+chinese+math as sum from exam;
2.条件查询
1.语法
使用where子句
* > , < , >= , <= , <> ,= // <> 为不等于
* like:模糊查询
* in:范围查询
* 条件关联:and , or ,not // not 为非
1.1语法的使用
* 查询李四学生的成绩:
select * from exam where name = '李四';
* 查询名称叫李四学生并且英文大于90分
select * from exam where name = '李四' and english > 90;
* 模糊查询
* like ‘李_’ :名字中必须是两个字,而且是姓李的。
* like ‘李%’ :名字中姓李的学生,李子后可以是1个或任意个字符。
* like ‘%四’ :名字中以四结尾的。
* like ‘%王%’ :只要名称中包含这个字就可以。
//字符/数字都行
例: select * from exam where name like '李%';
* 范围查询
* 查询英语成绩是69,75,89学生的信息
select * from exam where english in (69,75,89);
3.排序查询
1.语法
* 使用order by 字段名称 asc/desc; //默认为升序
*asc 升序查询
*desc 降序查询
1.1语法的使用
* 查询学生信息,并且按照语文成绩进行排序:
select * from exam order by chinese; //此处默认使用asc升序
* 查询学生信息,并且按照语文成绩 倒序 排序:
select * from exam order by chinese desc;
* 查询学生信息,先按照语文成绩进行倒序排序,
如果成绩相同再按照英语成绩升序排序
select * from exam order by chinese desc,english asc;
* 查询姓李的学生的信息,按照英语成绩降序排序
select * from exam where name like '李%' order by english desc;
4.分组统计查询
4.1聚合函数使用
1.求和
sum();
1.1语法的使用
* 获取所有学生的英语成绩的总和:
select sum(english) from exam;
* 获取所有学生的英语成绩和数学成绩总和:
select sum(english),sum(math) from exam;
* 查询姓李的学生的英语成绩的总和
select sum(english) from exam where name like '李%';
* 查询所有学生各科的总成绩:
//第一种
select sum(english)+sum(chinese)+sum(math) from exam;
//第二种
select sum(english+chinese+math) from exam;
//为了避免null值的影响,需使用 ifnull 函数
select sum(ifnull(english,0)+Chinese+math) from exam;
// 将null 当 零 使用;
// null加任何值都是null;
2.获取总记录数
count(); //括号内可以写任何参数,最好写表的主键
1.1语法的使用
* 获得学生的总数
select count(*) from exam;
* 获得姓李的学生的个数
select count(*) from exam where name like '李%';
3.获取最大值
max();
1.1语法的使用
* 获得数学成绩的最高分:
select max(math) from exam;
4.获取最小值
min();
1.1语法的使用
* 获得语文成绩的最小值
select min(chinese) from exam;
5.获取平均值
avg();
1.1语法的使用
* 获取语文成绩的平均值
select avg(chinese) from exam;
4.2分组查询
group by 字段名称;
1.1语法的使用
* 按商品名称统计,每类商品所购买的个数:
select product,count(*) from orderitem group by product;
* 按商品名称统计,每类商品所花费的总金额:
select product,sum(price) from orderitem group by product;
* 按商品名称统计,统计每类商品花费的总金额在5000元以上的商品
//where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条
//件过滤(分组后条件过滤)需要使用一个关键字having
select product,sum(price) from orderitem group by product having sum(price) > 5000;
* 按商品名称统计,统计每类商品花费的总金额在5000元以上的商品,
并且按照总金额升序排序
select product,sum(price) from orderitem group by product having sum(price) > 5000 order by sum(price) asc;
select product,sum(price) from orderitem group by product having(sum(price) > 5000) order by sum(price) asc;