• MySQL 基本命令


    1、MySQL常用命令
    create database name; 创建数据库

    use databasename; 选择数据库

    drop database name 直接删除数据库,不提醒

    show tables; 显示表

    describe tablename; 表的详细描述  或者是   show columns from tablename ;

    select 中加上distinct去除重复字段

    mysqladmin drop databasename 删除数据库前,有提示。

    显示当前mysql版本和当前日期

    select version(),current_date;

    2、修改mysql中root的密码:
    shell>mysql -u root -p

    mysql> update user set password=password(”xueok654123″) where user=’root’;

    mysql> flush privileges //刷新数据库

    mysql>use dbname; 打开数据库:

    mysql>show databases; 显示所有数据库

    mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后

    mysql>describe user; 显示表mysql数据库中user表的列信息);

    3、grant
    创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
    mysql> grant all privileges on *.* to user@localhost identified by ’something’ with

    增加新用户
    格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
    GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

    删除授权:
    mysql> revoke all privileges on *.* from root@”%”;
    mysql> delete from user where user=”root” and host=”%”;
    mysql> flush privileges;

    创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
    mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’

    重命名表:
    mysql > alter table t1 rename t2;

    4、mysqldump
    备份数据库
    shell> mysqldump -h host -u root -p dbname >dbname_backup.sql

    恢复数据库
    shell> mysqladmin -h myhost -u root -p create dbname
    shell> mysql -h host -u root -p dbname < dbname_backup.sql

    如果只想卸出建表指令,则命令如下:
    shell> mysqladmin -u root -p -d databasename > a.sql

    如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:
    shell> mysqladmin -u root -p -t databasename > a.sql

    那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?
    mysqldump -T./ phptest driver

    其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

    5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查询,可如下执行这些查询:

    例如,如果您想将建表语句提前写在sql.txt中:
    mysql > mysql -h myhost -u root -p database < sql.txt





    启动:net start mySql;
    进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
    列出数据库:show databases;
    选择数据库:use databaseName;
    列出表格:show tables;
    显示表格列的属性:show columns from tableName;
    建立数据库:source fileName.txt;
    匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
    增加一个字段:alter table tabelName add column fieldName dateType;
    增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
    多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
    增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";
    每条语句输入完毕后要在末尾填加分号';',或者填加'/g'也可以;
    查询时间:select now();
    查询当前用户:select user();
    查询数据库版本:select version();

    查询当前使用的数据库:select database();

    MySQL查看用户权限命令  

     如果可以用navicat工具连过去,查看用户权限,修改用户权限都是很方便的,但很多时候MySQL都是只允许localhost访问,这时就只能用命令了


    以前只会用
    mysql> select * from mysql.user where user='username';

    今天发现这个更方便:
    mysql> show grants for username@localhost;

    show可以看到很多东西
    show create database dbname;  这个可以看到创建数据库时用到的一些参数。
    show create table tickets;    可以看到创建表时用到的一些参数



    1、删除student_course数据库中的students数据表:
    rm -f student_course/students.*

    2、备份数据库:(将数据库test备份)
    mysqldump -u root -p test>c:/test.txt
    备份表格:(备份test数据库下的mytable表格)
    mysqldump -u root -p test mytable>c:/test.txt
    将备份数据导入到数据库:(导回test数据库)
    mysql -u root -p test<c:/test.txt

    3、创建临时表:(建立临时表zengchao)
    create temporary table zengchao(name varchar(10));

    4、创建表是先判断表是否存在
    create table if not exists students(……);

    5、从已经有的表中复制表的结构
    create table table2 select * from table1 where 1<>1;

    6、复制表
    create table table2 select * from table1;

    7、对表重新命名
    alter table table1 rename as table2;

    8、修改列的类型
    alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
    alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

    9、创建索引
    alter table table1 add index ind_id (id);
    create index ind_id on table1 (id);
    create unique index ind_id on table1 (id);//建立唯一性索引

    10、删除索引
    drop index idx_id on table1;
    alter table table1 drop index ind_id;

    11、联合字符或者多个列(将列id与":"和列name和"="连接)
    select concat(id,':',name,'=') from students;

    12、limit(选出10到20条)<第一个记录集的编号是0>
    select * from students order by id limit 9,10;

    13、MySQL不支持的功能    需要设置数据库为 inndb    
    事务,视图,外键和引用完整性,存储过程和触发器


    14、MySQL会使用索引的操作符号
    <,<=,>=,>,=,between,in,不带%或者_开头的like

    15、使用索引的缺点
    1)减慢增删改数据的速度;
    2)占用磁盘空间;
    3)增加查询优化器的负担;
    当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;

    16、分析索引效率
    方法:在一般的SQL语句前加上explain;
    分析结果的含义:
    1)table:表名;
    2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
    3)possible_keys:查询可以利用的索引名;
    4)key:实际使用的索引;
    5)key_len:索引中被使用部分的长度(字节);
    6)ref:显示列名字或者"const"(不明白什么意思);
    7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
    8)extra:MySQL的建议;

    17、使用较短的定长列
    1)尽可能使用较短的数据类型;
    2)尽可能使用定长数据类型;
    a)用char代替varchar,固定长度的数据处理比变长的快些;
    b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;
    c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
    d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;

    18、使用not null和enum
    尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
    如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;

    19、使用optimize table
    对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;

    20、使用procedure analyse()
    可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:
    select * from students procedure analyse();
    select * from students procedure analyse(16,256);
    第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

    21、使用查询缓存
    1)查询缓存的工作方式:
    第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
    2)配置缓存参数:
    变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

    22、调整硬件
    1)在机器上装更多的内存;
    2)增加更快的硬盘以减少I/O等待时间;
    寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
    3)在不同的物理硬盘设备上重新分配磁盘活动;
    如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。


    导入数据,不仅可以使用mysqldump,还可以使用source命令:后者要登录mysql

    23.查看使用的是哪个数据库 
            select database() ;

    24. 从外部导入数据到表中24.

    load data local infile 'e://data.txt' into table XXX fields terminated by ',' enclosed by '"' lines terminated by '/n';

    25. 精确获取MySQL当前的时区数值

    select extract(hour from timediff(now(),UTC_timestamp())) as offset;

    26. 时间计算

    MySQL中需要日期的加减,可以使用函数DATE_ADD,DATE_SUB

    例如,select DATE_ADD(now(), interval 1 day);

             select DATE_SUB(now(), interval 1 month); 

    27.SQL Hint

    强制索引

    Select * FROM TABLE FORCE INDEX( ID1 ) WHERE ....

    忽略索引

    Select * FROM TABLE IGNORE INDEX( ID1 ) WHERE ....

    关闭查询缓存

    Select SQL_NO_CACHE * FROM TABLE WHERE ....

    强制查询缓存

    Select SQL_CACHE * FROM TABLE WHERE ....

    如果query_cache_type为2,则只有加入该Hint才会使用查询缓存

    延时插入

    INSERT DELAYED INTO

    强制连接顺序

    STRAIGHT_JOIN

    关于mysql 的优化问题:

    28.   进入 mysql 的 shell 命令行,调用 show processlist, 

        查看当前 mysql 使用频繁的 sql 语句,可以定位执行效率较低的SQL语句

    29. show status 可以查看提供服务器状态信息,

    了解各种SQL的执行频率

     

    ,也可以使用mysqladmin extended-status命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果。

    以下几个参数对Myisam和Innodb存储引擎都计数:
    1.Com_select  执行select操作的次数,一次查询只累加1;
    2.Com_insert 执行insert操作的次数,对于批量插入的insert操作,只累加一次;
    3.Com_update 执行update操作的次数;
    4.Com_delete 执行delete操作的次数;

    以下几个参数是针对Innodb存储引擎计数的,累加的算法也略有不同:
    1.       Innodb_rows_read select查询返回的行数;
    2.       Innodb_rows_inserted执行Insert操作插入的行数;
    3.       Innodb_rows_updated 执行update操作更新的行数;
    4.       Innodb_rows_deleted 执行delete操作删除的行数;
    通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是以查询操作为主,以及各种类型的SQL大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会累加。

    对于事务型的应用,通过Com_commit和Com_rollback可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。
    此外,以下几个参数便于我们了解数据库的基本情况:
    1.Connections 试图连接Mysql服务器的次数
    2.Uptime    服务器工作时间
    3.Slow_queries 慢查询的次数

    30.通过EXPLAIN分析低效SQL的执行计划

    可以通过explain或者desc 获取MySQL如何执行SELECT语句的信息,包括select语句执行过程表如何连接和连接的次序。
    explain可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。
     
    mysql> explain select sum(moneys) from sales a,companys b where a.company_id = b.id and a.year = 2006;
    +----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
    | select_type   | table | type  | possible_keys| key            | key_len   | rows  | Extra     |
    +----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
    | SIMPLE    | b     | index | PRIMARY   | PRIMARY   | 4     |    1  | Using index   |
    | SIMPLE    | a     | ALL   | NULL      | NULL      | NULL  |   12  | Using where   |
    +----------------+----------+-----------+----------------+----------------+----------+-----------+----------------+
    2 rows in set (0.02 sec)
     
    select_type:select 类型
    table:输出结果集的表
    type:表示表的连接类型

    ①当表中仅有一行是type的值为system是最佳的连接类型;

    ②当select操作中使用索引进行表连接时type的值为ref;

    ③当select的表连接没有使用索引时,经常会看到type的值为ALL,表示对该表进行了全表扫描,这时需要考虑通过创建索引来提高表连接的效率。

    possible_keys:表示查询时,可以使用的索引列.
    key:表示使用的索引
    key_len:索引长度
    rows:扫描范围
    Extra:执行情况的说明和描述

    31.使用mysql query cache:

    作用:查询缓存存储SELECT查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。

    适用范围:不发生数据更新的表。当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。

    查询缓存的主要参数设置:
    show variables like ‘%query_cache%’;
    have_query_cache表明服务器在安装使已经配置了高速缓存
    query_cache_size表明缓存区大小,单位为M
    query_cache_type的变量值从0到2,含义分别为
    0或者off(缓存关闭)
    1或者on(缓存打开,使用sql_no_cache的select除外)
    2或者demand(只有带sql_cache的select语句提供高速缓存)

    在 SHOW STATUS 中,你可以监视查询缓存的性能:

    变量 含义
    Qcache_queries_in_cache 在缓存中已注册的查询数目
    Qcache_inserts 被加入到缓存中的查询数目
    Qcache_hits 缓存采样数数目
    Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目
    Qcache_not_cached 没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE)
    Qcache_free_memory 查询缓存的空闲内存总数
    Qcache_free_blocks 查询缓存中的空闲内存块的数目
    Qcache_total_blocks 查询缓存中的块的总数目

    32.以下增加  show ** 的相关用法

    1. SHOW CHARACTER SET语法
    2. SHOW COLLATION语法
    3. SHOW COLUMNS语法
    4. SHOW CREATE DATABASE语法
    5. SHOW CREATE TABLE语法
    6. SHOW DATABASES语法
    7. SHOW ENGINE语法
    8. SHOW ENGINES语法
    9. SHOW ERRORS语法
    10. SHOW GRANTS语法
    11. SHOW INDEX语法
    12. SHOW INNODB STATUS语法
    13. SHOW LOGS语法
    14. SHOW OPEN TABLES语法
    15. SHOW PRIVILEGES语法
    16. SHOW PROCESSLIST语法
    17. SHOW STATUS语法
    18. SHOW TABLE STATUS语法
    19. SHOW TABLES语法
    20. SHOW TRIGGERS语法
    21. SHOW VARIABLES语法
    22. SHOW WARNINGS语法

     

     

    SHOW CHARACTER SET语法

    SHOW CHARACTER SET [LIKE 'pattern']

    SHOW CHARACTER SET语句用于显示所有可用的字符集。该语句取一个自选的LIKE子句。该子句指示哪些字符集名称可以匹配。举例说明:

    mysql> show character set like 'utf%';
    +---------+---------------+-------------------+--------+
    | Charset | Description   | Default collation | Maxlen |
    +---------+---------------+-------------------+--------+
    | utf8    | UTF-8 Unicode |utf8_general_ci   |      3 | 
    +---------+---------------+-------------------+--------+

    Maxlen列显示用于存储一个字符的最大的字节数目。

     

    SHOW COLLATION语法

    SHOW COLLATION [LIKE 'pattern']

    来自SHOW COLLATION的输出包括所有可用的字符集。该语句取一个自选的LIKE子句。该子句的pattern指示哪些整序名称可以匹配。举例说明:

    mysql> show collation like 'utf8%';
    +--------------------+---------+-----+---------+----------+---------+
    | Collation          |Charset | Id  | Default | Compiled | Sortlen |
    +--------------------+---------+-----+---------+----------+---------+
    | utf8_general_ci    |utf8    |  33 |Yes     |Yes      |       1| 
    | utf8_bin           |utf8    |  83|         |Yes      |       1| 
    | utf8_unicode_ci    | utf8    | 192|         |Yes      |       8| 
    | utf8_icelandic_ci  | utf8    | 193|         |Yes      |       8| 
    | utf8_latvian_ci    | utf8    | 194|         |Yes      |       8| 
    | utf8_romanian_ci   | utf8    | 195|         |Yes      |       8| 
    | utf8_slovenian_ci  | utf8    | 196|         |Yes      |       8| 
    | utf8_polish_ci     | utf8    |197 |         |Yes      |       8| 
    | utf8_estonian_ci   | utf8    | 198|         |Yes      |       8| 
    | utf8_spanish_ci    | utf8    | 199|         |Yes      |       8| 
    | utf8_swedish_ci    | utf8    | 200|         |Yes      |       8| 
    | utf8_turkish_ci    | utf8    | 201|         |Yes      |       8| 
    | utf8_czech_ci      |utf8    | 202|         |Yes      |       8| 
    | utf8_danish_ci     | utf8    |203 |         |Yes      |       8| 
    | utf8_lithuanian_ci | utf8    | 204|         |Yes      |       8| 
    | utf8_slovak_ci     | utf8    |205 |         |Yes      |       8| 
    | utf8_spanish2_ci   | utf8    | 206|         |Yes      |       8| 
    | utf8_roman_ci      |utf8    | 207|         |Yes      |       8| 
    | utf8_persian_ci    | utf8    | 208|         |Yes      |       8| 
    | utf8_esperanto_ci  | utf8    | 209|         |Yes      |       8| 
    | utf8_hungarian_ci  | utf8    | 210|         |Yes      |       8| 
    +--------------------+---------+-----+---------+----------+---------+

    Default列指示对于其字符集,整序值是否是默认值。Compiled指示字符集是否被编辑到服务器中。Sortlen与对字符串(在字符集中表达)分类所需的存储器的数量有关。

    SHOW COLUMNS语法

    SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name][LIKE 'pattern']


    SHOW COLUMNS显示在一个给定表中的各列的信息。对于试图,本语句也起作用。


     


    mysql> show full columns from test_lan;

    | Field   |Type        |Collation       | Null | Key | Default |Extra          |Privileges                      |Comment |
    +---------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
    | id      |int(10)     |NULL            |NO   | PRI | NULL    | auto_increment |select,insert,update,references|         | 
    | name    | varchar(40) | utf8_general_ci |NO   |     |         |                |select,insert,update,references | ???     | 
    | value   |text        | utf8_general_ci |NO   |     |NULL    |                |select,insert,update,references | ????    | 
    | package | varchar(50) | utf8_general_ci | YES  | MUL |NULL    |                |select,insert,update,references|         | 

    full 参数的作用是列出权限列和备注列

     

     SHOW CREATE DATABASE语法

    SHOW CREATE {DATABASE | SCHEMA} db_name

    显示用于创建给定数据库CREATE DATABASE语句。也可以使用SHOW CREATE SCHEMA。

    mysql> show create database 5j;
    +----------+-------------------------------------------------------------+
    | Database | CreateDatabase                                             |
    +----------+-------------------------------------------------------------+
    | 5j       | CREATE DATABASE `5j` | 
    +----------+-------------------------------------------------------------+

    mysql> show create schema 5j;
    +----------+-------------------------------------------------------------+
    | Database | CreateDatabase                                             |
    +----------+-------------------------------------------------------------+
    | 5j       | CREATE DATABASE `5j` | 
    +----------+-------------------------------------------------------------+

     

    SHOW CREATE TABLE语法

    SHOW CREATE TABLE tbl_name


    显示用于创建给定表的CREATE TABLE语句。本语句对视图也起作用。
     
    mysql> show create table last_ids;
    CREATE TABLE `last_ids` (
      `role_id` int(11) unsigned NOT NULL default '0' COMMENT '????ID',
      `combat_id` bigint(20) unsigned NOT NULL default '0' COMMENT'????ID'
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='??ID?'
     
    根据SQL_QUOTE_SHOW_CREATE选项,SHOWCREATE TABLE会对表名称和列名称加引号。
     
    SHOW DATABASES语法

    SHOW {DATABASES | SCHEMAS} [LIKE 'pattern'];

    mysql> show schemas;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema | 
    |5j                 | 
    |mysql              | 
    |test               | 
    |uniondb            | 
    +--------------------+

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema | 
    |5j                 | 
    | mysql              | 
    |test               | 
    |uniondb            | 
    +--------------------+

    mysql> show databases like '5j';
    +---------------+
    | Database (5j) |
    +---------------+
    |5j            | 
    +---------------+

     

     


    SHOW DATABASES可以在MySQL服务器主机上列举数据库。您也可以使用mysqlshow命令得到此清单。您只能看到您拥有某些权限的数据库,除非您拥有全局SHOWDATABASES权限。


    如果服务器以--skip-show-database选项为起始,则您根本不能使用本语句,除非您拥有SHOW DATABASES权限。


    也可以使用SHOW SCHEMAS。


     


    SHOW ENGINES语法


    SHOW [STORAGE] ENGINES


    SHOW ENGINES显示存储引擎的状态信息。对于检查一个存储引擎是否被支持,或者对于查看默认引擎是什么,本语句十分有用。SHOW TABLE TYPES是同义词,但不赞成使用。
     
    mysql> show storage engines;
    +------------+----------+----------------------------------------------------------------+
    | Engine     | Support  |Comment                                                        |
    +------------+----------+----------------------------------------------------------------+
    | MyISAM     | DEFAULT  | Default engine asof MySQL 3.23 with greatperformance         | 
    | MEMORY     |YES      | Hash based, stored in memory, usefulfor temporary tables      | 
    | InnoDB     |YES      | Supports transactions, row-levellocking, and foreign keys     | 
    | BerkeleyDB | NO       | Supportstransactions and page-levellocking                   | 
    | BLACKHOLE  | YES      | /dev/null storageengine (anything you write to it disappears) | 
    | EXAMPLE    | YES      |Example storageengine                                         | 
    | ARCHIVE    | YES      |Archive storageengine                                         | 
    | CSV        | YES      |CSV storageengine                                             | 
    | ndbcluster | DISABLED | Clustered, fault-tolerant, memory-basedtables                 | 
    | FEDERATED  | YES      | FederatedMySQL storageengine                                 | 
    | MRG_MYISAM | YES      | Collection of identicalMyISAMtables                          | 
    | ISAM       |NO       | Obsolete storageengine                                        | 
    +------------+----------+----------------------------------------------------------------+
     
    Support值指示某个存储引擎是否被支持,并指示哪个是默认引擎。
    以--default-table-type(eg:--default-table-type=InnoDB)参数来决定。
     
    SHOW ERRORS语法


    SHOW ERRORS [LIMIT [offset,] row_count]

    SHOW COUNT(*) ERRORS


    本语句与SHOW WARNINGS接近,不过该语句只显示错误,不同时显示错误、警告和注意。


    LIMIT子句与SELECT语句具有相同的语法.


    SHOW COUNT(*) ERRORS语句显示错误的数目。您也可以从error_count变量中找回此数目:






    参数说明:


    Table--表名


    Non_unique--是否是unique,是0,不是则为1(如果索引不能包括重复词,则为0。如果可以,则为1。)


    Key_name--索引名称


    Seq_in_index--索引中的列序列号,从1开始。


    Column_name--列名


    Collation--列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。


    Cardinality(基数)--索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。


    Sub_part-- 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。


    Packed--指示关键字如何被压缩。如果没有被压缩,则为NULL。


    Null--如果列含有NULL,则含有YES。如果没有,则该列含有NO。


    Index_type--用到的索引方法(BTREE, FULLTEXT, HASH, RTREE)。


    Comment--多种评注。


    SHOW KEYS是SHOW INDEX的同义词。您也可以使用mysqlshow -k db_name tbl_name命令列举一个表的索引。


    SHOW COUNT(*) ERRORS;

    SELECT @@error_count;

     

    mysql> show errors;

    | Error | 1064 | You have an error in your SQL syntax; check the manual thatcorresponds to your MySQL server version for the right syntax to use near'error' at line 1

     

    mysql> show count(*) errors;
    +-----------------------+
    | @@session.error_count |
    +-----------------------+
    |                     1| 
    +-----------------------+

     

    mysql> select @@error_count;
    +---------------+
    | @@error_count |
    +---------------+
    |             1| 
    +---------------+

     

    SHOW GRANTS语法

    SHOW GRANTS FOR user


    本语句列出了在为MySQL用户账户复制权限时必须发布的GRANT语句。
     
    mysql> show grants for root;

    | Grants for root@%                            
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIEDBY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION 
     
    要对当前的会话列出权限,您可以使用以下语句之一:

    SHOW GRANTS;

    SHOW GRANTS FOR CURRENT_USER;

    SHOW GRANTS FOR CURRENT_USER();

     

    SHOW INDEX语法

    SHOW INDEX FROM tbl_name [FROM db_name]


    SHOW INDEX会返回表索引信息。其格式与ODBC中的SQLStatistics调用相似。
     


    SHOW OPEN TABLES语法

    SHOW OPEN TABLES [FROM db_name] [LIKE 'pattern']

    mysql> show open tables;
    +----------+-----------------------------------+--------+-------------+
    | Database |Table                             |In_use | Name_locked |
    +----------+-----------------------------------+--------+-------------+
    | 5j       |revival_types                     |      0|           0 | 
    | 5j       |duel_events                       |      0|           0 |

     

    SHOW OPEN TABLES列举在表缓存中当前被打开的非TEMPORARY表(非临时表)。


    SHOW OPEN TABLES会返回以下字段:


    In_use :表当前被查询使用的次数。如果该数为零,则表是打开的,但是当前没有被使用。


    Name_locked :


    表名称是否被锁定。名称锁定用于取消表或对表进行重命名等操作。


     


     


     SHOW PRIVILEGES语法


    SHOW PRIVILEGES


    SHOW PRIVILEGES显示MySQL服务器支持的系统权限清单。确切的输出根据您的服务器的版本而定。


     


    SHOW PROCESSLIST语法


    SHOW [FULL] PROCESSLIST


    SHOW PROCESSLIST显示哪些线程正在运行。
     
    SHOW WARNINGS语法

    SHOW WARNINGS [LIMIT [offset,] row_count]

    SHOW COUNT(*) WARNINGS

    用法基本和show errors相同。

     

    SHOW VARIABLES语法

    SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern']


    SHOW VARIABLES显示了部门MySQL系统变量的值。本信息也可以使用mysqladmin variables命令获得。
    使用GLOBAL选项,您可以获得被用于MySQL新连接的值。使用SESSION,您可以得到对于当前连接起效的值。如果您两个选项都不使用,默认值为SESSION。
    LOCAL是SESSION的同义词。
     
    SHOW TRIGGERS语法

    SHOW TRIGGERS [FROM db_name] [LIKE expr]


    SHOW TRIGGERS列出了目前被MySQL服务器定义的触发程序。
     
    SHOW TABLES语法

    SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']

    SHOW TABLES列举了给定数据库中的非TEMPORARY表。您也可以使用mysqlshow db_name命令得到此清单。

    本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE TABLE;对于一个视图,第二列的值为VIEW。

    注释:如果您对于一个表没有权限,则该表不会在来自SHOW TABLES或的mysqlshow db_name输出中显示。

     

    SHOW TABLE STATUS语法

    SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']

    SHOW TABLE STATUS的性质与SHOW TABLE类似,不过,可以提供每个表的大量信息。您也可以使用mysqlshow --status db_name命令得到此清单。

    本语句也显示视图信息。

    对于NDB Cluster表,本语句的输出显示Avg_row_length和Data_length列的适当值,不过BLOB列没有被考虑进来。另外,复制数量在Comment列中显示(作为number_of_replicas)。

  • 相关阅读:
    构建工具系列二--Grunt
    构建工具系列一--Travis-cli
    Windows平台下如何使用node.js显示系统盘符
    【译文】采用chrome的DevTool中TimeLine和profile工具提升Web app性能
    浏览器重绘和重排
    迁移oracle数据库至新分区
    模拟app上商品详情点击图片放大并且可以切换大图
    JavaScript 复制内容到剪贴板
    原生js ajax
    原型与原型链
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5798652.html
Copyright © 2020-2023  润新知