mysql中grade字段降序排列_MySQL

理论知识

修改数据表

1.修改表名

格式:Alter table 旧表名 rename [to] 新表名;

如下:Alter table tb_grade rename to grade;

2.修改字段名

格式:Alter table 表名 change 旧字段名 新字段名 新数据类型;

如下:Alter table grade change name username varchar(20);

3.修改字段的数据类型

格式: Alter table 表名 modify 字段名 数据类型;

如下:Alter table grade modify id int(20);

4.添加字段

格式:Alter table 表名 add 新字段名 数据类型

如下:Alter table grade add age int(10);

5.删除字段

格式:Alter table 表名 drop 字段名;

如下:Alter table grade drop age;

6.修改字段的排列位置

格式:Alter table 表名 modify 字段名 1 数据类型 first|after 字段名2

如下:Alter table grade modify username varchar(20) first;  //将username,该为表的第一个字             段

Alter table grade modify id int(20) after grade;//将id字段插入到grade字段后面

7.添加数据

格式:Insert into 表名(字段名1,字段名2,….)

values(值1,值2,……);

Create database school;

Use school;

Create table student(

id int(4),

name varchar(20) not null,

grade float

);

Insert into student(id,name,grade)values(1,’zhangsan’,98.5);

Insert into student(name,grade,id)values(’lisi’,95.5,2);

(2)为表的指定字段添加数据

Insert into 表名(字段1,字段2,…)values(值1,值2,…)

Insert into student(id,name)values(4,’zhaoliu’);

Insert into student(id,grade)values(5,97);//name字段没有指定默认值,并且添加了非null约束。

(3)同时添加多条记录

Insert into 表名[(字段名1,字段名2,…)]

values(值1,值2,…),(值1,值2,…),…

Insert into student values

(6,’lilei’,99),

(7,’hanmeimei’,100),

(8,’lihua’,50);

//如果指定字段,则可以只为指定字段添加值

8.更新数据

Update 表名

set 字段名1=值1[,字段名2=值2,…]

[where 条件表达式]

Update student set name=‘laozhang’,grade=50 where id = 1;

更新全部数据

如:Update student set grade = 80;

9.删除数据

1.Delete删除部分数据

删除部分数据是指根据指定条件删除表中的某一条或者某几条记录,需要使用where子句来指定删除记录的条件。

Insert into student values(11,’xiaowang’,80);

Select * from student where id = 11;

Delete from student where id = 11;

Delete from student where id > 5;

2.Delete删除全部数据

在delete语句中如果没有使用where子句,则会将表中的所有记录都删除

Select * from student;

Delete from student;

二 单表查询

1.在select语句中指定所有字段

Select 字段1,字段2,…from 表名

Create table student2(

id int(3) primary key auto_increment,

name varchar(20) not null,

grade float,

gender char(2)

); //插入一些数据

Select id,name,grade,gender from student2;

2.在select语句中使用星号(“*”)通配符代表所有字段

Select * from 表名;

Select * from student2

2.按条件查询

查询student2表中id为4的学生姓名:

Select  id,name from student2 where id = 4;

(1.)带in关键字

查询student表中id值为1、2、3的记录:

Select * from student2 where id in (1,2,3);

查询student表中id值不为1、2、3的记录:

Select * from student2 where id not in (1,2,3);

(2)带between and 关键字的查询

查询student表中id值在2~5之间的学生姓名

select * from student where id between 2 and 5;

(3)空值查询

查询student2表中gender为空值的记录

Select * from student where gender is null;

查询student2表中gender不为空值的记录

Select * from student where gender is not null;

(4)带distinct关键字的查询

查询student2表中gender字段的值,要求不能出现重复数据:

Select distinct gender from student2;

(5)带like关键字的查询

1.百分号(%)通配符

匹配任意长度的字符串,包括空字符串。

查找student表中name字段以字符“z”开头的学生id:

Select id,name from student2 where name like ‘z%’;

查找student表中name字段以字符“z”开头,以“n”结尾的学生id:

Select id,name from student2 where name like ‘z%n’;

查找student表中name字段包含字符“y”的学生id:

Select id,name from student2 where name like ‘%y%’;

2.下划线(_)通配符

查询student2表中name字段值以字符串“zhan”开始,以字符串“san”结束,并且两个字符串之间只有一个字符的记录:

Select * from student2 where name like ‘zhan_san’;

查询student2表中name字段值包含8个字符,并且以字符串“san”结束的记录:

Select * from student2 where name like ‘_____san’;

注意:查询student表中name字段值包括“%”的记录:(\%)

select * from student where like ‘%\%%’

(6)带and关键字的多条件查询

查询student2表中id字段值在1,2,3,4之中,name字段值以字符串“san”结束,并且grade字段值小于80的记录:

Select id,name,grade,gender from student2

where id in(1,2,3,4) and name like ‘%san’ and grade <80;

(7)带or关键字的多条件查询

查询student2表中id字段值小于3,或者gender字段值为“女”的学生姓名:

Select id,name,gender from student2 where id<3 or gender=‘女’;

Or和and一起使用的情况

注意:and的优先级高于or,因此当两者在一起使用时,应该先运算and两边的条件,再运算or两边的条件

查询student2表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为100的学生姓名:

Select name,grade,gender from student2 where gender = ‘女’ or gender = ‘男’ and grade=100;

三 聚合函数

实际开发中,经常需要对某些数据进行统计,例如统计某个字段的最大值,最小值,平均值等,为此,MySql中提供了一些函数来实现这些功能。

