美文网首页
DBA之路 5_MySQL_外连接及information_sc

DBA之路 5_MySQL_外连接及information_sc

作者: Linux_淡忘 | 来源:发表于2019-06-19 19:05 被阅读0次

1.distinct

处理过程:
将列里面所有的值进行排序,然后将连续的一段进行匹配,直到匹配到值不相同的一个,然后进行计数。去重排序,此上针对8,0以前版本
select distinct(列) from 表
mysql> select distinct(school.student.sname) from school.student;
+---------+
| sname   |
+---------+
| zhang3  |
| zhang4  |
| li4     |
| wang5   |
| zh4     |
| zhao4   |
| ma6     |
| oldboy  |
| oldgirl |
| oldp    |
+---------+
10 rows in set (0.00 sec)
实际用法:
mysql> select count(*) from world.city;
+----------+
| count(*) |
+----------+
|     4079 |
+----------+
1 row in set (0.00 sec)

mysql> select count(distinct(world.city.name)) from world.city;
+----------------------------------+
| count(distinct(world.city.name)) |
+----------------------------------+
|                             3998 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> 


2.别名

2.1表别名

SELECT stu.sname,co.cname
FROM student as stu
JOIN score as sc
ON stu.sno = sc.sno
JOIN course as co
ON sc.cno = co.cno
WHERE stu.sname = 'zhang3';

2.2列别名

mysql> select count(distinct(world.city.name)) as a from world.city;
+------+
| a    |
+------+
| 3998 |
+------+
1 row in set (0.01 sec)

3.外连接

左连接:left join
SELECT
    a. NAME,
    b. NAME,
    b.surfacearea
FROM
    city AS a
LEFT JOIN country AS b ON a.countrycode = b. CODE
AND a.population < 100
左边是小数据,右边是大数据
右连接(right join)
USE world;

SELECT
    a. NAME,
    b. NAME,
    b.surfacearea
FROM
    city AS a
right JOIN country AS b ON a.countrycode = b. CODE
AND a.population < 100
HAVING b.surfacearea<'50';

4.information_schema.tables

元数据:存放在基表中,也叫元数据表,ibdata(数据词典,不能查看,存放了数据信息相当于数据的inode),基表无法直接查询和修改。
---修改通过DDL进行元数据修改
---show语句查询,desc(show),information_schema(全局类的统计和)
mysql root@10.0.0.68:information_schema> desc `TABLES`   先切到information_shema库然后通过desc 'tables' 查询                                  
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG   | varchar(512)        | NO   |     |         |       |
| TABLE_SCHEMA    | varchar(64)         | NO   |     |         |       |
| TABLE_NAME      | varchar(64)         | NO   |     |         |       |
| TABLE_TYPE      | varchar(64)         | NO   |     |         |       |
| ENGINE          | varchar(64)         | YES  |     | <null>  |       |
| VERSION         | bigint(21) unsigned | YES  |     | <null>  |       |
| ROW_FORMAT      | varchar(10)         | YES  |     | <null>  |       |
| TABLE_ROWS      | bigint(21) unsigned | YES  |     | <null>  |       |
| AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | <null>  |       |
| DATA_LENGTH     | bigint(21) unsigned | YES  |     | <null>  |       |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | <null>  |       |
| INDEX_LENGTH    | bigint(21) unsigned | YES  |     | <null>  |       |
| DATA_FREE       | bigint(21) unsigned | YES  |     | <null>  |       |
| AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | <null>  |       |
| CREATE_TIME     | datetime            | YES  |     | <null>  |       |
| UPDATE_TIME     | datetime            | YES  |     | <null>  |       |
| CHECK_TIME      | datetime            | YES  |     | <null>  |       |
| TABLE_COLLATION | varchar(32)         | YES  |     | <null>  |       |
| CHECKSUM        | bigint(21) unsigned | YES  |     | <null>  |       |
| CREATE_OPTIONS  | varchar(255)        | YES  |     | <null>  |       |
| TABLE_COMMENT   | varchar(2048)       | NO   |     |         |       |
+-----------------+---------------------+------+-----+---------+-------+
常用:
TABLE_SCHEMA 表所在库 
TABLE_NAME 表名
ENGINE 表的存储引擎
TABLE_ROWS 表的行数
AVG_ROW_LENGTH 平均行长度
INDEX_LENGTH 索引长度
实例:
1.  统计所有库下表的总大小
select table_schema,count(table_name),sum(avg_row_length*table_rows+index_length)/1024/1024 as table_MB
from information_schema.tables
group by table_schema;
2.统计库下总大小
select 
sum(avg_row_length*table_rows+index_length)/1024/1024 as table_MB
from information_schema.tables


