1.1 SELECT高级应用

1.1.1 前期准备工作

本次测试使用的是world__数据库,由mysql__官方提供下载地址

world__文件导入方法,官方说明:

   下载sqlyog 软件,用于之后的数据库管理用

创建用户,能够让sqlyog登录数据库即可,注意权限控制。

   授权用户后参看

1.1.2 select语法格式说明

1.2 select中where子句使用

 where 条件的说明:

  WHERE条件又叫做过滤条件,它从FROM子句的中间结果中去掉所有条件conditions不为TRUE(而为FALSE或者NULL)的行。

  WHERE子句跟在FROM子句后面,不能在WHERE子句中使用列别名。

【示例一】where字句的基本使用

   sql说明:从数据库中查找是中国的城市。

注意:

  WHERE中出现的字符串和日期字面量必须使用引号括起来

  这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。

  这和ORACLE不同,ORACLE中WHERE条件中的字面量是区分大小写的

【示例二】where字句中的逻辑操作符

      sql说明: 从数据库中查找是中国的并且是山西的城市

逻辑操作符介绍:

<td style="width: 430.9pt; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-top-color: #4f81bd; border-right-color: #4f81bd; border-bottom-color: #4f81bd; border-left: none; background: #4f81bd; padding: 0cm 5.4pt;" valign="top" width="575">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">说明</span></strong>
  </p>
</td>
<td style="width: 430.9pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #dbe5f1; padding: 0cm 5.4pt;" valign="top" width="575">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">逻辑与。只有当所有的子条件都为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">时,</span><span lang="EN-US">and</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">才返回</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">。否则返回</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">或</span><span lang="EN-US">null</span>
  </p>
</td>
<td style="width: 430.9pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; padding: 0cm 5.4pt;" valign="top" width="575">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">逻辑或。只要有一个子条件为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">,</span><span lang="EN-US">or</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">就返回</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">。否则返回</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">或</span><span lang="EN-US">null</span>
  </p>
</td>
<td style="width: 430.9pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #dbe5f1; padding: 0cm 5.4pt;" valign="top" width="575">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">逻辑非。如果子条件为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">,则返回</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">;如果子条件为</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">,则返回</span><span lang="EN-US">true</span>
  </p>
</td>
<td style="width: 430.9pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; padding: 0cm 5.4pt;" valign="top" width="575">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">逻辑异或。当一个子条件为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">而另一个子条件为</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">时,其结果为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">;</span>
  </p>
  
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">当两个条件都为</span><span lang="EN-US">true</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">或都为</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">时,结果为</span><span lang="EN-US">false</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">。否则,结果为</span><span lang="EN-US">null</span>
  </p>
</td>

【示例三】:where字句中的范围比较

       sql说明: 从数据库中查找人口数量在 100000-200000 之间的城市

【示例四】:where字句中的IN

      sql说明: 查询中国和日本的所有城市

【示例五】:where字句中的like

      sql说明: 从city表中找到国家是一ch开头的。

like的语法:

  实现模式匹配查询或者模糊查询:测试一个列值是否匹配给出的模式

    在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符:

1.3 select中ORDER BY子句

1.3.1 order by 子句的作用

  ORDER BY子句用来排序行

  如果SELECT语句中没有ORDER BY子句,那么结果集中行的顺序是不可预料的

语法:

<td style="width: 423.8pt; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-top-color: #4f81bd; border-right-color: #4f81bd; border-bottom-color: #4f81bd; border-left: none; background: #4f81bd; padding: 0cm 5.4pt;" valign="top" width="565">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">参数说明</span></strong>
  </p>
</td>
<td style="width: 423.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #dbe5f1; padding: 0cm 5.4pt;" valign="top" width="565">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">执行升序排序。默认值</span>
  </p>
</td>
<td style="width: 423.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; padding: 0cm 5.4pt;" valign="top" width="565">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">执行降序排序</span>
  </p>
