mysql查询出非英文名字_MYSQL普通查询

MYSQL普通查询

一、聚合函数(聚合查询)

函数名

功能

avg(字段名)

求指定字段的平均值

max(字段名)

求指定字段的最大值

min(字段名)

求指定字段的最小值

sum(字段名)

求指定字段的记录和

count(字段名)

求指定字段的记录的个数

聚合函数使用语法:select 聚合函数1,聚合函数2 from 表名;

注意:select name,max(attack) from sanguo;聚合函数在默认情况下是不能与其他列一起做查询的

表名sanguo

id

name

attack

defense

gender

country

1

诸葛亮

102

3

m

蜀国

2

司马懿

110

60

m

吴国

3

貂蝉

120

33

w

蜀国

4

张飞

190

90

m

魏国

5

赵云

106

60

m

吴国

案例1:找出sanguo表中最大的攻击力值是多少

select max(attack) from sanguo ;

select max(attack) as '最大攻击力' from sanguo ;

案例2:表中共有多少个英雄?

select count(name) as number from sanguo;//如果name是null 查到的数据将不会有null的数据

select count(*) as '英雄个数' from sanguo;//*是这一行 一行都为NULL 才不算 不过不建议用

select count(id) from sanguo; //建议写id

案例3:找出蜀国英雄中攻击力大于200的英雄的数量

select count(attack) from sanguo where attack>200 and country='蜀国';

二、分组查询+聚合查询 -->group by

分组:分组列,值相同的数据会被划分到一组

语法: selsec 分组列,聚合函数(列)

from 表名

where 条件

group by 分组列,...

order by 字段名 (desc)

limit ...;

案例1.求三国表中每个国家的总攻击力是多少

select country,sum(attack) from sanguo group by country;

案例2.计算每个国家的总攻击力,平均攻击力,总防御力和平均防御力

select country,sum(attack) as '总攻击力',avg(attack) as '平均攻击力',sum(defense) as '总防御力',avg(attack) as '平均防御力' from sanguo group by country;

案例3.所有国家的男英雄中,英雄数量最多的前两名国家名称以及英雄的数量

select country,count(id) from sanguo where gender='m' group by country order by count(id) desc limit 2;

select country,count(id) as cnt from sanguo where gender='m' group by country order by cnt desc limit 2;

三、分组筛选 -->having

作用:分组后左组内筛选,配合着 group by 联用

语法: select 分组列,聚合函数(列)

from 表名

where 条件

group by 分组列,...

having 条件

order by 字段名(desc)

limit ...;

案例1:平均攻击力大于105的国家名称是什么

select country,avg(attack) from sanguo group by country having avg(attack)>105;

select country,avg(attack) as av from sanguo group by country having av>105;

四、distinct函数

作用:去重复

语法:select destinct(列) from 表;   //列就是字段

案例1:查询sanguo表中共有多少个国家\

select distinct(country) from sanguo;

五、查询表记录是做数学运算

运算符:+,-,*,/,%

案例1:查询时显示攻击力翻倍

select attack*2 from sanguo;

案例2:更新蜀国所有的英雄攻击力*2

update sanguo set attack=attack*2 where country='蜀国';

案例3:查询攻击力+100之后大于200的英雄的姓名和国家

select name,country from sanguo where attack +100>200;

六、索引

(1)什么是索引:对数据库表的一列或多列的值进行排序的一种结构

(2)优点:加快数据的检索速度

(3)缺点:

占用物理存储空间

对表中数据进行更新时,索引也会动态维护,会降低维护速度

(4)索引比对手段

查询系统时间

执行查询

查看系统时间

在 某列 上创建索引

查询系统时间

执行查询

查看系统时间

(5)索引的分类

1.主键索引

1.特点:增加主键之后,主键列自动会被增加索引

2.增加主键[索引]

已有表添加主键

alter table 表名 add primary key(id);

2.唯一索引

1.特点

可以有多个

唯一索引所在的列的值必须唯一

2.实施手段

1.创建表的时候指定唯一性

create table xxx(

id int primary key auto_increment,

phone varchar(20) unique,

)

2.对已有表创建索引

create unique index 索引名 on 表名(字段名);

案例:增加唯一索引

create unique index uq_name on sanguo(name);

insert into sanguo values(null,'赵云',158,65,'m','蜀国');//添加索引就添加不进去了

3.普通索引

1.实施手段

1.创建表同时指定普通索引

create table 表名(

id xxx xxxx,

country varchar(30) ,

index(country),

index(字段名),

)

2.对已有表增加普通索引

create index 索引名 on 表名(字段名);

案例:增加普通索引

create index mul_country on sanguo(country);

(6)取消索引

drop index 索引名称 on 表名;

(7)查询索引

show index from 表名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值