mysql increment by 2_MySQL学习笔记(二)

MySQL普通查询

一般顺序:

select …聚合函数 from 表名

where …

group by …

having …

order by …

limit …;

1. 聚合函数

avg(字段名):该字段的平均值

max(字段名):该字段的最大值

min(字段名):该字段的最小值

sum(字段名):该字段所有记录的和

count(字段名):统计该字段记录的个数

eg1:找出表中攻击力最大值

mysql> select max(attack) from class_1;

eg2:找出表中记录了多少人,一般使用 id 获取

mysql> select count(id) from class_1;

eg3:找出攻击力大于200的英雄数量

mysql> select count(id) from class_1 where attack > 200;

2. group by

给查询结果进行分组

group by 后字段名必须要为 select 后的字段,查询字段和group by 后字段不一致,则必须对该字段进行聚合处理(聚合函数)。

eg1:计算每个国家的平均攻击力

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

eg2:查询所有国家的男英雄中,英雄数量最多的前2名的,国家名称及英雄数量

mysql> select country,count(id) as number from sanguo

mysql> where gender="m" group by country

mysql> order by number desc

mysql> limit 2;

3. having 语句

对分组聚合后的结果进行进一步筛选

having 语句通常与 group by 联合使用,having 语句存在弥补了 where 关键字不能与聚合函数联合使用的不足,where 只能操作表中实际存在的字段, having 操作的是聚合函数生成的显示列。

eg:找出平均攻击力大于105的国家的前2名,显示国家名称和平均攻击力

mysql> select country,avg(attack) as number from sanguo

mysql> group by country

mysql> having avg(attack)>105

mysql> order by avg(attack) desc

mysql> limit 2;

4. distinct 语句

不显示字段重复值

distinct 和 from 之间所有字段都相同才会去重, distinct 不能对任何字段做聚合处理,但可以对去重后的字段进行聚合操作。

eg1:表中都有哪些国家

mysql> select distinct country from sanguo;

eg2:查询表中名字国家唯一的值

mysql> select distinct name,country from sanguo;

eg3:计算一共有多少个国家

mysql> select count(distinct country) from sanguo;

5. 查询表记录时做数学运算

运算符 : - * / % **

eg1: 查询时显示攻击力翻倍

mysql> select name, attack*2 from sanguo;

eg2: 更新蜀国所有英雄攻击力 * 2

mysql> update sanguo set attack=attack*2 where country="蜀国";

索引概述

定义

对数据库表的一列或多列的值进行排序的一种结构(Btree 方式)

B 树特点:

全部节点均包含索引(id) 数据(‘Tom_0’)。

范围查询,从根节点遍历至指定数据。

B 树特点:

非叶子节点只保存索引。【树的宽度优于 B 树,从而降低了磁盘 IO】

叶子节点保存所有的索引和数据。

叶子节点之间相互连接形成链表结构。【范围查询】

优点

加快数据检索速度

缺点

占用物理存储空间 (/var/lib/mysql) 当对表中数据更新时,索引需要动态维护,降低数据维护速度

索引示例

cursor.executemany(SQL,[data1,data2,data3])

以此IO执行多条表记录操作,效率高,节省资源

1、开启运行时间检测

mysql> show variables like '%pro%';

mysql> set profiling=1;

2、执行查询语句(无索引)

mysql> select name from students where name='Tom99999';

3、查看执行时间

mysql> show profiles;

4、在name字段创建索引

mysql> create index name on students(name);

5、再执行查询语句

mysql> select name from students where name='Tom88888';

6、查看执行时间

mysql> show profiles;

索引分类

普通(MUL) and 唯一(UNI)

1、使用规则

1、可设置多个字段

2、普通索引 :字段值无约束,KEY标志为 MUL

3、唯一索引(unique) :字段值不允许重复,但可为 NULL,KEY标志为 UNI

4、哪些字段创建索引:经常用来查询的字段、where条件判断字段、order by 排序字段

2、创建普通索引 and 唯一索引

创建表时

create table 表名(

字段名 数据类型,

字段名 数据类型,

index(字段名),

index(字段名),

unique(字段名)

);

example

mysql> create table student_test (

mysql> id int primary key auto_increment,

mysql> name varchar(20),

mysql> phone varchar(20),

mysql> index(id), index(name), unique(phone)

mysql> );

在已有表中创建

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

查看索引

1、desc 表名;

–> KEY标志为:MUL 、UNI

2、show index from 表名\G;

删除索引

drop index 索引名 on 表名;

主键(PRI)and自增长(auto_increment)

使用规则

1、只能有一个主键字段

2、所带约束 :不允许重复,且不能为NULL

3、KEY标志(primary) :PRI

4、通常设置记录编号字段id,能唯一锁定一条记录

创建

创建表添加主键

来源:https://www.icode9.com/content-2-403651.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值