1.count()函数

Count()函数用来统计记录的条数

Select count(*) from 表名

2.sum()函数

Sum()是求和函数,用于求出表中某个字段所有值的总和

Select sum(字段名) from 表名;

3.avg()函数

Avg()函数用于求出某个字段所有值的平均值

Select avg(字段名) from 表名

4.max()函数

Max()函数是求最大值的函数,用于求出某个字段的最大值

Select max(grade) from 表名;

5.min()函数

Min()函数是求最小值的函数,用于求出某个字段的最小值

Select min(grade) from 表名;

四 对查询结果排序

从表中查询出来的数据可能是无序的,或者其排列顺序不是用户期望的。为了使查询结果满足用户的需求,可以使用order by对查询结果进行排序

Select 字段名1,字段名2,… from 表名 order by 字段名1, [asc|desc],字段名2 [asc|desc]…

1.查出student2表中的所有记录,并按照grade字段进行排序

2.查出student2表中的所有记录,使用参数asc按照grade字段升序排列

3.查出student2表中的所有记录,使用参数desc按照grade字段降序排列

4.查出student2表中的所有记录,按照gender字段的升序和grade字段的降序进行排列

五 分组查询

在对表中数据进行统计时,也可能需要按照一定的类别进行统计。在mysql中可以使用group by按某个字段或者多个字段中的值进行分组,字段中值相同的为一组:

Select 字段名1,字段名2,…from 表名

group by字段名1,字段名2,..[having 条件表达式]

1.单独使用group by分组

Select * from student2 group by gender;

每个分组只返回一条结果

2.group by和聚合函数一起使用

Group by和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中最大值、最小值、平均值等

将student2表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生:

Select count(*) ,gender from student2 group by gender;

3.group by和having关键字一起使用

Having关键字和where关键字的作用相同,都用于设置条件表达式对查询结果进行过滤,两者的区别在于,having关键字后可以跟聚合函数,而where不能,通常情况下having关键字都和group by 一起使用,用于对分组后的结果进行过滤。

将student2表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组:

Select sum(grade),gender from student2 group by gender having sum(grade)<300;i

六 使用limit限制查询结果的数量

查询student2表的前4条记录:

Select * from student2 limit 4;

七 为表和字段取别名

1.为表取别名

为student2表起一个别名,并查询student2表中gender字段值为“女”的记录

Select * from student2 as s2 where s2.gender=‘女’;

2.为字段取别名

查询student2表中的所有记录的name和gender字段值,并为这两个字段起别名为stu_name和stu_gender:

Select name as stu_name,gender as stu_gender from student2;

具体实践

2、创建如下表

0318af0d068a4087af2471abb735b055.jpg

a )插入数据,使表内容如下所示

fe7e8f85c44a4d0daca38f92e5d7628d.jpg

b)修改李四的SERVLET为65、JSP为73

d37bb8b14d2342dba7cf62f46f5d93ff.png

c)查询并显示ID、USERNAME这两个字段的值

1e9aa4120b8358e6e9e57b0f02426c81.png

d)将c的结果用下图所示别名显示

9ee787dc5e548b826ac5cb7d86243d73.png

e)查询并以如下结果显示

8f11331c43a47b8ea271ad8f0b933fb1.png

f)查询并显示每个学生的SERVLET和JSP的总成绩

a87a9d7b5486f1007fdd5b2166725920.png

g)查询并显示不重复的ADDRESS字段的值

7e7920576ce052b9b6e4e8ecf030f501.png

h)查询ID为2且姓名为李四的学生

7e7cb6167b5176c6c32542c352eed2e6.png

i)查询ID为2,或者姓名为张三的学生

489e363027fe0bf15d31fa85fb160b6e.png

J) 查询SERVLET成绩大于70分的学生,并显示所有字段信息

77f1e0224d52531ec29e5858a2661cd1.png

K)查询SERVLET 成绩大于60分小于80分的学生,并显示所有字段信息

7d7e0384df66878accfd1521d353596d.png

L)查询姓名不等于张三的记录,并显示所有字段信息

db54964ab4ed4513317847390717eb0a.png

M)查询ADDRESS为空的记录,并显示所有字段信息

da9fdfb6cf1aa6f63f9fcd1d5c65833d.png

N)查询ADDRESS不为空的记录,并显示所有字段信息

cb85f1ad8e4ca9595b898dae2f1d5cf4.png

O)查询李姓学生的所有信息

28c69e41852f2c2482dd02baf26ecc23.png

P)查询所有学生SERVLET总成绩

f6246e1d6f737237f86244ae86f83a90.png

Q)查询所有学生SERVLET的平均分

ce00f8916ce8ad0ab283b5239c6f00e2.png

R)查询SERVLET的最高分和最低分

3a16ab48aa6b2b0dad4f03d53b10d307.png

d6ddbd32823f778ffa867d2183d6a2f3.png

S)查询前两条记录

589fcd0ef944d9d3088ae068d03cc08a.png

T)将表按SERVLET由大到小显示

0baf665e87de67caa7b08c0e584b6c8e.png

U)将表按JSP小到大显示

228e33ae6d3d2374886d26df1fa01932.png

V)查询每个地区的人数

a84e0113818b002c66a18957df8f3cba.png

W)查询分组后区域人数超过1个人的区域

c572e96c205624d08d5daec11882f602.png

x)查询id是1,2,3的记录

6612b37cf8841c6eff4b7f89250f99ef.png

X���3x�t�ݬ�

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值