1. SELECT高级应用

1.1 前期准备工作

本次测试使用的是world数据库,由mysql官方提供下载地址:
https://dev.mysql.com/doc/index-other.html
world文件导入方法,官方说明:
https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html
下载sqlyog 软件,用于之后的数据库管理用:
http://www.webyog.com
创建用户,能够让sqlyog登录数据库即可,注意权限控制。

  1. mysql> grant all on *.* to root@'%' identified by '123';
  2. Query OK, 0 rows affected (0.00 sec)

授权用户后参看

  1. mysql> select user,host from mysql.user where user like 'root';
  2. +------+-----------+
  3. | user | host |
  4. +------+-----------+
  5. | root | % |
  6. | root | 10.0.0.1 |
  7. | root | 127.0.0.1 |
  8. | root | localhost |
  9. +------+-----------+
  10. 4 rows in set (0.00 sec)

1.2 select语法格式说明

  1. mysql> help select;
  2. Name: 'SELECT'
  3. Description:
  4. Syntax:
  5. SELECT
  6. [ALL | DISTINCT | DISTINCTROW ]
  7. [HIGH_PRIORITY]
  8. [STRAIGHT_JOIN]
  9. [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
  10. [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
  11. select_expr [, select_expr ...]
  12. [FROM table_references
  13. [PARTITION partition_list]
  14. [WHERE where_condition]
  15. [GROUP BY {col_name | expr | position}
  16. [ASC | DESC], ... [WITH ROLLUP]]
  17. [HAVING where_condition]
  18. [ORDER BY {col_name | expr | position}
  19. [ASC | DESC], ...]
  20. [LIMIT {[offset,] row_count | row_count OFFSET offset}]
  21. [PROCEDURE procedure_name(argument_list)]
  22. [INTO OUTFILE 'file_name'
  23. [CHARACTER SET charset_name]
  24. export_options
  25. | INTO DUMPFILE 'file_name'
  26. | INTO var_name [, var_name]]
  27. [FOR UPDATE | LOCK IN SHARE MODE]]

2. select中where子句使用

  1. SELECT *|{[DISTINCT] column|select_expr [alias], ...]}
  2. [FROM [database.]table]
  3. [WHERE conditions];

where 条件的说明:
  WHERE条件又叫做过滤条件,它从FROM子句的中间结果中去掉所有条件conditions不为TRUE(而为FALSE或者NULL)的行。
  WHERE子句跟在FROM子句后面,不能在WHERE子句中使用列别名。
【示例一】where字句的基本使用

  1. SELECT * FROM world.`city` WHERE CountryCode='CHN';
  2. or
  3. SELECT * FROM world.`city` WHERE CountryCode='chn';

sql说明:从数据库中查找是中国的城市。
MySQL-Select语句高级应用 - 图1
注意:
  WHERE中出现的字符串和日期字面量必须使用引号括起来
  这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。
  这和ORACLE不同,ORACLE中WHERE条件中的字面量是区分大小写的
【示例二】where字句中的逻辑操作符

  1. SELECT * FROM world.`city`
  2. WHERE CountryCode='chn' AND district = 'shanxi';

sql说明: 从数据库中查找是中国的并且是山西的城市
MySQL-Select语句高级应用 - 图2
逻辑操作符介绍:

逻辑操作符 说明
and 逻辑与。只有当所有的子条件都为true时,and才返回true。否则返回false或null
or 逻辑或。只要有一个子条件为true,or就返回true。否则返回false或null
not 逻辑非。如果子条件为true,则返回false;如果子条件为false,则返回true
xor 逻辑异或。当一个子条件为true而另一个子条件为false时,其结果为true;
当两个条件都为true或都为false时,结果为false。否则,结果为null

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

  1. SELECT * FROM world.`city`
  2. WHERE
  3. population BETWEEN 100000 AND 200000 ;

sql说明: 从数据库中查找人口数量在 100000-200000 之间的城市
MySQL-Select语句高级应用 - 图3
【示例四】:where字句中的IN

  1. SELECT * FROM city
  2. WHERE countrycode IN ('CHN','JPN');

sql说明: 查询中国和日本的所有城市
MySQL-Select语句高级应用 - 图4
【示例五】:where字句中的like

  1. USE world;
  2. SELECT * FROM city
  3. WHERE countrycode LIKE 'ch%';

sql说明: 从city表中找到国家是一ch开头的。
MySQL-Select语句高级应用 - 图5
like的语法:
like ‘匹配模式字符串’
  实现模式匹配查询或者模糊查询:测试一个列值是否匹配给出的模式
    在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符:
%:表示0个或者任意多个字符
_:只表示一个任意字符

3. select中ORDER BY子句

3.1 order by 子句的作用

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

  1. SELECT expr
  2. FROM table
  3. [WHERE condition(s)]
  4. [ORDER BY {column, expr, numeric_position} [Asc|DEsc]];

部分参数说明:

参数 参数说明
Asc 执行升序排序。默认值
DEsc 执行降序排序
使用方法 ORDER BY子句一般在SELECT语句的最后面

3.2 order by 示例

【示例一】Order by基本使用

  1. SELECT * FROM city
  2. ORDER BY population;

sql说明:将城市表按照人口数量升序排列
MySQL-Select语句高级应用 - 图6
【示例二】多个排序条件

  1. SELECT * FROM city
  2. ORDER BY population,countrycode;

sql说明: 按照人口和国家进行排序
MySQL-Select语句高级应用 - 图7
【示例三】以select字句列编号排序

  1. SELECT * FROM city
  2. ORDER BY 5;

sql说明:按照第5列进行排序
MySQL-Select语句高级应用 - 图8
【示例四】desc实践

  1. SELECT * FROM city
  2. ORDER BY 5 DESC;

sql说明: 按照第列进行逆序排列
MySQL-Select语句高级应用 - 图9
说明:NULL**值的排序**
在MySQL中,把NULL值当做一列值中的最小值对待。
因此,升序排序时,它出现在最前面。

4. LIMIT子句

特点说明:
MySQL特有的子句。
它是SELECT语句中的最后一个子句(在order by后面)。
它用来表示从结果集中选取最前面或最后面的几行。
偏移量offset的最小值为0。
语法:

  1. limit <获取的行数> [OFFSET <跳过的行数>]
  2. 或者
  3. limit [<跳过的行数>,] <获取的行数>

查询示例

  1. SELECT * FROM city
  2. ORDER BY 5 DEsc
  3. LIMIT 4;

sql说明: 获取排序后的前4行
MySQL-Select语句高级应用 - 图10
注:先按照人口数量进行降序排序,然后使用limit从中挑出最前面的4行。
如果没有order by子句,返回的4行就是不可预料的。

5. 多表连接查询

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

  1. SELECT NAME,ci.countrycode ,cl.language ,ci.population
  2. FROM city ci , countrylanguage cl
  3. WHERE ci.`CountryCode`=cl.countrycode;
  1. sql说明: city定别名为ci ,国家定别名问为cl,进行连表查询,NAME是共同的键值,使用where条件进行连接。<br />![](https://cdn.nlark.com/yuque/0/2021/png/1484428/1614512260337-9d9682fe-007d-4eb1-be72-43f121af96cd.png#align=left&display=inline&height=383&margin=%5Bobject%20Object%5D&originHeight=383&originWidth=595&size=0&status=done&style=none&width=595)<br />  注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中了

5.2 NATURAL JOIN子句

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

  1. SELECT NAME,countrycode ,LANGUAGE ,population
  2. FROM city NATURAL JOIN countrylanguage
  3. WHERE population > 1000000
  4. ORDER BY population;

sql说明:使用natural join 进行相等连接,两个表,条件为人口大于1000000的,进行升序排列。
MySQL-Select语句高级应用 - 图11
注意:在select子句只能出现一个连接列

5.3 使用using子句

  1. SELECT NAME,countrycode ,LANGUAGE ,population
  2. FROM city JOIN countrylanguage
  3. USING(countrycode);

sql说明:使用join进行两表的来连接,using指定countrycode为关联列。
MySQL-Select语句高级应用 - 图12

5.4 集合操作

  1. UNION [DISTINCT]
  2. UNION ALL

语法:

  1. SELECT ...
  2. UNION [ALL | DISTINCT]
  3. SELECT ...
  4. [UNION [ALL | DISTINCT]
  5. SELECT ...]
  • UNION用于把两个或者多个select查询的结果集合并成一个
  • 进行合并的两个查询,其SELECT列表必须在数量和对应列的数据类型上保持一致
  • 默认会去掉两个查询结果集中的重复行
  • 默认结果集不排序
  • 最终结果集的列名来自于第一个查询的SELECT列表

    5.5 分组操作及分组处理

      “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
    Having与Where的区别
      where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
      having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

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

    1. SELECT CONCAT("mysqldump ","-uroot ","-p123 ",table_schema," ",table_name,">/tmp/",table_schema,"_",table_name,".sql")
    2. FROM information_schema.tables
    3. WHERE table_schema='world'
    4. INTO OUTFILE '/tmp/world_bak.sh'
    使用concat进行拼接数据备份脚本。
    MySQL-Select语句高级应用 - 图13
    — 显示信息,可直接进行运算
    1. SELECT CONCAT("132");
    2. SELECT CONCAT("132+123");
    3. SELECT CONCAT("132+123");
    — 查看引擎是innodb的表
    1. SELECT TABLE_NAME FROM TABLES WHERE ENGINE='innodb';
    2. SELECT CHARACTER_SET_NAME, COLLATION_NAME
    3. FROM INFORMATION_SCHEMA.COLLATIONS
    4. WHERE IS_DEFAULT = 'Yes';
    MySQL-Select语句高级应用 - 图14
    — 显示每个库下有多少表
    1. SELECT TABLE_SCHEMA ,COUNT(*)
    2. FROM information_schema.`TABLES`
    3. GROUP BY TABLE_SCHEMA;
    MySQL-Select语句高级应用 - 图15

    5.7 子查询

    子查询定义
      在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。
      子查询(inner query)先执行,然后执行主查询(outer query)
      子查询按对返回结果集的调用方法,可分为:where型子查询,from型子查询及exists型子查询。
    使用子查询原则
      一个子查询必须放在圆括号中。
      将子查询放在比较条件的右边以增加可读性。
      子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。
      在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符(IN, ANY, ALL)。
    不相关子查询
      子查询中没有使用到外部查询的表中的任何列。先执行子查询,然后执行外部查询
      相关子查询(correlated subquery)
      子查询中使用到了外部查询的表中的任何列。先执行外部查询,然后执行子查询
    以上两种类型之下又可以分为:
    1. 行子查询(row subquery):返回的结果集是 1 N
    2. 列子查询(column subquery):返回的结果集是 N 1
    3. 表子查询(table subquery):返回的结果集是 N N
    4. 标量子查询(scalar subquery):返回11列一个值
    子查询示例
    创建数据表 ```sql CREATE TABLE PLAYERS
    (PLAYERNO INTEGER NOT NULL,
    NAME CHAR(15) NOT NULL,
    INITIALS CHAR(3) NOT NULL,
    BIRTH_DATE DATE ,
    SEX CHAR(1) NOT NULL,
    JOINED SMALLINT NOT NULL,
    STREET VARCHAR(30) NOT NULL,
    HOUSENO CHAR(4) ,
    POSTCODE CHAR(6) ,
    TOWN VARCHAR(30) NOT NULL,
    PHONENO CHAR(13) ,
    LEAGUENO CHAR(4) ,
    PRIMARY KEY (PLAYERNO));

CREATE TABLE PENALTIES
(PAYMENTNO INTEGER NOT NULL,
PLAYERNO INTEGER NOT NULL,
PAYMENT_DATE DATE NOT NULL,
AMOUNT DECIMAL(7,2) NOT NULL,
PRIMARY KEY (PAYMENTNO));

INSERT INTO PLAYERS VALUES (2, ‘Everett’, ‘R’, ‘1948-09-01’, ‘M’, 1975, ‘Stoney Road’,’43’, ‘3575NH’, ‘Stratford’, ‘070-237893’, ‘2411’);
INSERT INTO PLAYERS VALUES (6, ‘Parmenter’, ‘R’, ‘1964-06-25’, ‘M’, 1977, ‘Haseltine Lane’,’80’, ‘1234KK’, ‘Stratford’, ‘070-476537’, ‘8467’);
INSERT INTO PLAYERS VALUES (7, ‘Wise’, ‘GWS’, ‘1963-05-11’, ‘M’, 1981, ‘Edgecombe Way’,’39’, ‘9758VB’, ‘Stratford’, ‘070-347689’, NULL);
INSERT INTO PLAYERS VALUES (8, ‘Newcastle’, ‘B’, ‘1962-07-08’, ‘F’, 1980, ‘Station Road’,’4’, ‘6584WO’, ‘Inglewood’, ‘070-458458’, ‘2983’);
INSERT INTO PLAYERS VALUES (27, ‘Collins’, ‘DD’, ‘1964-12-28’, ‘F’, 1983, ‘Long Drive’,’804’, ‘8457DK’, ‘Eltham’, ‘079-234857’, ‘2513’);
INSERT INTO PLAYERS VALUES (28, ‘Collins’, ‘C’, ‘1963-06-22’, ‘F’, 1983, ‘Old Main Road’,’10’, ‘1294QK’, ‘Midhurst’, ‘010-659599’, NULL);
INSERT INTO PLAYERS VALUES (39, ‘Bishop’, ‘D’, ‘1956-10-29’, ‘M’, 1980, ‘Eaton Square’,’78’, ‘9629CD’, ‘Stratford’, ‘070-393435’, NULL);
INSERT INTO PLAYERS VALUES (44, ‘Baker’, ‘E’, ‘1963-01-09’, ‘M’, 1980, ‘Lewis Street’,’23’, ‘4444LJ’, ‘Inglewood’, ‘070-368753’, ‘1124’);
INSERT INTO PLAYERS VALUES (57, ‘Brown’, ‘M’, ‘1971-08-17’, ‘M’, 1985, ‘Edgecombe Way’,’16’, ‘4377CB’, ‘Stratford’, ‘070-473458’, ‘6409’);
INSERT INTO PLAYERS VALUES (83, ‘Hope’, ‘PK’, ‘1956-11-11’, ‘M’, 1982, ‘Magdalene Road’,’16A’, ‘1812UP’, ‘Stratford’, ‘070-353548’, ‘1608’);
INSERT INTO PLAYERS VALUES (95, ‘Miller’, ‘P’, ‘1963-05-14’, ‘M’, 1972, ‘High Street’,’33A’, ‘5746OP’, ‘Douglas’, ‘070-867564’, NULL);
INSERT INTO PLAYERS VALUES (100, ‘Parmenter’, ‘P’, ‘1963-02-28’, ‘M’, 1979, ‘Haseltine Lane’,’80’, ‘6494SG’, ‘Stratford’, ‘070-494593’, ‘6524’);
INSERT INTO PLAYERS VALUES (104, ‘Moorman’, ‘D’, ‘1970-05-10’, ‘F’, 1984, ‘Stout Street’,’65’, ‘9437AO’, ‘Eltham’, ‘079-987571’, ‘7060’);
INSERT INTO PLAYERS VALUES (112, ‘Bailey’, ‘IP’, ‘1963-10-01’, ‘F’, 1984, ‘Vixen Road’,’8’, ‘6392LK’, ‘Plymouth’, ‘010-548745’, ‘1319’);

INSERT INTO PENALTIES VALUES (1, 6, ‘1980-12-08’,100); INSERT INTO PENALTIES VALUES (2, 44, ‘1981-05-05’, 75); INSERT INTO PENALTIES VALUES (3, 27, ‘1983-09-10’,100); INSERT INTO PENALTIES VALUES (4,104, ‘1984-12-08’, 50); INSERT INTO PENALTIES VALUES (5, 44, ‘1980-12-08’, 25); INSERT INTO PENALTIES VALUES (6, 8, ‘1980-12-08’, 25); INSERT INTO PENALTIES VALUES (7, 44, ‘1982-12-30’, 30); INSERT INTO PENALTIES VALUES (8, 27, ‘1984-11-12’, 75);

  1. 例一、获取和100号球员性别相同并且居住在同一城市的球员号码。
  2. ```sql
  3. select playerno
  4. from players
  5. where (sex, town) = (
  6. select sex, town
  7. from players
  8. where playerno = 100);

例二、获取和27号球员出生在同一年的球员的号码

  1. select playerno
  2. from players
  3. where year(birth_date) =
  4. (select year(birth_date)
  5. from players
  6. where playerno = 27)
  7. and playerno <> 27;

例三、获取那些至少支付了一次罚款的球员的名字和首字母。

  1. select name, initials
  2. from players
  3. where exists
  4. (select * from penalties
  5. where playerno = players.playerno);

例四、获取那些从来没有罚款的球员的名字和首字母。

  1. select name, initials
  2. from players
  3. where not exists
  4. (select * from penalties
  5. where playerno = players.playerno);

6. Informatica_schema获取元数据

6.1 元数据访问方法

  查询 INFORMATION_SCHEMA 数据库表。其中包含 MySQL 数据库服务器所管理的所有对象的相关数据
  使用 SHOW 语句。用于获取数据库和表信息的 MySQL 专用语句
  使用 DESCRIBE(或 DESC)语句。用于检查表结构和列属性的快捷方式
  使用 mysqlshow 客户端程序。SHOW 语法的命令行程序
INFORMATION_SCHEMA 数据库优点介绍
  充当数据库元数据的中央系统信息库,模式和模式对象,服务器统计信息(状态变量、设置、连接) 。
  采用表格式以实现灵活访问,使用任意 SELECT 语句。是“虚拟数据库”,表并非“真实”表(基表),而是“系统视图”,根据当前用户的特权动态填充表。
列出 INFORMATION_SCHEMA 数据库中所有的表:

  1. mysql> USE information_schema;
  2. Database changed
  3. mysql> SHOW TABLES;
  4. +---------------------------------------+
  5. | Tables_in_information_schema |
  6. +---------------------------------------+
  7. | CHARACTER_SETS |
  8. | COLLATIONS |
  9. | COLLATION_CHARACTER_SET_APPLICABILITY |
  10. | COLUMNS |
  11. | COLUMN_PRIVILEGES |

6.2 对 INFORMATION_SCHEMA 使用 SELECT

示例一:
查找引擎是innodb的表。

  1. SELECT TABLE_NAME, ENGINE
  2. FROM INFORMATION_SCHEMA.TABLES
  3. WHERE ENGINE= 'innodb';

MySQL-Select语句高级应用 - 图16

示例二:

  1. SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
  2. FROM INFORMATION_SCHEMA.COLUMNS
  3. WHERE DATA_TYPE = 'set';

sql说明:查找数据类型是set的表
MySQL-Select语句高级应用 - 图17
示例三:

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

sql说明:查看找默认为yes的表
MySQL-Select语句高级应用 - 图18
示例四:

  1. SELECT TABLE_SCHEMA, COUNT(*)
  2. FROM INFORMATION_SCHEMA.TABLES
  3. GROUP BY TABLE_SCHEMA;

sql说明:查看每个数据库下表的个数
MySQL-Select语句高级应用 - 图19
使用 INFORMATION_SCHEMA 表获取有关创建 shell 命令的信息。

  1. SELECT CONCAT("mysqldump -uroot -p ",
  2. TABLE_SCHEMA," ", TABLE_NAME, " >> ",
  3. TABLE_SCHEMA,".bak.sql")
  4. FROM TABLES WHERE TABLE_NAME LIKE 'Country%'

MySQL-Select语句高级应用 - 图20

6.3 使用 mysql 命令创建 SQL 语句

  1. mysql -uroot -p123 --silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',TABLE_NAME, ';')
  2. FROM INFORMATION_SCHEMA.TABLES
  3. WHERE TABLE_SCHEMA = 'world_innodb';"

6.4 MySQL中的show语句

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

6.5 DESCRIBE 语句

    DESCRIBE 语句 等效于 SHOW COLUMNS
一般语法:

  1. mysql> DESCRIBE <table_name>;

显示 INFORMATION_SCHEMA 表信息

  1. mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;
  2. +----------------------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------------------+-------------+------+-----+---------+-------+
  5. | CHARACTER_SET_NAME | varchar(32) | NO | | | |
  6. | DEFAULT_COLLATE_NAME | varchar(32) | NO | | | |
  7. | DESCRIPTION | varchar(60) | NO | | | |
  8. | MAXLEN | bigint(3) | NO | | 0 | |
  9. +----------------------+-------------+------+-----+---------+-------+
  10. 4 rows in set (0.00 sec)

  有关数据库和表的结构的信息与 SHOW 语句相似
一般语法:

  1. shell> mysqlshow [options] [db_name [table_name[column_name]]]

显示所有数据库或特定数据库、表和/或列的相关信息:

  1. [root@db02 ~]# mysqlshow -uroot -p123
  2. Warning: Using a password on the command line interface can be insecure.
  3. +--------------------+
  4. | Databases |
  5. +--------------------+
  6. | information_schema |
  7. | clsn |
  8. | haha |
  9. | mysql |
  10. | oldboy |
  11. | performance_schema |
  12. | world |
  13. +--------------------+

查看数据库下的表

  1. [root@db02 ~]# mysqlshow -uroot -p123 world
  2. Warning: Using a password on the command line interface can be insecure.
  3. Database: world
  4. +-----------------+
  5. | Tables |
  6. +-----------------+
  7. | PENALTIES |
  8. | PLAYERS |
  9. | city |
  10. | country |
  11. | countrylanguage |
  12. +-----------------+

查看数据库下表记录

  1. [root@db02 ~]# mysqlshow -uroot -p123 world city
  2. Warning: Using a password on the command line interface can be insecure.
  3. Database: world Table: city
  4. +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
  5. | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
  6. +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
  7. | ID | int(11) | | NO | PRI | | auto_increment | select,insert,update,references | |
  8. | Name | char(35) | latin1_swedish_ci | NO | | | | select,insert,update,references | |
  9. | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | |
  10. | District | char(20) | latin1_swedish_ci | NO | | | | select,insert,update,references | |
  11. | Population | int(11) | | NO | | 0 | | select,insert,update,references | |
  12. +-------------+----------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

查看记录信息

  1. [root@db02 ~]# mysqlshow -uroot -p123 world city CountryCode
  2. Warning: Using a password on the command line interface can be insecure.
  3. Database: world Table: city Wildcard: CountryCode
  4. +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
  5. | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
  6. +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+
  7. | CountryCode | char(3) | latin1_swedish_ci | NO | MUL | | | select,insert,update,references | |
  8. +-------------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+

查看数据库类似like。

  1. [root@db02 ~]# mysqlshow -uroot -p123 "w%"
  2. Warning: Using a password on the command line interface can be insecure.
  3. Wildcard: w%
  4. +-----------+
  5. | Databases |
  6. +-----------+
  7. | world |
  8. +-----------+

7. 参考文献

https://dev.mysql.com/doc/refman/5.6/en/select.html SELECT语法官方说明