</td>
<td style="width: 423.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #92d050; padding: 0cm 5.4pt;" valign="top" width="565">
  <p class="MsoNormal">
    <span lang="EN-US">ORDER BY</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">子句一般在</span><span lang="EN-US">SELECT</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">语句的最后面</span>
  </p>
</td>

1.3.2 order by 示例

【示例一】Order by基本使用

      sql说明:将城市表按照人口数量升序排列

【示例二】多个排序条件

      sql说明: 按照人口和国家进行排序

【示例三】以select字句列编号排序

      sql说明:按照第5列进行排序

【示例四】desc实践

      sql说明: 按照第列进行逆序排列

**  说明:NULL**值的排序

    在MySQL中,把NULL值当做一列值中的最小值对待。

    因此,升序排序时,它出现在最前面。

1.4 LIMIT子句

特点说明:

<p class="a" style="margin: 1pt 0cm; text-indent: 42.5pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;">
  <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">它是</span><span lang="EN-US">SELECT</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">语句中的最后一个子句(在</span><span lang="EN-US">order by</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">后面)。</span>
</p>

<p class="a" style="margin: 1pt 0cm; text-indent: 42.5pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;">
  <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">它用来表示从结果集中选取最前面或最后面的几行。</span>
</p>

<p class="a" style="margin: 1pt 0cm; text-indent: 42.5pt; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;">
  <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">偏移量</span><span lang="EN-US">offset</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">的最小值为</span><span lang="EN-US"></span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 宋体; mso-hansi-font-family: 宋体;">。</span>
</p>

语法:

查询示例

      sql说明: 获取排序后的前4行

1.5 多表连接查询

1.5.1 传统的连接写法(使用where)

  注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中了

1.5.2 NATURAL  JOIN子句

  自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接

      sql说明:使用natural join 进行相等连接,两个表,条件为人口大于1000000的,进行升序排列。

  注意:在select子句只能出现一个连接列

1.5.3 使用using子句

      sql说明:使用join进行两表的来连接,using指定countrycode为关联列。

1.5.4 集合操作

语法:

     ⛳ 进行合并的两个查询,其SELECT列表必须在数量和对应列的数据类型上保持一致

     ⛳ 默认会去掉两个查询结果集中的重复行

     ⛳ 默认结果集不排序

       ⛳ 最终结果集的列名来自于第一个查询的SELECT列表

1.5.5 分组操作及分组处理

  “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

Having与Where的区别

  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

1.5.6 【select高级应用】数据库备份脚本拼接

– 显示信息,可直接进行运算

– 查看引擎是innodb的表

SELECT CHARACTER_SET_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS WHERE IS_DEFAULT = 'Yes';

– 显示每个库下有多少表

1.5.7 子查询

子查询定义

  在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。

  子查询(inner  query)先执行,然后执行主查询(outer  query)

  子查询按对返回结果集的调用方法,可分为:where型子查询,from型子查询及exists型子查询。

使用子查询原则

  一个子查询必须放在圆括号中。

  将子查询放在比较条件的右边以增加可读性。

  子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。

  在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符(IN, ANY, ALL)。

不相关子查询

  子查询中没有使用到外部查询的表中的任何列。先执行子查询,然后执行外部查询

  相关子查询(correlated subquery)

  子查询中使用到了外部查询的表中的任何列。先执行外部查询,然后执行子查询

  以上两种类型之下又可以分为:

子查询示例

   创建数据表

<div id="cnblogs_code_open_a997ac3d-2ca0-44b3-90f0-9c86160f0e8f" class="cnblogs_code_hide">
  <pre><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span><span style="color: #000000;"> PLAYERS  

2 (PLAYERNO INTEGER NOT NULL,
3 NAME CHAR(15) NOT NULL,
4 INITIALS CHAR(3) NOT NULL,
5 BIRTH_DATE DATE ,
6 SEX CHAR(1) NOT NULL,
7 JOINED SMALLINT NOT NULL,
8 STREET VARCHAR(30) NOT NULL,
9 HOUSENO CHAR(4) ,
10 POSTCODE CHAR(6) ,
11 TOWN VARCHAR(30) NOT NULL,
12 PHONENO CHAR(13) ,
13 LEAGUENO CHAR(4) ,
14 PRIMARY KEY (PLAYERNO));
15
16 CREATE TABLE PENALTIES
17 (PAYMENTNO INTEGER NOT NULL,
18 PLAYERNO INTEGER NOT NULL,
19 PAYMENT_DATE DATE NOT NULL,
20 AMOUNT DECIMAL(7,2) NOT NULL,
21 PRIMARY KEY (PAYMENTNO)); 22 23 INSERT INTO PLAYERS VALUES (2, 'Everett', 'R', '1948-09-01', 'M', 1975, 'Stoney Road','43', '3575NH', 'Stratford', '070-237893', '2411');
24 INSERT INTO PLAYERS VALUES (6, 'Parmenter', 'R', '1964-06-25', 'M', 1977, 'Haseltine Lane','80', '1234KK', 'Stratford', '070-476537', '8467');
25 INSERT INTO PLAYERS VALUES (7, 'Wise', 'GWS', '1963-05-11', 'M', 1981, 'Edgecombe Way','39', '9758VB', 'Stratford', '070-347689', NULL);
26 INSERT INTO PLAYERS VALUES (8, 'Newcastle', 'B', '1962-07-08', 'F', 1980, 'Station Road','4', '6584WO', 'Inglewood', '070-458458', '2983');
27 INSERT INTO PLAYERS VALUES (27, 'Collins', 'DD', '1964-12-28', 'F', 1983, 'Long Drive','804', '8457DK', 'Eltham', '079-234857', '2513');
28 INSERT INTO PLAYERS VALUES (28, 'Collins', 'C', '1963-06-22', 'F', 1983, 'Old Main Road','10', '1294QK', 'Midhurst', '010-659599', NULL);
29 INSERT INTO PLAYERS VALUES (39, 'Bishop', 'D', '1956-10-29', 'M', 1980, 'Eaton Square','78', '9629CD', 'Stratford', '070-393435', NULL);
30 INSERT INTO PLAYERS VALUES (44, 'Baker', 'E', '1963-01-09', 'M', 1980, 'Lewis Street','23', '4444LJ', 'Inglewood', '070-368753', '1124');
31 INSERT INTO PLAYERS VALUES (57, 'Brown', 'M', '1971-08-17', 'M', 1985, 'Edgecombe Way','16', '4377CB', 'Stratford', '070-473458', '6409');
32 INSERT INTO PLAYERS VALUES (83, 'Hope', 'PK', '1956-11-11', 'M', 1982, 'Magdalene Road','16A', '1812UP', 'Stratford', '070-353548', '1608');
33 INSERT INTO PLAYERS VALUES (95, 'Miller', 'P', '1963-05-14', 'M', 1972, 'High Street','33A', '5746OP', 'Douglas', '070-867564', NULL);
34 INSERT INTO PLAYERS VALUES (100, 'Parmenter', 'P', '1963-02-28', 'M', 1979, 'Haseltine Lane','80', '6494SG', 'Stratford', '070-494593', '6524');
35 INSERT INTO PLAYERS VALUES (104, 'Moorman', 'D', '1970-05-10', 'F', 1984, 'Stout Street','65', '9437AO', 'Eltham', '079-987571', '7060');
36 INSERT INTO PLAYERS VALUES (112, 'Bailey', 'IP', '1963-10-01', 'F', 1984, 'Vixen Road','8', '6392LK', 'Plymouth', '010-548745', '1319');
37
38 INSERT INTO PENALTIES VALUES (1, 6, '1980-12-08',100); 39 INSERT INTO PENALTIES VALUES (2, 44, '1981-05-05', 75); 40 INSERT INTO PENALTIES VALUES (3, 27, '1983-09-10',100); 41 INSERT INTO PENALTIES VALUES (4,104, '1984-12-08', 50); 42 INSERT INTO PENALTIES VALUES (5, 44, '1980-12-08', 25); 43 INSERT INTO PENALTIES VALUES (6, 8, '1980-12-08', 25); 44 INSERT INTO PENALTIES VALUES (7, 44, '1982-12-30', 30); 45 INSERT INTO PENALTIES VALUES (8, 27, '1984-11-12', 75);

<p>
  <span class="cnblogs_code_collapse">View Code 创建数据库语句</span></div> </div> 
  
  <p>
    例一、获取和100号球员性别相同并且居住在同一城市的球员号码。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">select</span><span style="color: #000000;"> playerno   

from players
where (sex, town) = (
select sex, town
from players
where playerno = 100);

  <p>
    &nbsp;&nbsp;&nbsp; 例二、获取和27号球员出生在同一年的球员的号码
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">select</span><span style="color: #000000;"> playerno   

from players
where year(birth_date) =
(select year(birth_date)
from players
where playerno = 27)
and playerno <> 27;

  <p>
    例三、获取那些至少支付了一次罚款的球员的名字和首字母。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre> <span style="color: #0000ff;">select</span><span style="color: #000000;"> name, initials   

from players
where exists
(select * from penalties
where playerno = players.playerno);

  <p>
    &nbsp;例四、获取那些从来没有罚款的球员的名字和首字母。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre> <span style="color: #0000ff;">select</span><span style="color: #000000;"> name, initials   

from players
where not exists
(select * from penalties
where playerno = players.playerno);

  <h2>
    <span id="16_Informatica_schema">1.6 Informatica_schema获取元数据</span>
  </h2>
  
  <h3>
    <span id="161">1.6.1 元数据访问方法</span>
  </h3>
  
  <p>
      查询 INFORMATION_SCHEMA 数据库表。其中包含 MySQL 数据库服务器所管理的所有对象的相关数据
  </p>
  
  <p>
      使用 SHOW 语句。用于获取数据库和表信息的 MySQL 专用语句
  </p>
  
  <p>
      使用 DESCRIBE(或 DESC)语句。用于检查表结构和列属性的快捷方式
  </p>
  
  <p>
      使用 mysqlshow 客户端程序。SHOW 语法的命令行程序
  </p>
  
  <p>
    <span style="background-color: #00ff00;"><strong>INFORMATION_SCHEMA </strong><strong>数据库优点介绍</strong></span>
  </p>
  
  <p>
      充当数据库元数据的中央系统信息库,模式和模式对象,服务器统计信息(状态变量、设置、连接) 。
  </p>
  
  <p>
      采用表格式以实现灵活访问,使用任意 SELECT 语句。是&ldquo;虚拟数据库&rdquo;,表并非&ldquo;真实&rdquo;表(基表),而是&ldquo;系统视图&rdquo;,根据当前用户的特权动态填充表。
  </p>
  
  <p>
    <span style="background-color: #00ff00;"><strong>列出 INFORMATION_SCHEMA </strong><strong>数据库中所有的表:</strong></span>
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre>mysql<span style="color: #808080;">></span>  <span style="color: #0000ff;">USE</span><span style="color: #000000;"> information_schema;

Database changed mysql> SHOW TABLES; +————————————-+ | Tables_in_information_schema | +————————————-+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES |

  <h3>
    <span id="162_INFORMATION_SCHEMA_SELECT">1.6.2 对 INFORMATION_SCHEMA 使用 SELECT</span>
  </h3>
  
  <p>
    示例一:
  </p>
  
  <p>
    查找引擎是innodb的表。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">SELECT</span><span style="color: #000000;"> TABLE_NAME, ENGINE

FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE= 'innodb';

  <p style="text-align: center;">
    &nbsp;&nbsp;<img data-original="https://clsn.io/wp-content/uploads/2018/03/1190037-20171222193240725-1887587949.png" src="/wp-content/themes/clsn-003/img/blank.gif" alt="MySQL-Select语句高级应用" alt="" />
  </p>
  
  <p>
    &nbsp;
  </p>
  
  <p>
    示例二:
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">SELECT</span><span style="color: #000000;"> TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME

FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'set';

    <p class="a3">
      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sql说明:查找数据类型是set的表
    </p>
  </div>
  
  <p align="center">
    <img data-original="https://clsn.io/wp-content/uploads/2018/03/1190037-20171222193318568-1915423025.png" src="/wp-content/themes/clsn-003/img/blank.gif" alt="MySQL-Select语句高级应用" alt="" />&nbsp;
  </p>
  
  <p>
    示例三:
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">SELECT</span><span style="color: #000000;"> CHARACTER_SET_NAME, COLLATION_NAME,IS_DEFAULT

FROM INFORMATION_SCHEMA.COLLATIONS WHERE IS_DEFAULT = 'Yes';

  <p>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sql说明:查看找默认为yes的表
  </p>
  
  <p align="center">
    <img data-original="https://clsn.io/wp-content/uploads/2018/03/1190037-20171222193338537-1033401033.png" src="/wp-content/themes/clsn-003/img/blank.gif" alt="MySQL-Select语句高级应用" alt="" />&nbsp;
  </p>
  
  <p>
    示例四:
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">SELECT</span> TABLE_SCHEMA, <span style="color: #ff00ff;">COUNT</span>(<span style="color: #808080;">*</span><span style="color: #000000;">) 

FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_SCHEMA;

  <p>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql说明:查看每个数据库下表的个数
  </p>
  
  <p align="center">
    <img data-original="https://clsn.io/wp-content/uploads/2018/03/1190037-20171222193356100-1822960636.png" src="/wp-content/themes/clsn-003/img/blank.gif" alt="MySQL-Select语句高级应用" alt="" />&nbsp;
  </p>
  
  <p>
    使用 INFORMATION_SCHEMA 表获取有关创建 shell 命令的信息。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #0000ff;">SELECT</span> CONCAT("mysqldump <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span><span style="color: #000000;">p ",

TABLE_SCHEMA," “, TABLE_NAME, " » “, TABLE_SCHEMA,".bak.sql”) FROM TABLES WHERE TABLE_NAME LIKE 'Country%'

  <p align="center">
    <img data-original="https://clsn.io/wp-content/uploads/2018/03/1190037-20171222193416162-1760456399.png" src="/wp-content/themes/clsn-003/img/blank.gif" alt="MySQL-Select语句高级应用" alt="" />&nbsp;
  </p>
  
  <h3>
    <span id="163_mysql_SQL">1.6.3 使用 mysql 命令创建 SQL 语句。</span>
  </h3>
  
  <div class="cnblogs_code">
    <pre>mysql <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span>p123 <span style="color: #008080;">--</span><span style="color: #008080;">silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',TABLE_NAME, ';') </span>

FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'world_innodb';"

  <h3>
    <span id="164_MySQLshow">1.6.4 MySQL中的show语句</span>
  </h3>
  
  <div class="cnblogs_code">
    <pre><span style="color: #000000;">SOHW databases:列出所有数据库

SHOW TABLES:列出默认数据库中的表 SHOW TABLES FROM <database_name>:列出指定数据库中的表 SHOW COLUMNS FROM <table_name>:显示表的列结构 SHOW INDEX FROM <table_name>:显示表中有关索引和索引列的信息 SHOW CHARACTER SET:显示可用的字符集及其默认整理 SHOW COLLATION:显示每个字符集的整理 SHOW STATUS:列出当前数据库状态 SHOW VARIABLES:列出数据库中的参数定义值 SHOW PROCESSLIST 查看当前的连接数量

  <h3>
    <span id="165_DESCRIBE">1.6.5 DESCRIBE 语句</span>
  </h3>
  
  <p>
        DESCRIBE 语句 等效于 SHOW COLUMNS
  </p>
  
  <p>
    <strong><em>一般语法:</em></strong>
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre>mysql<span style="color: #808080;">></span> DESCRIBE <span style="color: #808080;">&lt;</span>table_name<span style="color: #808080;">></span>;</pre>
    </div>
  </div>
  
  <p>
    显示 INFORMATION_SCHEMA 表信息
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre>mysql<span style="color: #808080;">></span><span style="color: #000000;"> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;

+——————–+————-+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——————–+————-+——+—–+———+——-+ | CHARACTER_SET_NAME | varchar(32) | NO | | | | | DEFAULT_COLLATE_NAME | varchar(32) | NO | | | | | DESCRIPTION | varchar(60) | NO | | | | | MAXLEN | bigint(3) | NO | | | | +——————–+————-+——+—–+———+——-+ 4 rows in set (0.00 sec)

    <p>
        有关数据库和表的结构的信息与 SHOW 语句相似
    </p>
  </div>
  
  <p>
    <strong><em>一般语法:</em></strong>
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre>shell<span style="color: #808080;">></span> mysqlshow <span style="color: #ff0000;">[</span><span style="color: #ff0000;">options</span><span style="color: #ff0000;">]</span> <span style="color: #ff0000;">[</span><span style="color: #ff0000;">db_name [table_name[column_name</span><span style="color: #ff0000;">]</span>]]</pre>
    </div>
  </div>
  
  <p>
    显示所有数据库或特定数据库、表和/或列的相关信息:
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #ff0000;">[</span><span style="color: #ff0000;">root@db02 ~</span><span style="color: #ff0000;">]</span>#  mysqlshow <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span><span style="color: #000000;">p123

Warning: Using a password on the command line interface can be insecure. +——————+ | Databases | +——————+ | information_schema | | clsn | | haha | | mysql | | oldboy | | performance_schema | | world | +——————+

  <p>
    &nbsp;&nbsp; 查看数据库下的表
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #ff0000;">[</span><span style="color: #ff0000;">root@db02 ~</span><span style="color: #ff0000;">]</span>#  mysqlshow <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span><span style="color: #000000;">p123 world

Warning: Using a password on the command line interface can be insecure. Database: world +—————+ | Tables | +—————+ | PENALTIES | | PLAYERS | | city | | country | | countrylanguage | +—————+

  <p>
    查看数据库下表记录
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #ff0000;">[</span><span style="color: #ff0000;">root@db02 ~</span><span style="color: #ff0000;">]</span>#  mysqlshow <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span><span style="color: #000000;">p123 world city

Warning: Using a password on the command line interface can be insecure. Database: world Table: city +———–+———-+——————-+——+—–+———+—————-+———————————+———+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +———–+———-+——————-+——+—–+———+—————-+———————————+———+ | ID | int(11) | | NO | PRI | | auto_increment | select,insert,update,references | | | Name | char(35) | latin1_swedish_ci | NO | | | | select,insert,update,references | | | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | | | District | char(20) | latin1_swedish_ci | NO | | | | select,insert,update,references | | | Population | int(11) | | NO | | | | select,insert,update,references | | +———–+———-+——————-+——+—–+———+—————-+———————————+———+

  <p>
    查看记录信息
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #ff0000;">[</span><span style="color: #ff0000;">root@db02 ~</span><span style="color: #ff0000;">]</span>#  mysqlshow <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span><span style="color: #000000;">p123 world city CountryCode

Warning: Using a password on the command line interface can be insecure. Database: world Table: city Wildcard: CountryCode +———–+———+——————-+——+—–+———+——-+———————————+———+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +———–+———+——————-+——+—–+———+——-+———————————+———+ | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | | +———–+———+——————-+——+—–+———+——-+———————————+———+

  <p>
    查看数据库类似like。
  </p>
  
  <div>
    <div class="cnblogs_code">
      <pre><span style="color: #ff0000;">[</span><span style="color: #ff0000;">root@db02 ~</span><span style="color: #ff0000;">]</span>#  mysqlshow <span style="color: #808080;">-</span>uroot <span style="color: #808080;">-</span>p123 "w<span style="color: #808080;">%</span><span style="color: #000000;">"

Warning: Using a password on the command line interface can be insecure. Wildcard: w% +———+ | Databases | +———+ | world | +———+

  <h2>
    <span id="17">1.7 参考文献</span>
  </h2>
  
  <div>
    <div class="cnblogs_code">
      <pre>https:<span style="color: #808080;">//</span>dev.mysql.com<span style="color: #808080;">/</span>doc<span style="color: #808080;">/</span>refman<span style="color: #808080;">/</span><span style="color: #800000; font-weight: bold;">5.6</span><span style="color: #808080;">/</span>en<span style="color: #808080;">/</span><span style="color: #0000ff;">select</span>.html         SELECT语法官方说明</pre>
    </div>
    
    <p>
      &nbsp;
    </p>
  </div>
  
  <p>
    &nbsp;
  </p>
  
  <div id="toc_container" class="toc_white have_bullets">
    <ul class="toc_list">
      <li>
        <a href="#11_SELECT">1.1 SELECT高级应用</a><ul>
          <li>
            <a href="#111">1.1.1 前期准备工作</a>
          </li>
          <li>
            <a href="#112_select">1.1.2 select语法格式说明</a>
          </li>
        </ul>
      </li>
      
      <li>
        <a href="#12_selectwhere">1.2 select中where子句使用</a>
      </li>
      <li>
        <a href="#13_selectORDER_BY">1.3 select中ORDER BY子句</a><ul>
          <li>
            <a href="#131_order_by">1.3.1 order by 子句的作用</a>
          </li>
        </ul>
      </li>
      
      <li>
        <a href="#14_LIMIT">1.4 LIMIT子句</a>
      </li>
      <li>
        <a href="#15">1.5 多表连接查询</a><ul>
          <li>
            <a href="#151_where">1.5.1 传统的连接写法(使用where)</a>
          </li>
          <li>
            <a href="#152_NATURALnbsp_JOIN">1.5.2 NATURAL&nbsp; JOIN子句</a>
          </li>
          <li>
            <a href="#153_using">1.5.3 使用using子句</a>
          </li>
          <li>
            <a href="#154">1.5.4 集合操作</a>
          </li>
          <li>
            <a href="#155">1.5.5 分组操作及分组处理</a>
          </li>
          <li>
            <a href="#156_select">1.5.6 【select高级应用】数据库备份脚本拼接</a>
          </li>
          <li>
            <a href="#157">1.5.7 子查询</a>
          </li>
        </ul>
      </li>
      
      <li>
        <a href="#16_Informatica_schema">1.6 Informatica_schema获取元数据</a><ul>
          <li>
            <a href="#161">1.6.1 元数据访问方法</a>
          </li>
          <li>
            <a href="#162_INFORMATION_SCHEMA_SELECT">1.6.2 对 INFORMATION_SCHEMA 使用 SELECT</a>
          </li>
          <li>
            <a href="#163_mysql_SQL">1.6.3 使用 mysql 命令创建 SQL 语句。</a>
          </li>
          <li>
            <a href="#164_MySQLshow">1.6.4 MySQL中的show语句</a>
          </li>
          <li>
            <a href="#165_DESCRIBE">1.6.5 DESCRIBE 语句</a>
          </li>
        </ul>
      </li>
      
      <li>
        <a href="#17">1.7 参考文献</a>
      </li>
    </ul>
  </div>