语法 SQL对数据库的表进行操作 SQL创建表 查看表 查看某个数据库下的所有表 在test数据库中查看mysql数据库中的表 查看某个表的结构信息 删除表 修改表 添加列 修改列类型,长度和约束...删除列 修改列名称 修改表名 修改表的字符集 SQL对数据库表的记录进行操作 添加表的记录 添加中文记录 修改表的记录 修改某一列的所有值 按条件修改数据 按条件修改多个列 删除表的记录 删除某一条记录.../使用某一个数据库 语法 use 数据库名称; ---- 查看当前正在使用的数据库 语法 select database(); ---- SQL对数据库的表进行操作 SQL创建表 语法: creat...值2,值3..); 向表中插入所有列 insert inot 表名 values(值1,值2,值3...); 注意事项: 值的类型与数据库中表列类型一致 值的顺序与数据库中表列的顺序一致 值的最大长度不能超过列设置的最大长度...修改表的记录 语法: update 表名 set 列名=值,列名=值 [where 条件]; 注意事项: 值的类型与列的类型一致 值的最大长度不超过列设置的最大长度 字符串类型和日期类型要添加单引号
该索引对如下类型的查询有效: 全值匹配(和索引中所有列进行匹配) 匹配最左前缀(只使用索引的第一列) 匹配范围值 匹配列前缀(匹配某一列的值的开头部分) 精确匹配某一列并范围匹配另外一列 只访问索引的查询...在mysql中只有Memory引擎显示支持哈希索引 哈希索引的限制 只包含哈希值和行指针,而不包含字段值 不是按照索引值的顺序存储的,无法用于排序 不支持部分索引列匹配查找 只支持等值比较查询 访问哈希索引的数据非常快...扫描的行数对返回的行数的比率通常很小,一般在1:1和10:1之间。 扫描的行数和访问类型 在评估查询开销的时候,需要考虑一下从表中找到某一行的数据的成本。...的嵌套循环关联 优化特定类型的查询 优化count()查询 有两种不同的作用: 统计某个列的数量 统计行数 简单的优化 count(*)全表非常快,可以来加速一些特定条件的count查询 比如查询所有id...,并且是按照查找表中的某个列进行分组,那么通常采用查找表的标识列分组的效率会比其他列更好 优化group by with rollup 分组查询的一个变种就是要求mysql对返回的分组结果在做一次超级聚合
['b'].unique(): 查看某一列的唯一值 df.values: 查看数据表的值 df.columns: 查看列名 df.head(): 查看默认的前 10 行数据 df.tail():...查看默认的后 10 行数据 数据表清洗 df.fillna(value=0): 用数字 0 填充空值 df['pr'].fillna(df['pr'].mean()): 用列 pr 的平均值对 na...df.set_index('id') 按照特定列的值排序 df.sort_values(by=['age']) 按照索引列排序 df.sort_index() 如果 pr 列的值大于 3000 , group...为索引 df[:'2013']: 提取 2013 之前的所有数据 df.iloc[:3,:2]: 从 0 位置开始,前三行,前两列,这里的数据不同去是索引的标签名称,而是数据所有的位置 df.iloc..., np.sum,np.mean]): 对 city 进行分组,然后计算 pr 列的大小、总和和平均数 数据统计 数据采样,计算标准差、协方差和相关系数。
例如: 其中第一个数字是起始值,第二个数字是终止值,第三个数字是这个区间向量的个数 函数zeros(1,n):创建全零的向量 例如: 其中第一个数字是数组的行数,第二个数字是数组的列数。...函数ones(1,n):创建全1的向量 例如: 其中第一个数字是数组的行数,第二个数字是数组的列数。...rand(1,n):创建0~1之间的随机数的向量 例如: 向量的大小 Matlab提供两个函数来确定一般数组和特殊向量的大小:size()和length(). size():返回向量中的行的数量和列的数量...向量运算 算术运算 向量中的加减法运算 可以看见是对向量中每个元素进行加法运算,减法也一样 向量中的乘法、除法....,每列的最大值和每列的最小值 连接数组 看一个简单的例子 切片数组 对一个数组进行切片:A(对行索引,对列索引) 例子: 重塑数组 有些时候我们希望将某一维度的数组变形为另一种维度的需求
DataFrame既有行索引也有列索引,其中的数据是以一个或多个二维块存放的,而不是列表、字典或别的一维数据结构。...(3)获取DataFrame的值(行或列) 通过查找columns值获取对应的列。(下面两种方法) 通过索引字段ix查找相应的行。 (4)对列进行赋值处理。 对某一列可以赋一个标量值也可以是一组值。...也可以按columns(行)进行重新索引,对于不存在的列名称,将被填充空值。 对于不存在的索引值带来的缺失值,也可以在重新索引时使用fill_value给缺失值填充指定值。...obj.rank() (2)DataFrame数据结构的排序和排名 按索引值进行排列,一列或多列中的值进行排序,通过by将列名传递给sort_index. 5、缺失数据处理 (1)滤出缺失数据 使用data.dropna...(列从0开始计数) 6、汇总和计算描述统计 就是针对数组进行常用的数学和统计运算。大部分都属于约简和汇总统计。 其中有求和(sum)运算、累计(cumsum)运算、平均值(mean)等运算。
本文将主要介绍SQL中的聚合函数,并给出相应的语法和示例。一、聚合函数聚合函数是SQL中的一类特殊函数,它们用于对某个列或行进行计算,并返回一个单一的值作为结果。...SQL中常用的聚合函数包括:COUNT函数COUNT函数用于计算某一列中值的数量,可以用于任意数据类型的列,包括NULL值。...其基本语法如下:SELECT COUNT(column_name) FROM table_name WHERE condition;其中,column_name是要计数的列名,condition是筛选条件...例如,从students表中计算年龄小于18岁的学生的数量:SELECT COUNT(*) FROM students WHERE age < 18;SUM函数SUM函数用于计算某一列中值的总和,只能用于数值类型的列...) FROM sales;AVG函数AVG函数用于计算某一列中值的平均数,只能用于数值类型的列。
use [数据库名称]); 列和列之间用逗号隔开,列内用空格隔开; 创建表时,要根据需保存的数据创建相应的列,并根据要存储数据的类型定义相应的列类型。...truncate user_info_table(直接把数据清空掉) drop和delete的区别: drop是删除数据库、数据表、数据表中的某一列。 delete是删除某一行数据。...数据表的排序、聚合命令、分组 排序(order by) 使用order by子句,对查询结果进行排序。 order by 指定排序的列 asc(升序)/desc(降序)。...count(列名):只包括列名指定列,返回指定列的行数,在统计结果的时候,不统计列值为Null,即列值为Null的行数不统计在内。...count(distinct 列名):返回指定列的不重复的行数,在统计结果的时候,会忽略列值为NULL的行数(不包括空字符和0),即列值为NULL的行数不统计在内。
a_name','bname']] ,里面需要是一个 list 不然会报错增加一列df['new']=list([...])对某一列除以他的最大值df['a']/df['a'].max()排序某一列df.sorted_values...[‘b’].unique()查看某一列的唯一值df.values查看数据表的值df.columns查看列名df.head()查看默认的前 10 行数据df.tail()查看默认的后 10 行数据 数据表清洗...loc函数按标签值进行提取iloc按位置进行提取ix可以同时按标签和位置进行提取 具体的使用见下: df.loc[3]按索引提取单行的数值df.iloc[0:5]按索引提取区域行数据值df.reset_index...()重设索引df=df.set_index(‘date’)设置 date 为索引df[:‘2013’]提取 2013 之前的所有数据df.iloc[:3,:2]从 0 位置开始,前三行,前两列,这里的数据不同去是索引的标签名称...city 进行分组,然后计算 pr 列的大小、总和和平均数 数据统计 数据采样,计算标准差、协方差和相关系数。
5、略过行和列 默认的read_excel参数假定第一行是列表名称,会自动合并为DataFrame中的列标签。...Python提供了许多不同的方法来对DataFrame进行分割,我们将使用它们中的几个来了解它是如何工作的。...2、查看多列 ? 3、查看特定行 这里使用的方法是loc函数,其中我们可以指定以冒号分隔的起始行和结束行。注意,索引从0开始而不是1。 ? 4、同时分割行和列 ? 5、在某一列中筛选 ?...15、排序 对特定列排序,默认升序: ? 四、统计功能 1、描述性统计 描述性统计,总结数据集分布的集中趋势,分散程度和正态分布程度,不包括NaN值: ? 描述性统计总结: ?...五、数据计算 1、计算某一特定列的值 输出结果是一个系列。称为单列数据透视表: ? 2、计数 统计每列或每行的非NA单元格的数量: ? 3、求和 按行或列求和数据: ? 为每行添加总列: ?
动态初始化方式分为两种格式: 格式1:规则二维表:每一行的列数是相同的 //(1)确定行数和列数 元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n]; //其中,m:表示这个二维数组有多少个一维数组...)先确定总行数 元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][]; //此时只是确定了总行数,每一行里面现在是null //(2)再确定每一行的列数,创建每一行的一维数组...= 值; 5.3 数组的长度和角标 维数组的长度/行数:二维数组名.length 二维数组的某一行:二维数组名[行下标],此时相当于获取其中一组数据。...某一个元素:二维数组名[行下标][列下标],即先确定行/组,再确定列。...super T> c) :根据指定比较器产生的顺序对指定对象数组进行排序。
需要注意的是,在访问dataframe时,访问df中某一个具体元素时需要先传入行表索引再确定列索引。 2....# 更新df 的 行数值,可通过loc赋值的方式更新 df.loc['行label'] = pd.Series([1, 2, 3]) # 添加一个新列,直接使用= 进行赋值 df['运费'] = pd.Series...4. dataframe 相关算术运算 1).如果其中一个是数值,那么这个数值会和DataFrame的每个位置上的数据进行相应的运算。...2).参与运算的如果是两个DataFrame,有可能所有的行、列是一致的,那么运算时对应行列的位置进行相应的算术运算,若行列没有对齐,那么填值NaN。 3)....如果参与运算的一个是DataFrame,另一个是Series,那么pandas会对Series进行行方向的广播,然后做相应的运算。 4).
COUNT(*)表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是COUNT(*)。...除了COUNT()函数外,SQL还提供了如下聚合函数: 函数 说明 SUM 计算某一列的合计值,该列必须为数值类型 AVG 计算某一列的平均值,该列必须为数值类型 MAX 计算某一列的最大值 MIN 计算某一列的最小值...其实就是这张表变成了40行记录了,如果你有两张1万行记录的表,你去查询它,那么将导致表的记录变成了1亿。 连接查询 连接查询是另一种类型的多表查询。...连接查询对多个表进行JOIN运算,简单地说,就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上。...现在,我们希望结果集同时包含所在班级的名称,上面的结果集只有class_id列,缺少对应班级的name列。我们可以将students表作为主表,把classes表中的name列连接在主表上。
2 聚合统计函数计数--COUNT这个函数必须常用,可以说每一个项目都不可以缺少的一个函数,却少了这个函数都感觉写的代码没灵魂了。计数函数是计算命中的行数,常常被用作聚合或分析函数。...COUNT(DISTINCT column):计算某一列中不同值的数量,它会跳过重复的值,只计算不同的值,由于DISTINCT会使用排序,所以性能较慢。...【定义】SUM(column):计算数值列的总和,在计算过程中,SUM函数会忽略这些NULL值进行计算。...ROLLUP函数结果集中最后一列返回NULL,表示对所有分组列进行汇总。举例说明:按照领导分组,看下哪一个管理者手下薪资总和情况,顺便也把纳入计算的薪资统计下。下面就是一个很好的例子。...【定义】COUNT(DISTINCT column):计算列中唯一值的数量。【使用场景】DISTINCT可以与ORDER BY子句一起使用,以对结果进行排序。例如多次考试,我们只会获取考试通过的一次。
,不忽略任何一列,加上括号时,可以自己指定某些列进行插入,但值得注意的是如果某些列没有default约束,你还将其忽略进行数据插入的话,则插入数据的操作一定会失败。...实际中非常不建议使用全列查询,因为这需要显示表的所有数据,而部分的数据可能此时并不在内存中,则mysqld服务还需要磁盘IO来加载表的剩余数据,降低MySQL查询的性能,同时全列查询还无法使用索引来优化查询过程...多字段进行排序时,排序的优先级随书写顺序,优先级依次向后降低 查询同学及总分,由高到低 因为关键字执行的顺序是:from,select,order by,所以总分这个别名可以出现在order by...update用于更改表中某一行或者多行的数据,值得注意的是,在使用update对表中数据进行更新的时候,如果不跟上where子句进行数据筛选的话,则update会对表中所有的行进行某一列字段值的更新,因为...子句返回具体的行数据之后,就可以对这些行数据作某一列字段数据的更新。
(一般只会进行数值型的计算)null参与的运算,计算结果都为null。...注意 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数 将一列数据作为一个整体,进行纵向的计算。...解决方案: 选择不包含非空的列进行计算 IFNULL函数 分组查询 语法 group by 分组字段; 注意 分组之后查询的字段:分组字段、聚合函数 where 和 having 的区别?...实现:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。(那其实一张表能解决。) 一对多(多对一) 举例:部门和员工 分析:一个部门有多个员工,一个员工只能对应一个部门。...子查询的结果是多行多列的 子查询可以作为一张虚拟表参与查询。 事务 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
因为只匹配一行数据,所以很快 如将主键置于 where 列表中,MySQL 就能将该查询转换为一个常量。 eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...ref 非唯一性索引扫描,返回匹配某个单独值的所有行.本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。...key 列显示使用了哪个索引一般就是在你的 where 语句中出现 了 between、、in 等的查询这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束语另一点,不用扫描全部索引...7、ref 显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引列上的值。 8、rows rows 列显示 MySQL 认为它执行查询时必须检查的行数。越少越好!...9、extra Using filesort 说明 mysql 会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL 中无法利用索引 完成的排序操作称为“文件排序”。
id相同时,执行顺序由上至下; 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行; id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行。...这种范围扫描索引扫描比全表扫描要好,因为它开始于索引的某一个点,而结束另一个点,不用全表扫描。...ref: 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,属于查找和扫描的混合体。...而不是按照表内的索引顺序进行读取。MySQL中无法利用索引完成排序操作称为“文件排序” Using temporary 使用了临时表保存中间结果,mysql在查询结果排序时使用临时表。...常见于排序order by和分组查询group by。 Using index 表示相应的select操作用使用覆盖索引,避免访问了表的数据行。
Count-Min Sketch 维护了一个 d*w 的计数数组,对于每一个值,用 d 个独立的 hash 函数映射到每一行的一列中,并对应修改这 d 个位置的计数值。...列直方图的创建 在创建直方图的时候,需要数据是有序的,而排序的代价往往很高,因此我们在 TiDB 中实现了抽样算法,对抽样之后的数据进行排序,建立直方图,即会在每一个 Region 上进行抽样,随后在合并结果的时候再进行抽样...在这个部分中,我们会先从最简单的单一列上的过滤条件开始,然后考虑如何处理多列的情况。 1. 范围查询 对于某一列上的范围查询,TiDB 选择了常用的等深直方图来进行估算。...等值查询 对于类似查询等于某个值的这样的等值查询,直方图就捉襟见肘了。一般常用的估计方法是假设每个值出现的次数都相等,这样就可以用(总行数/不同值的数量)来估计。...因此,Selectivity 的一个最重要的任务就是将所有的查询条件分成尽量少的组,使得每一组中的条件都可以用某一列或者某一索引上的统计信息进行估计,这样我们就可以做尽量少的独立性假设。
SQL基础 主键 ---- 在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。...索引 ---- 在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引。 索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。...这种多表查询又称笛卡尔查询,使用笛卡尔查询时要非常小心,由于结果集是目标表的行数乘积,对两个各自有100行记录的表进行笛卡尔查询将返回1万条记录,对两个各自有1万行记录的表进行笛卡尔查询将返回1亿条记录...你可能还注意到了,上述查询的结果集有两列id和两列name,两列id是因为其中一列是students表的id,而另一列是classes表的id,但是在结果集中,不好区分。...现在问题来了,存放班级名称的name列存储在classes表中,只有根据students表的class_id,找到classes表对应的行,再取出name列,就可以获得班级名称。
possible_keys:表示查询时可能使用的索引 key:表示实际使用的索引 key_len:使用到索引字段的长度 rows:扫描数量 Extra:执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息...COUNT()是一个特殊的函数,有两种不同的作用,它可以统计某个列值的数量,也可以统计行数。 在统计列值的时候要求列值是非空的,也就是不统计null。 ...当我们统计行的时候,常见的是COUNT(*),这种情况下,通配符*并不会像我们猜想的那样扩展成所有的列,实际上,它会忽略所有的列而直接统计所有的行数 解密MyiSAM的‘快’ 这是一个容易产生误解的事情...2.第二种是对返回的数据进行排序,也就是通常看到的Using filesort,filesort是通过相应的排序算法,将数据放在sort_buffer_size系统变量设置的内存排序区中进行排序,如果内存装载不下...,它就会将磁盘上的数据进行分块,再对各个数据块进行排序,然后将各个块合并成有序的结果集。
领取专属 10元无门槛券
手把手带您无忧上云