Mysql中show的用法
Mysql中show的用法
MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法。
a. show tables或show tables from database_name like; -- 显示当前数据库中所有表的名称。
b. show databases; -- 显示mysql中所有数据库的名称。
c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。
d. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。
e. show index from table_name; -- 显示表的索引。
f. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
g. show variables; -- 显示系统变量的名称和值。
h. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。
大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
i. show table status; -- 显示当前使用或者指定的database中的每个表的信息。
信息包括表类型和表的最新更新时间。
j. show privileges; -- 显示服务器所支持的不同权限。
k. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。
l. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。
m. show engies; -- 显示安装以后可用的存储引擎和默认引擎。
n. show innodb status; -- 显示innoDB存储引擎的状态。
o. show logs; -- 显示BDB存储引擎的日志。
p. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。
q. show errors; -- 只显示最后一个执行语句所产生的错误。
r. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。
mysql查建表语句
mysql查建表语句MySQL是一种最流行的关系型数据库管理系统,它可以通过编写建表语句来创建数据表。
以下是一些常用的 MySQL 查建表语句:1. 查看所有数据库:SHOW DATABASES;2. 创建新数据库:CREATE DATABASE databasename;3. 删除数据库:DROP DATABASE databasename;4. 选择一个数据库:USE databasename;5. 查看数据库中的所有表:SHOW TABLES;6. 创建新表:CREATE TABLE tablename (column1 datatype,column2 datatype,column3 datatype);7. 删除表:DROP TABLE tablename;8. 修改表:ALTER TABLE tablename ADD columnname datatype;ALTER TABLE tablename DROP columnname;9. 查看表结构:DESCRIBE tablename;10. 插入数据:INSERT INTO tablename (column1, column2, column3) VALUES (value1, value2, value3);11. 更新数据:UPDATE tablename SET column1 = newvalue WHERE condition;12. 删除数据:DELETE FROM tablename WHERE condition;以上是一些常用的 MySQL 查建表语句,使用它们可以轻松地创建、修改和操作 MySQL 数据库中的数据表。
UPDATE,SHOW句法
UPDATE句法UPDATE [LOW_PRIORITY] tbl_name SETcol_name1=expr1,col_name2=expr2,...[WHERE where_definition] [LIMIT #]UPDATE用新值更新现存表中行的列,SET子句指出哪个列要修改和他们应该被给定的值,WHERE子句,如果给出,指定哪个行应该被更新,否则所有行被更新。
如果你指定关键词LOW_PRIORITY,执行UPDATE被推迟到没有其他客户正在读取表时。
如果你从一个表达式的tbl_name存取列,UPDATE使用列的当前值。
例如,下列语句设置age为它的当前值加1:mysql> UPDATE persondata SET age=age+1;UPDATE赋值是从左到右计算。
例如,下列语句两倍age列,然后加1:mysql> UPDATE persondata SET age=age*2, age=age+1;如果你设置列为其它当前有的值,MySQL注意到这点并且不更新它。
UPDATE返回实际上被改变的行的数量。
在MySQL 3.22或以后版本中,C API函数mysql_info()返回被匹配并且更新的行数和在UPDATE期间发生警告的数量。
在MySQL3.23中,你可使用LIMIT #来保证只有一个给定数量的行被改变。
USE句法USE db_nameUSE db_name语句告诉MySQL使用db_name数据库作为随后的查询的缺省数据库。
数据库保持到会话结束,或发出另外一个USE语句:mysql> USE db1;mysql> SELECT count(*) FROM mytable; # selects fromdb1.mytablemysql> USE db2;mysql> SELECT count(*) FROM mytable; # selects fromdb2.mytable利用USE语句使得一个特定的数据库称为当前数据库并不阻止你访问在另外的数据库中的表。
mysql调优(show status篇)
通过show status 来优化MySQL数据库关键字: mysql1, 查看MySQL服务器配置信息1.mysql> show variables;2, 查看MySQL服务器运行的各种状态值1.mysql> show global status;3, 慢查询1.mysql> show variables like '%slow%';2.+------------------+-------+3.| Variable_name | Value |4.+------------------+-------+5.| log_slow_queries | OFF |6.| slow_launch_time | 2 |7.+------------------+-------+8.mysql> show global status like '%slow%';9.+---------------------+-------+10.| Variable_name | Value |11.+---------------------+-------+12.| Slow_launch_threads | 0 |13.| Slow_queries | 279 |14.+---------------------+-------+配置中关闭了记录慢查询(最好是打开,方便优化),超过2秒即为慢查询,一共有279条慢查询4, 连接数1.mysql> show variables like 'max_connections';2.+-----------------+-------+3.| Variable_name | Value |4.+-----------------+-------+5.| max_connections | 500 |6.+-----------------+-------+7.8.mysql> show global status like 'max_used_connections';9.+----------------------+-------+10.| Variable_name | Value |11.+----------------------+-------+12.| Max_used_connections | 498 |13.+----------------------+-------+设置的最大连接数是500,而响应的连接数是498max_used_connections / max_connections * 100% = 99.6% (理想值≈ 85%)5, key_buffer_sizekey_buffer_size是对MyISAM表性能影响最大的一个参数, 不过数据库中多为Innodb1.mysql> show variables like 'key_buffer_size';2.+-----------------+----------+3.| Variable_name | Value |4.+-----------------+----------+5.| key_buffer_size | 67108864 |6.+-----------------+----------+7.8.mysql> show global status like 'key_read%';9.+-------------------+----------+10.| Variable_name | Value |11.+-------------------+----------+12.| Key_read_requests | 25629497 |13.| Key_reads | 66071 |14.+-------------------+----------+一共有25629497个索引读取请求,有66071个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率:key_cache_miss_rate =Key_reads / Key_read_requests * 100% =0.27%需要适当加大key_buffer_size1.mysql> show global status like 'key_blocks_u%';2.+-------------------+-------+3.| Variable_name | Value |4.+-------------------+-------+5.| Key_blocks_unused | 10285 |6.| Key_blocks_used | 47705 |7.+-------------------+-------+Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 18% (理想值≈ 80%)6,临时表1.mysql> show global status like 'created_tmp%';2.+-------------------------+---------+3.| Variable_name | Value |4.+-------------------------+---------+5.| Created_tmp_disk_tables | 4184337 |6.| Created_tmp_files | 4124 |7.| Created_tmp_tables | 4215028 |8.+-------------------------+---------+每次创建临时表,Created_tmp_tables增加,如果是在磁盘上创建临时表,Created_tmp_disk_tables也增加,Created_tmp_files表示MySQL服务创建的临时文件文件数:Created_tmp_disk_tables / Created_tmp_tables * 100% =99% (理想值<= 25%)1.mysql> show variables where Variable_name in ('tmp_table_size', 'max_heap_table_size');2.+---------------------+-----------+3.| Variable_name | Value |4.+---------------------+-----------+5.| max_heap_table_size | 134217728 |6.| tmp_table_size | 134217728 |7.+---------------------+-----------+需要增加tmp_table_size7,open table 的情况1.mysql> show global status like 'open%tables%';2.+---------------+-------+3.| Variable_name | Value |4.+---------------+-------+5.| Open_tables | 1024 |6.| Opened_tables | 1465 |7.+---------------+-------+Open_tables 表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小,我们查询一下服务器table_cache值1.mysql> show variables like 'table_cache';2.+---------------+-------+3.| Variable_name | Value |4.+---------------+-------+5.| table_cache | 1024 |6.+---------------+-------+Open_tables / Opened_tables * 100% =69% 理想值(>= 85%)Open_tables / table_cache * 100% = 100% 理想值(<= 95%)8, 进程使用情况1.mysql> show global status like 'Thread%';2.+-------------------+-------+3.| Variable_name | Value |4.+-------------------+-------+5.| Threads_cached | 31 |6.| Threads_connected | 239 |7.| Threads_created | 2914 |8.| Threads_running | 4 |9.+-------------------+-------+如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
MySQL语句大全集锦+加详细解说(经典珍藏)
SQLMYSQL查询语句大全集锦1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表mysql> SHOW TABLES;5:创建一个数据库表mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));6:显示表的结构:mysql> DESCRIBE MYTABLE;7:往表中加入记录mysql> insert into MYTABLE values (”hyq”,”M”);8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;9:导入.sql文件命令(例如D:/mysql.sql)mysql>use database;mysql>source d:/mysql.sql;10:删除表mysql>drop TABLE MYTABLE;11:清空表mysql>delete from MYTABLE;12:更新表中数据mysql>update MYTABLE set sex=”f” where name=’hyq’;以下是无意中在网络看到的使用MySql的管理心得,在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。
而Linux中启动时可用“/etc/rc.d/init.d/mysqld start”命令,注意启动者应具有管理员权限。
mysqlshowfullprocesslist详解
mysqlshowfullprocesslist详解mysql服务器最近偶尔出现cpu百分百居⾼不下的情况,所以需要进⾏分析兄弟命令 show processlist;只列出前100条,如果想全列出请使⽤show full processlist;先简单说⼀下各列的含义和⽤途:id列,不⽤说了吧,⼀个标识,你要kill⼀个语句的时候很有⽤。
user列,显⽰单前⽤户,如果不是root,这个命令就只显⽰你权限范围内的sql语句。
host列,显⽰这个语句是从哪个ip的哪个端⼝上发出的。
呵呵,可以⽤来追踪出问题语句的⽤户。
db列,显⽰这个进程⽬前连接的是哪个数据库。
command列,显⽰当前连接的执⾏的命令,⼀般就是休眠(sleep),查询(query),连接(connect)。
time列,此这个状态持续的时间,单位是秒。
state列,显⽰使⽤当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执⾏中的某⼀个状态,⼀个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成,info列,显⽰这个sql语句,因为长度有限,所以长的sql语句就显⽰不全,但是⼀个判断问题语句的重要依据。
这个命令中最关键的就是state列,mysql列出的状态主要有以下⼏种:Checking table正在检查数据表(这是⾃动的)。
Closing tables正在将表中修改的数据刷新到磁盘中,同时正在关闭已经⽤完的表。
这是⼀个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out复制从服务器正在连接主服务器。
Copying to tmp table on disk由于临时结果集⼤于 tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
mysql中返回表的函数
mysql中返回表的函数MySQL中返回表的函数是用于查询数据库中的表结构信息的函数。
通过这些函数,我们可以获取表的名称、字段名称、字段类型、字段长度、字段约束等重要信息。
本文将介绍几个常用的MySQL函数,以帮助读者更好地了解表结构信息。
一、SHOW TABLES函数SHOW TABLES函数用于显示数据库中所有的表名。
使用该函数时,只需指定要查询的数据库名称即可。
例如,使用以下语句可以显示当前数据库中的所有表名:SHOW TABLES;该语句将返回一个结果集,其中包含当前数据库中的所有表名。
二、DESCRIBE函数DESCRIBE函数用于显示指定表的结构信息。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的结构信息:DESCRIBE students;该语句将返回一个结果集,其中包含了"students"表的字段名称、字段类型、字段长度、字段是否允许为空等信息。
三、SHOW COLUMNS函数SHOW COLUMNS函数用于显示指定表的列信息。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的列信息:SHOW COLUMNS FROM students;该语句将返回一个结果集,其中包含了"students"表的每一列的详细信息,包括列名、数据类型、是否允许为空、默认值等。
四、SHOW CREATE TABLE函数SHOW CREATE TABLE函数用于显示指定表的创建语句。
使用该函数时,需要指定要查询的表名。
例如,使用以下语句可以显示名为"students"的表的创建语句:SHOW CREATE TABLE students;该语句将返回一个结果集,其中包含了"students"表的创建语句,包括表名、字段名称、字段类型、字段约束等。
mysql:showfullprocesslist详解
mysql:showfullprocesslist详解show full processlist 是显⽰⽤户正在运⾏的线程,需要注意的是,除了 root ⽤户能看到所有正在运⾏的线程外,其他⽤户都只能看到⾃⼰正在运⾏的线程,看不到其它⽤户正在运⾏的线程。
除⾮单独个这个⽤户赋予了PROCESS 权限。
show processlist 显⽰的信息都是来⾃MySQL系统库 information_schema 中的 processlist 表。
所以使⽤下⾯的查询语句可以获得相同的结果:select * from information_schema.processlist了解这些基本信息后,下⾯我们看看查询出来的结果都是什么意思。
Id: 就是这个线程的唯⼀标识,当我们发现这个线程有问题的时候,可以通过 kill 命令,加上这个Id值将这个线程杀掉。
前⾯我们说了show processlist 显⽰的信息时来⾃information_schema.processlist 表,所以这个Id就是这个表的主键。
User: 就是指启动这个线程的⽤户。
Host: 记录了发送请求的客户端的 IP 和端⼝号。
通过这些信息在排查问题的时候,我们可以定位到是哪个客户端的哪个进程发送的请求。
DB: 当前执⾏的命令是在哪⼀个数据库上。
如果没有指定数据库,则该值为 NULL 。
Command: 是指此刻该线程正在执⾏的命令。
这个很复杂,下⾯单独解释Time: 表⽰该线程处于当前状态的时间。
State: 线程的状态,和 Command 对应,下⾯单独解释。
Info: ⼀般记录的是线程执⾏的语句。
默认只显⽰前100个字符,也就是你看到的语句可能是截断了的,要看全部信息,需要使⽤ show full processlist。
下⾯我们单独看⼀下 Command 的值:Binlog Dump: 主节点正在将⼆进制⽇志,同步到从节点Change User: 正在执⾏⼀个 change-user 的操作Close Stmt: 正在关闭⼀个Prepared Statement 对象Connect: ⼀个从节点连上了主节点Connect Out: ⼀个从节点正在连主节点Create DB: 正在执⾏⼀个create-database 的操作Daemon: 服务器内部线程,⽽不是来⾃客户端的链接Debug: 线程正在⽣成调试信息Delayed Insert: 该线程是⼀个延迟插⼊的处理程序Drop DB: 正在执⾏⼀个 drop-database 的操作Execute: 正在执⾏⼀个 Prepared StatementFetch: 正在从Prepared Statement 中获取执⾏结果Field List: 正在获取表的列信息Init DB: 该线程正在选取⼀个默认的数据库Kill : 正在执⾏ kill 语句,杀死指定线程Long Data: 正在从Prepared Statement 中检索 long dataPing: 正在处理 server-ping 的请求Prepare: 该线程正在准备⼀个 Prepared StatementProcessList: 该线程正在⽣成服务器线程相关信息Query: 该线程正在执⾏⼀个语句Quit: 该线程正在退出Refresh:该线程正在刷表,⽇志或缓存;或者在重置状态变量,或者在复制服务器信息Register Slave:正在注册从节点Reset Stmt: 正在重置 prepared statementSet Option: 正在设置或重置客户端的 statement-execution 选项Shutdown: 正在关闭服务器Sleep: 正在等待客户端向它发送执⾏语句Statistics: 该线程正在⽣成 server-status 信息Table Dump: 正在发送表的内容到从服务器Time: Unused如果有歧义可以查看官⽅⽂档:下⾯我们看看 State 的值有哪些:官⽅⽂档关于 State 的解释:下⾯是常⽤到的SQL,记录下来便于使⽤。
mysql查询表结构的sql语句
mysql查询表结构的sql语句要查询 MySQL 表的结构,可以使用以下 SQL 语句:1. 使用 CREATE TABLE 语句查询表结构:```SELECT * FROM create_table_query();```其中,`create_table_query()`可以是以下任意一种形式:- 使用 CREATE TABLE AS SELECT 语句:```CREATE TABLE AS SELECT * FROM table_name WHERE condition; ```- 使用 CREATE TABLE 语句:```CREATE TABLE table_name (column_name datatype,column_name datatype,...);```2. 使用 SHOW TABLE STATUS 语句查询表状态:```SHOW TABLE STATUS FROM table_name;```其中,`table_name`是要查询的表名。
此语句将返回表的状态信息,包括表的大小、占用空间、锁定状态等。
3. 使用 SHOW COLUMNS FROM 语句查询表列:```SHOW COLUMNS FROM table_name WHERE column_name = value; ```其中,`table_name`是要查询的表名,`column_name`是要查询的列名,`value`是要查询的列值。
此语句将返回指定列的详细信息,包括列名、数据类型、长度、默认值等。
4. 使用 EXPLAIN 语句查询查询计划:```EXPLAIN SELECT * FROM table_name WHERE condition;```其中,`table_name`是要查询的表名,`condition`是要查询的过滤条件。
此语句将返回查询计划,包括查询使用的索引等信息。
mysql查询表结构的sql语句
mysql查询表结构的sql语句正文:要查询MySQL数据库中表的结构,可以使用DESCRIBE语句或SHOW COLUMNS语句。
这些语句可以向用户提供有关表的详细信息,如列名、数据类型、键信息等。
1. DESCRIBE语句:使用DESCRIBE语句可以获取表的结构信息。
语法如下:DESCRIBE table_name;例如,如果想要查询名为'customers'的表的结构,可以执行以下语句:DESCRIBE customers;这将返回一个包含列名、数据类型、键信息等的结果集。
2. SHOW COLUMNS语句:SHOW COLUMNS语句也可以用于查询表的结构信息。
语法如下:SHOW COLUMNS FROM table_name;例如,如果要查询名为'orders'的表的结构,可以执行以下语句:SHOW COLUMNS FROM orders;这将返回一个包含列名、数据类型、键信息等的结果集。
以上两种方法都可以用来查询表的结构信息,具体选择哪种方法取决于个人偏好和需求。
DESCRIBE语句通常更简洁,而SHOW COLUMNS语句提供了更多的选项来自定义查询结果。
另外,如果想要查看整个数据库中所有表的结构,可以使用SHOW TABLES语句获取所有表名,然后逐个执行DESCRIBE或SHOW COLUMNS 语句来获取每个表的结构信息。
综上所述,通过使用DESCRIBE或SHOW COLUMNS语句,您可以轻松地查询MySQL数据库中表的结构信息。
这对于了解表的列、数据类型和键信息等非常有用,以便进行进一步的数据分析和查询优化。
MySQL连接数和状态查看命令
MySQL连接数和状态查看命令MySQL 连接数和状态查看命令以下命令是登陆 MySQL的cli 之后执⾏命令1. 查看MySQL实例的当前连接数:show processlistshow processlist: 列出当前⽤户的前100条连接信息;show full processlist: 列出当前⽤户的所有连接信息;当root⽤户登陆后,能够查看所有⽤户的连接数;2. 查看MySQL实例的状态: show statusshow status: 列出mysql的所有status 的变量(variable_name)的值variable_name;show status like '%Variable_name%': 列出MySQL的status变量名为Variable_name的变量的值;mysql 常⽤status变量如下表:status Variable_name value 值含义Aborted_clients 由于客户没有正确关闭连接,已经丢弃死掉的连接数量Aborted_connects 尝试已经丢弃的失败的MySQL服务器的连接的数量Connections 试图连接MySQL服务器的次数Created_tmp_tables 当执⾏语句时,已经被创造了的隐含临时表的数量Delayed_insert_threads 正在使⽤的延迟插⼊处理器线程的数量Delayed_writes ⽤INSERT DELAYED写⼊的⾏数Delayed_errors ⽤INSERT DELAYED写⼊的发⽣某些错误(可能重复键值)的⾏数Flush_commands 执⾏FLUSH命令的次数Handler_delete 请求从⼀张表中删除⾏的次数Handler_read_first 请求读⼊表中第⼀⾏的次数Handler_read_key 请求数字基于键读⾏Handler_read_next 请求读⼊基于⼀个键的⼀⾏的次数Handler_read_rnd 请求读⼊基于⼀个固定位置的⼀⾏的次数Handler_update 请求更新表中⼀⾏的次数Handler_write 请求向表中插⼊⼀⾏的次数Key_blocks_used ⽤于关键字缓存的块的数量Key_read_requests 请求从缓存读⼊⼀个键值的次数Key_reads 从磁盘物理读⼊⼀个键值的次数Key_write_requests 请求将⼀个关键字块写⼊缓存次数Key_writes 将⼀个键值块物理写⼊磁盘的次数Max_used_connections 同时使⽤的连接的最⼤数⽬Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块Not_flushed_delayed_rows 在INSERT DELAY队列中等待写⼊的⾏的数量Open_tables 打开表的数量Open_files 打开⽂件的数量Open_streams 打开流的数量(主要⽤于⽇志记载)Opened_tables 已经打开的表的数量Questions 发往服务器的查询的数量Slow_queries 要花超过long_query_time时间的查询数量Threads_connected 当前打开的连接的数量Threads_running 不在睡眠的线程数量Uptime 服务器⼯作了多少秒3. 查看MySQL的实例的变量:show variables: 列出所有变量的(key, value) ;show variables like '%var%': 列出变量名中包含var 的变量的(key, value)select @@varible_name : 查询变量名为 variable_name的的变量的(key,value)eg: 查看db是否为ready_only:show variables like '%read_only%';select @@read_only;查看db的连接数限制:show variables like '%connection%';。
