MySql教程

Mysql日常

本文主要是介绍Mysql日常,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

修改表

alter table 原表名 rename to 新表名

alter table add 新字段名 新字段数据类型(约束条件)     增加表中字段

alter table add 新段名 新字段数据类型 (约束条件)first          在表的第一列添加一个字段

alter table add 新字段名 新字段数据类型(约束条件)after 字段名;     在表的指定列后添加字段

alter table 表名 drop column 字段名     删除表中字段

alter table 表名  modify 字段名 新的数据类型

alter table 表名 change 原字段名 新字段名 新字段数据类型      修改表中字段名

alter table  表名 modify 字段1 字段1数据类型 first/after 字段    修改字段的排列位置

(fist表示在字段2前面,after表示在字段2后面)

 

查询

select后跟 字段表达式

from后跟  表名

where后跟  筛选条件

 

select * from 表名 where 性别=1 and 年龄=1

#同时满足性别=1,且年龄=1

 

select * from 表名 where 日期 between '2001-1-1' and '2005-1-1';       * and *同时满足两个* //* or *满足一个*即可

查询日期在2001-1-1到2005-1-之间的信息

 

select * from 表名 where 成绩 in (50,60,80);

查询成绩是50,60,80的信息

 

select * from 表名 where 成绩 not in (50,60,80);

查询成绩不是50,60,80的信息

 

select 性别,学号 as 学生ID,姓名 from 表名 where 学习姓名 like '张%‘;

#as   可理解为:用作、当成,作为;一般是重命名列名或者表名;查询结束,把学号改为学生ID显示。

查询学生姓名以张开头的信息,并只显示性别,学号.....姓名等这几列

 

select 性别,学号 as 学生ID,姓名 from 表名 where 学生姓名 like '张_‘ or 学生姓名 like '李_‘ ;

显示两个名字且由张或离开头的信息

 

select * from 表名 where 备注 is null

查询表中备注是null的信息

 

select  学号,学生姓名,

--> case

--> when 总学分 is null then '0'

--> when 总学分 <43 then '1'

--> else '5'

--> end as 等级

--> from 表名

--> where 专业='计网';

若总学分为null替换为0,为<43替换为1,剩下的替换为5,查询结果显示在等级一列。

#Case具有两种格式。简单Case函数和Case搜索函数。 

--简单Case函数 
CASE sex 
         WHEN '1' THEN '男' 
         WHEN '2' THEN '女' 
ELSE '其他' END 
--Case搜索函数 
CASE WHEN sex = '1' THEN '男' 
         WHEN sex = '2' THEN '女' 
ELSE '其他' END 

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 

 

select distinct 专业名 from 表名;

对表消除,专业名的重复行

 

select * from 表名 where 总学分 > 50 order by 总学分;

总学分>50且按升序排列 

 

统计查询

常用的聚合函数

1 count : 行数

2 sum : 总和 (求总和)

3 avg : 平均值 

4 max 最大值

5 min : 最小值

 

GROUP BY 对指定的规则对数据进行分组

有group by不一定有having,但有having必须有group by

有group by不一定有having,但有having必须有group by

having必须跟在group by之后,实现对分组结果的筛选

where与having都有筛选的作用,但作用对象不同

当group by与聚合函数配合使用时,功能为分组后计算

当group by与having配合使用时,功能为分组后过滤、

 

count(*) 查询这字段里的从数量

select count(*) as 总数量 from 表名;

 

select count(*) as 5分以上 from kc where 学分>5

 

select max,min,avg from xs;

max最高分,min最低分,avg总学分

 

select sum(成绩) from 表名 where 学号=’12‘;

统计12学生的总成绩;sum总和

 

select 性别,count(*) from 表名 group by 性别;

统计性别男女分别的总人数

 

select 性别,count(*) as 人数 from 表名 where 出生日期>’1888-8-8‘ group by 性别;

统计1888年后出生的男女生各有多少人

 

select 学号,avg(成绩) from 表名 group by 学号;

统计每个学生的平均成绩

 

select 课程号,avg(成绩),count(*) from 表名 group by 课程号;

统计被选修的各门课程的平均成绩和该课程的总人数

 

select 课程号,avg(成绩),count(*) from 表名 group by 课程号 having avg(成绩) >=80

统计被选修的各门课程中平均成绩在80分以上的课程选修该课程人数

 

select group_concat(学号) as 选1课程的学号 from 表名 where 课程号=1;

查询选修了1课程的学生的学号,显示在一行,中间用逗号隔开

 

 

 

这篇关于Mysql日常的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!