councat()
mysql> select concat(user,"|",host) from mysql.user;
+-------------------------+
| concat(user,"|",host)   |
+-------------------------+
| oldguo|10.0.0.%         |
| root|10.0.0.%           |
| zhihu|10.0.0.%          |
| oldboy|172.16.1.%       |
| mysql.session|localhost |
| mysql.sys|localhost     |
| root|localhost          |
+-------------------------+
7 rows in set (0.00 sec)

mysql> select concat("廖婉丽是傻子");
+------------------------------+
| concat("廖婉丽是傻子")       |
+------------------------------+
| 廖婉丽是傻子                 |
+------------------------------+
1 row in set (0.00 sec)

show

show databases;          查看所有数据库
show tables;             查看当前库下所有表
show tables from world;   查看world数据库下的所有表
show create database 库; 查看建库语句
show create table 表;    查看建表语句
show grants for root@'localhost';查看用户权限
show charset;            查看字符集
show collation;          校对
show full processlist;   查看连接情况
show status;             查看数据库状态
show engines;            查看存储引擎
show status like '%lock%'模糊
show variables;          查看变量
show engine innodb status 查看所有innodb引擎状态情况
show binary logs;        查看二进制日志情况
show binlog events in    查看二进制日志事件
show relaylog events in  查看relay日志事件
show slave status        查看从库状态
show master status       查看数据库binlog位置信息
show privileges;         查看权限
show index from 表;      查看表的索引
show errors;             查看上一条报错
show warnings;           查看上一条警告
show colums from city    查看表的列定义信息

索引(称为index或key)

作用

提供了类似于书中目录的作用,目的是为了优化查询

种类(算法)

**B树**
Hash索引
R树
Full text 全文索引
GIS

B树索引

image.png
B-tree
B+Tree 在范围查询方面提供了更好的性能(> < >= <= like)
B*Tree
向上生成父节点的时候,总是取子节点的最小值
B+数针对范围查询进行优化,在B数索引的基础上在叶节点上添加双向指针。B*数在枝节点上添加了双向指针。

6.在功能上进行分类******

辅助索引(S)
[secondary][index]

聚集索引(C)
[clustered][index]


6.1辅助索引(S)怎么构建B树结构的?
(1)辅助索引基于表的列进行生成
(2)取出索引列的所有值(取出所有键值)
(3)进行所有键值的排序
(4)将所有的键值按顺序落到BTree索引的叶子节点上
(5)进而生成枝节点和根节点
(6)叶子节点除了存储键值之外还存储指向相邻叶的指针,
另外还会保存指向原表数据的指针。
6.2聚集索引(C)怎么构建B树结构的?
聚集索引组织存储,聚集索引相当于将数据行整行存储在叶子节
点上,依据于聚集索引列。
(1)建表时有主键列
(2)表中数据存储时,会按照主键列顺序有序的存储数据行的内容,
在数据页上(这个动作叫做聚集索引组织表)。
(3)表中的数据页被作为聚集索引的叶子节点。
(4)把叶子节点的主键值生成上层的枝节点和根节点
6.3聚集索引和辅助索引构成区别
(1)聚集索引只有一个,非空,唯一,一般是主键。
(2)辅助索引可以有多个,是配合聚集索引使用。
(3)聚集索引叶子节点,就是磁盘的数据行存储的数据页。
(4)MySQL是根据聚集索引,组织存储数据,数据存储的时候就是按照聚集索引的顺序进行存储。
(5)辅助索引,只会提取索引键值,进行自动排序生成B树结构。
6.4辅助索引细分
1.单列的辅助索引
2.联合多列辅助索引(覆盖索引)
3.唯一索引
6.5关于索引树的高度受什么影响
(1)数据行个数(方案:分表)
(2)索引列的字符长度(方案:前缀索引)
(3)char,varchar(方案:表设计方案)
(4)enum(生成下标索引),在数据数量上优化索引高度,能用则用

相关文章

网友评论

      本文标题:DBA之路 5_MySQL_外连接及information_sc

      本文链接:https://www.haomeiwen.com/subject/gbhhqctx.html