MySQL 保留字关键字 列表
如何使用MySQL进行全文搜索和关键词过滤
如何使用MySQL进行全文搜索和关键词过滤在当前信息爆炸的时代,全文搜索和关键词过滤成为了数据处理领域中不可或缺的一部分。
而MySQL作为一款广泛使用的关系型数据库管理系统,它的全文搜索和关键词过滤功能也备受人们的关注。
本文将为你介绍如何使用MySQL进行全文搜索和关键词过滤。
一、全文搜索的概念和应用场景全文搜索是指根据关键词在文本中的出现频率和位置等特征,对文本内容进行相关性排序的一种技术。
全文搜索广泛应用于网站搜索、电商平台商品搜索、社交媒体数据分析等场景。
在MySQL中,全文搜索功能是通过MySQL的全文索引技术来实现的。
全文索引是指将待搜索的文本内容转换成一种结构,以提高搜索的效率和准确性。
二、MySQL的全文索引功能介绍MySQL的全文索引功能可以在InnoDB和MyISAM存储引擎中使用。
通过建立全文索引,可以在一张数据库表中的一个或多个文本字段上进行全文搜索。
在MySQL中,使用ALTER TABLE语句来创建全文索引。
下面是一个示例,展示如何在MySQL中创建全文索引:```ALTER TABLE `tablename` ADD FULLTEXT(`columnname`);```在实际应用中,可以根据需要创建多个全文索引,以便在不同的字段上进行全文搜索。
三、MySQL全文搜索的基本用法MySQL全文搜索的基本用法可以通过使用MATCH() AGAINST()函数来实现。
MATCH()函数用于指定需要搜索的字段,AGAINST()函数用于指定搜索的关键词。
下面是一个示例,展示如何在MySQL中进行全文搜索:```SELECT * FROM `tablename` WHERE MATCH(`columnname`)AGAINST('keyword');```在实际应用中,可以通过组合使用AND和OR操作符,进一步扩展和细化搜索范围。
例如:```SELECT * FROM `tablename` WHERE MATCH(`columnname1`)AGAINST('keyword1')AND MATCH(`columnname2`) AGAINST('keyword2');```通过使用全文搜索功能,可以快速、高效地检索到相关的文本内容,提高数据处理的效率。
MySQL中REGEXP正则表达式使用大全
MySQL中REGEXP正则表达式使⽤⼤全像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使⽤like即可,但复杂的还是需要使⽤regexp了,下⾯我们来看看。
MySql⽤户⼿册建议,在构造简单查询时,仍使⽤通配符。
如:Select [*|fieldname list] From [tablename] where [fieldname] like ["%someletter"|"%someletter%","_","?someletter"];但在⼀些特殊查询中,不⽤是不⾏的。
MYSQL提供的WHERE谓词有三个,分别是:REGEXP, RLIKE, NOT RLIKE⽤这三个替换原有的LIKE谓词,后⾯即可以跟。
例如要查询字段中含有“_”的数据,则要⽤以下查询语句:SELECT * FROM TABLENAME WHERE FIELDNAME RLIKE '.[_].';扩展正则表达式的⼀些字符是:· ‘.’匹配任何单个的字符。
· 字符类“[...]”匹配在⽅括号内的任何字符。
例如,“[abc]”匹配“a”、“b”或“c”。
为了命名字符的范围,使⽤⼀个“-”。
“[a-z]”匹配任何字母,⽽“[0-9]”匹配任何数字。
· “ * ”匹配零个或多个在它前⾯的字符。
例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,⽽“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地⽅匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
为了定位⼀个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使⽤“^”或在模式的结尾⽤“$”。
为了找出以“b”开头的名字,使⽤“^”匹配名字的开始:使⽤正则SELECT * FROM pet WHERE name REGEXP BINARY ‘^b’;SELECT * FROM pet WHERE name REGEXP ‘fy$’;SELECT * FROM pet WHERE name REGEXP ‘w’;SELECT * FROM pet WHERE name REGEXP ‘^…..$’;SELECT * FROM pet WHERE name REGEXP ‘^.{5}$’;今天在应⽤中遇到了这样的⼀个问题,有⼀个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2需要从⾥⾯搜索出⽐如说:第⼀个逗号前的数字范围为3-5之间,第三个逗号前的数字的范围为3-5之间,第10个逗号前的数字范围为3-5之间,其余的都为1-5之间。
使用MySQL进行全文搜索和关键字匹配
使用MySQL进行全文搜索和关键字匹配在当今信息爆炸的时代,人们对于快速准确地搜索和匹配关键字的需求越来越高。
而对于开发者来说,如何在数据库中进行全文搜索和关键字匹配也成为了一个必备的技能。
在本文中,我们将探讨如何使用MySQL进行全文搜索和关键字匹配,并介绍一些相关的技术和方法。
一、MySQL全文搜索MySQL是一个广泛使用的关系型数据库管理系统,它提供了全文搜索的功能,可以帮助我们在大量的文本数据中快速进行关键字匹配。
MySQL的全文搜索功能基于一种叫做“倒排索引”的技术,这种技术可以帮助我们快速定位文本中某个关键词的位置,从而实现高效的搜索。
在MySQL中,要使用全文搜索功能,首先需要创建一个全文索引。
全文索引是根据文本中的关键词创建的一种特殊索引,它记录了每个关键词在文本中的位置信息。
在创建全文索引时,可以指定需要索引的列,并设置相应的参数。
在创建了全文索引之后,我们可以使用MySQL提供的全文搜索函数来进行关键字匹配。
MySQL提供了两种全文搜索函数:MATCH()和AGAINST()。
MATCH()函数用于指定需要搜索的列,而AGAINST()函数用于指定需要匹配的关键词。
通过将这两个函数结合起来使用,我们可以实现在数据库中进行全文搜索和关键字匹配的功能。
二、关键字匹配除了全文搜索外,MySQL还提供了其他一些用于关键字匹配的功能。
比如,我们可以使用LIKE运算符来匹配包含某个特定关键字的记录。
这种方法虽然可以实现简单的关键字匹配,但是效率较低,特别是在处理大量数据时。
因此,对于大规模的关键字匹配,推荐使用全文搜索功能。
另外,MySQL还提供了一种叫做“正则表达式”的功能,可以帮助我们更灵活地进行关键字匹配。
正则表达式是一种用于描述字符串模式的表达式,它可以在文本中匹配符合某个特定模式的字符串。
通过在查询中使用正则表达式,我们可以实现更复杂的关键字匹配功能。
三、使用MySQL进行全文搜索和关键字匹配的实例接下来,我们将通过一个实际的例子来展示如何使用MySQL进行全文搜索和关键字匹配。
mysql关键字语句用法
mysql关键字语句用法MySQL是一个流行的关系型数据库管理系统,它提供了许多关键字语句用于执行各种操作和查询。
本篇文章将介绍MySQL中常用的一些关键字语句及其用法。
一、SELECT语句SELECT语句用于从数据库中检索数据。
它是最常用的MySQL关键字之一。
SELECT语句的基本语法如下:```scssSELECT列名1,列名2,...FROM表名WHERE条件;```*列名:要检索的列的名称。
*表名:要查询的表的名称。
*条件:可选的筛选条件,用于限制返回的结果。
例如,要从名为"users"的表中检索所有用户的姓名和年龄,可以使用以下语句:```sqlSELECTname,ageFROMusers;```二、INSERT语句INSERT语句用于向数据库表中插入新数据。
它的基本语法如下:```scssINSERTINTO表名(列1,列2,...)VALUES(值1,值2,...);```*表名:要插入数据的表的名称。
*列名:要插入数据的列的名称,用括号中的逗号分隔。
*值:要插入的实际值,与列名相对应。
例如,要在"users"表中插入一条新记录,包含姓名"John"和年龄30,可以使用以下语句:```sqlINSERTINTOusers(name,age)VALUES('John',30);```三、UPDATE语句UPDATE语句用于更新数据库表中的数据。
它的基本语法如下:```scssUPDATE表名SET列名1=值1,列名2=值2,...WHERE条件;```*表名:要更新数据的表的名称。
*SET:指定要更新的列及其新值。
可以使用逗号分隔多个列和值。
*WHERE:可选的条件,用于限制更新的行。
如果不指定WHERE子句,将会更新表中的所有行。
例如,要将"users"表中姓名为"John"的年龄增加5岁,可以使用以下语句:```sqlUPDATEusersSETage=age+5WHEREname='John';```四、DELETE语句DELETE语句用于从数据库表中删除数据。
MySql多个字段关键字分词模糊查询,按照最佳匹配度排序,使用LOCATE函数
MySql多个字段关键字分词模糊查询,按照最佳匹配度排序,使用LOCATE函数 SELECT DISTINCT t.* FROM pub_course t LEFT JOIN course_tag t1 ON ( t1.entitytype = t.type AND t1.entityid = t.id ) WHERE t.ishide != 1 AND t.pubstatus = 1 AND ( t. NAME LIKE '%盛放的彩铅%' OR t. NAME = '盛放的彩铅' OR t. NAME LIKE '%彩铅%' OR t. NAME = '彩铅' OR t. NAME LIKE '%盛放%' OR t. AME = '盛放' OR t.createname LIKE '%盛放的彩铅%' OR t.createname = '盛放的彩铅' OR t1.tlname LIKE '%盛放的彩铅%' OR t1.tlname = '盛放的彩铅' OR t.createname LIKE '%彩铅%' OR t.createname = '彩铅' OR t1.tlname LIKE '%彩铅%' OR t1.tlname = '彩铅' OR t.createname LIKE '%盛放%' OR t.createname = '盛放' OR t1.tlname LIKE '%盛放%' OR t1.tlname = '盛放' ) ORDER BY LOCATE('盛放的彩铅',) DESC, t.hotlevel DESC, t.score DESC, t.buynum DESC, t.pubtime DESC
使用MySQL进行全文搜索和关键字查询
使用MySQL进行全文搜索和关键字查询引言在互联网时代,数据的存储和管理变得越来越重要。
无论是网站还是应用程序,都需要对大量的数据进行搜索和查询。
MySQL作为一种常见的关系型数据库管理系统,提供了丰富的功能来支持全文搜索和关键字查询。
本文将介绍如何使用MySQL进行全文搜索和关键字查询,并讨论其应用场景和常见的问题与挑战。
一、MySQL全文搜索功能的基本原理MySQL的全文搜索功能是通过全文索引来实现的。
全文索引是一种特殊的数据结构,用于加速文本搜索的速度和效率。
在MySQL中,全文索引可以用于对文本列进行搜索,比如文章的标题、内容或者用户的评论等。
全文索引的基本原理是将文本数据切分为多个词项(Term)并建立索引。
词项可以是一个单词、一个短语或者一个单词的一部分。
索引记录了每个词项在原始文本中的位置,以及相关的一些元数据。
当进行查询时,MySQL会利用这些索引来快速定位匹配的文档。
二、MySQL全文搜索功能的使用方法1. 创建全文索引在MySQL中,要使用全文搜索功能,首先需要在相应的表中创建全文索引。
可以使用ALTER TABLE语句来添加全文索引,比如:```sqlALTER TABLE `articles` ADD FULLTEXT(`title`, `content`);```上述语句在`articles`表的`title`和`content`列上添加了全文索引。
需要注意的是,只有InnoDB和MyISAM存储引擎支持全文索引。
2. 执行全文搜索查询创建了全文索引之后,就可以通过MATCH AGAINST语句进行全文搜索查询。
比如:```sqlSELECT * FROM `articles` WHERE MATCH(`title`, `content`)AGAINST('MySQL全文搜索');```上述语句将返回`articles`表中标题或内容包含"MySQL全文搜索"的相关记录。
MySQL关键字
MySQL关键字EXPLAINexplain模拟优化器执⾏SQL语句,在5.6以及以后的版本中,除过select,其他⽐如insert,update和delete均可以使⽤explain查看执⾏计划,从⽽知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。
作⽤1. 表的读取顺序2. 数据读取操作的操作类型3. 哪些索引可以使⽤4. 哪些索引被实际使⽤5. 表之间的引⽤6. 每张表有多少⾏被优化器查询执⾏计划包含的信息如下信息描述id查询的序号,包含⼀组数字,表⽰查询中执⾏select⼦句或操作表的顺序。
ID相同:执⾏顺序从上往下。
ID不同:id值越⼤,优先级越⾼,越先执⾏select_type 查询类型,主要⽤于区别普通查询,联合查询,⼦查询等的复杂查询simple ——简单的select查询,查询中不包含⼦查询或者UNIONprimary ——查询中若包含任何复杂的⼦部分,最外层查询被标记subquery——在select或where列表中包含了⼦查询derived——在from列表中包含的⼦查询被标记为derived(衍⽣),MySQL会递归执⾏这些⼦查询,把结果放到临时表中union——如果第⼆个select出现在UNION之后,则被标记为UNION,如果union包含在from⼦句的⼦查询中,外层select被标记为derivedunion result——UNION 的结果table输出的⾏所引⽤的表type 显⽰联结类型,显⽰查询使⽤了何种类型,按照从最佳到最坏类型排序system——表中仅有⼀⾏(=系统表)这是const联结类型的⼀个特例。
const——表⽰通过索引⼀次就找到,const⽤于⽐较primary key或者unique索引。
因为只匹配⼀⾏数据,所以如果将主键置于where列表中,mysql能将该查询转换为⼀个常量eq_ref——唯⼀性索引扫描,对于每个索引键,表中只有⼀条记录与之匹配。
MySQL关键字及保留字
MySQL关键字及保留字在SQL语句中出现的关键字和保留字如果要使⽤⼈他们的字符意思⽽不是作为关键字、保留字使⽤,关键字可以正常使⽤,但是保留字必须使⽤`(键盘tab键上⾯,数字1左边的那个按键)来分割。
这个在SQLServer⾥⾯是使⽤[]中括号实现的。
所以我们要尽量避免使⽤关键字和保留字来作为表明和字段名。
下⾯是mysql 5.7的关键字和保留字:官⽅⽂档地址Table 1 Keywords and Reserved Words in MySQL 5.7ACCESSIBLE (R)ACCOUNT ACTIONADD (R)AFTER AGAINSTAGGREGATE ALGORITHM ALL (R)ALTER (R)ALWAYS ANALYSEANALYZE (R)AND (R)ANYAS (R)ASC (R)ASCIIASENSITIVE (R)AT AUTOEXTEND_SIZEAUTO_INCREMENT AVG AVG_ROW_LENGTHBACKUP BEFORE (R)BEGINBETWEEN (R)BIGINT (R)BINARY (R)BINLOG BIT BLOB (R)BLOCK BOOL BOOLEANBOTH (R)BTREE BY (R)BYTE CACHE CALL (R)CASCADE (R)CASCADED CASE (R)CATALOG_NAME CHAIN CHANGE (R)CHANGED CHANNEL CHAR (R)CHARACTER (R)CHARSET CHECK (R)CHECKSUM CIPHER CLASS_ORIGINCLIENT CLOSE COALESCECODE COLLATE (R)COLLATIONCOLUMN (R)COLUMNS COLUMN_FORMATCOLUMN_NAME COMMENT COMMITCOMMITTED COMPACT COMPLETIONCOMPRESSED COMPRESSION CONCURRENTCONDITION (R)CONNECTION CONSISTENTCONSTRAINT (R)CONSTRAINT_CATALOG CONSTRAINT_NAMECONSTRAINT_SCHEMA CONTAINS CONTEXTCONTINUE (R)CONVERT (R)CPUCREATE (R)CROSS (R)CUBECURRENT CURRENT_DATE (R)CURRENT_TIME (R)CURRENT_TIMESTAMP (R)CURRENT_USER (R)CURSOR (R)CURSOR_NAME DATA DATABASE (R)DATABASES (R)DATAFILE DATEDATETIME DAY DAY_HOUR (R)DAY_MICROSECOND (R)DAY_MINUTE (R)DAY_SECOND (R)DEALLOCATE DEC (R)DECIMAL (R)DECLARE (R)DEFAULT (R)DEFAULT_AUTHDEFINER DELAYED (R)DELAY_KEY_WRITEDELETE (R)DESC (R)DESCRIBE (R)DES_KEY_FILE DETERMINISTIC (R)DIAGNOSTICS DIRECTORY DISABLE DISCARDDISK DISTINCT (R)DISTINCTROW (R)DIV (R)DO DOUBLE (R)DROP (R)DUAL (R)DUMPFILE DUPLICATE DYNAMIC EACH (R)ELSE (R)ELSEIF (R)ENABLE ENCLOSED (R)ENCRYPTION ENDENDS ENGINE ENGINESENUM ERROR ERRORSESCAPE ESCAPED (R)EVENTEVENTS EVERY EXCHANGE EXECUTE EXISTS (R)EXIT (R) EXPANSION EXPIRE EXPLAIN (R)EXPORT EXTENDED EXTENT_SIZEFALSE (R)FAST FAULTSFETCH (R)FIELDS FILEFILE_BLOCK_SIZE FILTER FIRSTFIXED FLOAT (R)FLOAT4 (R)FLOAT8 (R)FLUSH FOLLOWSFOR (R)FORCE (R)FOREIGN (R) FORMAT FOUND FROM (R)FULL FULLTEXT (R)FUNCTION GENERAL GENERATED (R)GEOMETRY GEOMETRYCOLLECTION GET (R)GET_FORMAT GLOBAL GRANT (R)GRANTSGROUP (R)GROUP_REPLICATION HANDLERHASH HAVING (R)HELPHIGH_PRIORITY (R)HOST HOSTSHOUR HOUR_MICROSECOND (R)HOUR_MINUTE (R) HOUR_SECOND (R)IDENTIFIED IF (R)IGNORE (R)IGNORE_SERVER_IDS IMPORTIN (R)INDEX (R)INDEXESINFILE (R)INITIAL_SIZE INNER (R)INOUT (R)INSENSITIVE (R)INSERT (R)INSERT_METHOD INSTALL INSTANCEINT (R)INT1 (R)INT2 (R)INT3 (R)INT4 (R)INT8 (R)INTEGER (R)INTERVAL (R)INTO (R)INVOKER IO IO_AFTER_GTIDS (R)IO_BEFORE_GTIDS (R)IO_THREAD IPCIS (R)ISOLATION ISSUERITERATE (R)JOIN (R)JSONKEY (R)KEYS (R)KEY_BLOCK_SIZEKILL (R)LANGUAGE LASTLEADING (R)LEAVE (R)LEAVESLEFT (R)LESS LEVELLIKE (R)LIMIT (R)LINEAR (R)LINES (R)LINESTRING LISTLOAD (R)LOCAL LOCALTIME (R) LOCALTIMESTAMP (R)LOCK (R)LOCKSLOGFILE LOGS LONG (R) LONGBLOB (R)LONGTEXT (R)LOOP (R)LOW_PRIORITY (R)MASTER MASTER_AUTO_POSITION MASTER_BIND (R)MASTER_CONNECT_RETRY MASTER_DELAY MASTER_HEARTBEAT_PERIOD MASTER_HOST MASTER_LOG_FILE MASTER_LOG_POS MASTER_PASSWORD MASTER_PORT MASTER_RETRY_COUNT MASTER_SERVER_ID MASTER_SSLMASTER_RETRY_COUNT MASTER_SERVER_ID MASTER_SSLMASTER_SSL_CA MASTER_SSL_CAPATH MASTER_SSL_CERTMASTER_SSL_CIPHER MASTER_SSL_CRL MASTER_SSL_CRLPATH MASTER_SSL_KEY MASTER_SSL_VERIFY_SERVER_CERT (R)MASTER_TLS_VERSION MASTER_USER MATCH (R)MAXVALUE (R)MAX_CONNECTIONS_PER_HOUR MAX_QUERIES_PER_HOUR MAX_ROWSMAX_SIZE MAX_STATEMENT_TIME MAX_UPDATES_PER_HOUR MAX_USER_CONNECTIONS MEDIUM MEDIUMBLOB (R) MEDIUMINT (R)MEDIUMTEXT (R)MEMORYMERGE MESSAGE_TEXT MICROSECONDMIDDLEINT (R)MIGRATE MINUTEMINUTE_MICROSECOND (R)MINUTE_SECOND (R)MIN_ROWSMOD (R)MODE MODIFIES (R)MODIFY MONTH MULTILINESTRING MULTIPOINT MULTIPOLYGON MUTEXMYSQL_ERRNO NAME NAMESNATIONAL NATURAL (R)NCHARNDB NDBCLUSTER NEVERNEW NEXT NONODEGROUP NONBLOCKING NONENOT (R)NO_WAIT NO_WRITE_TO_BINLOG (R) NULL (R)NUMBER NUMERIC (R)NVARCHAR OFFSET OLD_PASSWORDON (R)ONE ONLYOPEN OPTIMIZE (R)OPTIMIZER_COSTS (R) OPTION (R)OPTIONALLY (R)OPTIONSOR (R)ORDER (R)OUT (R)OUTER (R)OUTFILE (R)OWNERPACK_KEYS PAGE PARSERPARSE_GCOL_EXPR PARTIAL PARTITION (R) PARTITIONING PARTITIONS PASSWORDPHASE PLUGIN PLUGINSPLUGIN_DIR POINT POLYGONPORT PRECEDES PRECISION (R)PREPARE PRESERVE PREVPRIMARY (R)PRIVILEGES PROCEDURE (R) PROCESSLIST PROFILE PROFILESPROXY PURGE (R)QUARTERQUERY QUICK RANGE (R)READ (R)READS (R)READ_ONLYREAD_WRITE (R)REAL (R)REBUILDRECOVER REDOFILE REDO_BUFFER_SIZE REDUNDANT REFERENCES (R)REGEXP (R)RELAY RELAYLOG RELAY_LOG_FILERELAY_LOG_POS RELAY_THREAD RELEASE (R)RELOAD REMOVE RENAME (R) REORGANIZE REPAIR REPEAT (R) REPEATABLE REPLACE (R)REPLICATE_DO_DB REPLICATE_DO_TABLE REPLICATE_IGNORE_DB REPLICATE_IGNORE_TABLE REPLICATE_REWRITE_DB REPLICATE_WILD_DO_TABLE REPLICATE_WILD_IGNORE_TABLE REPLICATION REQUIRE (R)RESETRESIGNAL (R)RESTORE RESTRICT (R)RESUME RETURN (R)RETURNED_SQLSTATE RETURNS REVERSE REVOKE (R)RIGHT (R)RLIKE (R)ROLLBACKROLLUP ROTATE ROUTINEROW ROWS ROW_COUNTROW_FORMAT RTREE SAVEPOINTSCHEDULE SCHEMA (R)SCHEMAS (R)SCHEMA_NAME SECOND SECOND_MICROSECOND (R) SECURITY SELECT (R)SENSITIVE (R) SEPARATOR (R)SERIAL SERIALIZABLESERVER SESSION SET (R)SHARE SHOW (R)SHUTDOWNSIGNAL (R)SIGNED SIMPLESLAVE SLOW SMALLINT (R) SNAPSHOT SOCKET SOMESONAME SOUNDS SOURCESPATIAL (R)SPECIFIC (R)SQL (R) SQLEXCEPTION (R)SQLSTATE (R)SQLWARNING (R)SQL_AFTER_GTIDS SQL_AFTER_MTS_GAPS SQL_BEFORE_GTIDS SQL_BIG_RESULT (R)SQL_BUFFER_RESULT SQL_CACHESQL_CALC_FOUND_ROWS (R)SQL_NO_CACHE SQL_SMALL_RESULT (R) SQL_THREAD SQL_TSI_DAY SQL_TSI_HOURSQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEARSSL (R)STACKED STARTSTARTING (R)STARTS STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES STATUSSTOP STORAGE STORED (R) STRAIGHT_JOIN (R)STRING SUBCLASS_ORIGIN SUBJECT SUBPARTITION SUBPARTITIONS SUPER SUSPEND SWAPSSWITCHES TABLE (R)TABLES TABLESPACE TABLE_CHECKSUM TABLE_NAMETEMPORARY TEMPTABLE TERMINATED (R) TEXT THAN THEN (R)TIME TIMESTAMP TIMESTAMPADDTIMESTAMPDIFF TINYBLOB (R)TINYINT (R) TINYTEXT (R)TO (R)TRAILING (R) TRANSACTION TRIGGER (R)TRIGGERSTRUE (R)TRUNCATE TYPETYPES UNCOMMITTED UNDEFINEDUNDO (R)UNDOFILE UNDO_BUFFER_SIZE UNICODE UNINSTALL UNION (R)UNIQUE (R)UNKNOWN UNLOCK (R) UNSIGNED (R)UNTIL UPDATE (R) UPGRADE USAGE (R)USE (R)USER USER_RESOURCES USE_FRMUSING (R)UTC_DATE (R)UTC_TIME (R)UTC_TIMESTAMP (R)VALIDATION VALUEVALUES (R)VARBINARY (R)VARCHAR (R) VARCHARACTER (R)VARIABLES VARYING (R)VIEW VIRTUAL (R)WAITWARNINGS WEEK WEIGHT_STRING WHEN (R)WHERE (R)WHILE (R)WITH (R)WITHOUT WORKWRAPPER WRITE (R)X509XA XID XMLXOR (R)YEAR YEAR_MONTH (R) ZEROFILL (R)ACCOUNT: added in 5.7.6 (nonreserved)ALWAYS: added in 5.7.6 (nonreserved)CHANNEL: added in 5.7.6 (nonreserved)COMPRESSION: added in 5.7.8 (nonreserved)ENCRYPTION: added in 5.7.11 (nonreserved)FILE_BLOCK_SIZE: added in 5.7.6 (nonreserved)FILTER: added in 5.7.3 (nonreserved)FOLLOWS: added in 5.7.2 (nonreserved)FOLLOWS: added in 5.7.2 (nonreserved)GENERATED: added in 5.7.6 (reserved)GROUP_REPLICATION: added in 5.7.6 (nonreserved)INSTANCE: added in 5.7.11 (nonreserved)JSON: added in 5.7.8 (nonreserved)MASTER_TLS_VERSION: added in 5.7.10 (nonreserved)MAX_STATEMENT_TIME: added in 5.7.4 (nonreserved); removed in 5.7.8NEVER: added in 5.7.4 (nonreserved)NONBLOCKING: removed in 5.7.6OLD_PASSWORD: removed in 5.7.5OPTIMIZER_COSTS: added in 5.7.5 (reserved)PARSE_GCOL_EXPR: added in 5.7.6 (reserved); became nonreserved in 5.7.8 PRECEDES: added in 5.7.2 (nonreserved)REPLICATE_DO_DB: added in 5.7.3 (nonreserved)REPLICATE_DO_TABLE: added in 5.7.3 (nonreserved)REPLICATE_IGNORE_DB: added in 5.7.3 (nonreserved)REPLICATE_IGNORE_TABLE: added in 5.7.3 (nonreserved)REPLICATE_REWRITE_DB: added in 5.7.3 (nonreserved)REPLICATE_WILD_DO_TABLE: added in 5.7.3 (nonreserved)REPLICATE_WILD_IGNORE_TABLE: added in 5.7.3 (nonreserved)ROTATE: added in 5.7.11 (nonreserved)STORED: added in 5.7.6 (reserved)VALIDATION: added in 5.7.5 (nonreserved)VIRTUAL: added in 5.7.6 (reserved)WITHOUT: added in 5.7.5 (nonreserved)XID: added in 5.7.5 (nonreserved)Table 2 New Keywords and Reserved Words in MySQL 5.7 compared to MySQL 5.6ACCOUNT ALWAYS CHANNELCOMPRESSION ENCRYPTION FILE_BLOCK_SIZEFILTER FOLLOWS GENERATED (R)GROUP_REPLICATION INSTANCE JSONMASTER_TLS_VERSION NEVER OPTIMIZER_COSTS (R)PARSE_GCOL_EXPR PRECEDES REPLICATE_DO_DBREPLICATE_DO_TABLE REPLICATE_IGNORE_DB REPLICATE_IGNORE_TABLE REPLICATE_REWRITE_DB REPLICATE_WILD_DO_TABLE REPLICATE_WILD_IGNORE_TABLE ROTATE STACKED STORED (R)VALIDATION VIRTUAL (R)WITHOUTXID。
MySQL5.7中的关键字与保留字详解
MySQL5.7中的关键字与保留字详解什么是关键字和保留字关键字是指在SQL中有意义的字。
某些关键字(例如SELECT,DELETE或BIGINT)是保留的,需要特殊处理才能⽤作表和列名称等标识符。
这⼀点对于内置函数的名称也适⽤。
如何使⽤关键字和保留字⾮保留关键字允许作为标识符,不需要加引号。
如果您要适⽤保留字作为标识符,就必须适⽤引号。
举个例⼦,BEGIN和END是关键字,但不是保留字,因此它们⽤作标识符不需要引号。
INTERVAL是保留关键字,必须加上引号才能⽤作标识符。
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23mysql>mysql> use hoegh;Database changedmysql>mysql> CREATE TABLE interval (begin INT, end INT); ERROR 1064 (42000):mysql>mysql> CREATE TABLE`interval` (begin INT, end INT); Query OK, 0 rows affected (0.42 sec)mysql>mysql> show create table`interval`;+----------+---------------------------------------------------------| Table| Create Table+----------+---------------------------------------------------------| interval | CREATE TABLE`interval` (`begin` int(11) DEFAULT NULL,`end` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 |+----------+---------------------------------------------------------1 row in set(0.00 sec)mysql>我们看到,第⼀条语句中表名使⽤了保留字interval,执⾏失败;第⼆条语句对interval加了引号,执⾏成功。
如何在sql语句中使用保留字
如何在sql语句中使⽤保留字在sql语句中,有些特殊字符,是sql保留的。
⽐如 ' [ ] 等。
我们可以先看看它们的⽤法。
当需要查询某数据时,加⼊条件语句,或着当你需要insert记录时,我们⽤ ' 来将字符类型的数据引起来。
⽐如:Select*from Customers where City ='London'当表的名字或列的名字中,含有空格等⼀些特殊字符时,我们需要⽤[] 将表名引起来,告诉语法分析器,[]号内的才是⼀个完整的名称。
⽐如Select*from[Order Details]如果,字符数据中,含有 ' 改怎么办呢?其实,好多⼈在这⾥并没有处理字符川中 ' 符号,才造成sql 注射危险。
就那上⾯的那个例⼦。
在Sql语句拼接的时代,⽐如string sql = "select*from Customers where CustomerID ='" + temp + "'";如果,我给temp赋值为 Tom' or 1=1 ---那么你拼接起来的语句为 select * from Customers where CustomerID = 'Tom' or 1=1 --- '哈哈,1=1 衡为真,---会把后⾯的sql语句注释掉。
⽽前⾯因为有输⼊的 ' ⽽使的语句是合法的。
那or的条件,会把所有的记录都选出来。
这就是sql注⼊。
在做⽤户登陆时,如果没有处理该问题,那你的系统受危害的可能性会很⾼的。
如何处理字符数据中的 ' 符号呢?⽅法很简单,⽤两个 ' 符号代替⼀个。
⽐如,其实际传⼊的值为Lon'don,处理后为Select*from Customers where City ='Lon''don'如果表或列的名称中含有 [ 或 ] 字符呢?⽐如Select * from [Order] Details],那中间 ] 符号岂不是先和第⼀个[ 配了。
使用MySQL进行全文搜索和关键词匹配
使用MySQL进行全文搜索和关键词匹配一、引言在如今的信息时代,全文搜索和关键词匹配已经成为了人们日常生活中必不可少的功能。
无论是在网上搜索引擎中查找信息,还是在数据库中查询特定内容,都需要使用全文搜索和关键词匹配技术。
本文将介绍如何使用MySQL进行全文搜索和关键词匹配,帮助读者更好地理解和应用这一技术。
二、全文搜索1. 概述全文搜索指的是根据一段文本中的关键词或词组进行搜索的过程。
与传统的模糊搜索不同,全文搜索更加精确和高效。
在MySQL中,可以通过使用全文索引和MATCH AGAINST语句来实现全文搜索。
2. 创建全文索引要使用全文搜索功能,首先需要在相应的表中创建全文索引。
在MySQL中,可以使用FULLTEXT索引来创建全文索引。
例如,我们有一个名为“articles”的表,其中包含“title”和“content”两个字段,我们可以通过以下SQL语句来创建全文索引:CREATE FULLTEXT INDEX ft_index ON articles(title, content);3. 使用MATCH AGAINST语句创建了全文索引之后,就可以使用MATCH AGAINST语句进行全文搜索。
MATCH AGAINST语句用于搜索与指定关键词匹配的记录,并按照匹配度进行排序。
例如,我们要在“articles”表中搜索包含“MySQL全文搜索”的文章,可以使用以下SQL语句:SELECT * FROM articles WHERE MATCH(title, content) AGAINST('MySQL全文搜索');需要注意的是,MATCH AGAINST语句默认情况下只能搜索到匹配度大于50%的记录。
如果要搜索到匹配度小于50%的记录,可以在MATCH AGAINST语句中使用IN BOOLEAN MODE选项。
4. 其他全文搜索技巧除了基本的全文搜索功能,MySQL还提供了一些其他的全文搜索技巧。
mysql常用语句及关键字
mysql常⽤语句及关键字⼀、常⽤sql语句注意,关键字和函数最好⼤写,字段和表名⼩写,这样很容易区分。
1.创建数据库t_userCREATE DATABASE t_user;2.删除数据库t_userDROP DATABASE t_user;3.使⽤数据库t_userUSE t_user;显⽰数据库中的表SHOW TABLES;4.创建数据表 t_order表名的命名规范为表名必须⽤ t_ 、tb_的前缀,或者是业务模块前缀。
⽐如t_orderCREATE TABLE t_order (id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键,⾃增id',order_id VARCHAR(25) NOT NULL COMMENT '订单号,唯⼀',pay_status TINYINT(2) UNSIGNED DEFAULT 0 COMMENT '1:未⽀付,2:⽀付成功,3:⽀付失败, 4:已下单,5:申请退款,6:退款成功,7:退款失败 ',user_id INT(11) NOT NULL COMMENT '⽤户id',total_price DECIMAL(25,2) NOT NULL DEFAULT 0.00 COMMENT '交易⾦额',result TEXT COMMENT '结果',order_desc VARCHAR(128) NOT NULL DEFAULT '' COMMENT '订单描述',is_overtime TINYINT(1) DEFAULT 0 COMMENT '是否超时,0表⽰否,1表⽰是',create_date DATE DEFAULT NULL COMMENT '购买⽇期',create_time TIMESTAMP COMMENT '创建时间',update_time TIMESTAMP COMMENT '更新时间',PRIMARY KEY (id),UNIQUE KEY uk_order_id (order_id),INDEX idx_order (order_id,pay_status,user_id)) ENGINE=INNODB DEFAULT CHARSET=utf8AUTO_INCREMENT 表⽰⾃增,UNSIGNED 表⽰⽆符号,UNIQUE 表⽰唯⼀约束,COMMENT为字段描述。
MySQL字段命名不能使用的MySQL关键字
MySQL字段命名不能使⽤的MySQL关键字#今天遇到⼀个问题,把某⼀字段重新命名为condition时报错,于是联想到可能是MySQL的关键字,⽤``引起来后,问题解决。
#在MySQL数据库中,Table字段不能使⽤MySQL关键字;#【如果⾮要使⽤这些关键字,则需要在关键前后添加 `keyword` 反引号以⽰区分】#MySQL允许部分关键字⽤做未引起来的识别符,因为许多⼈以前曾使⽤过它们。
#像name,type 这种常⽤的字段,MySQL 做了⼀些处理 name 不报错 type 报错;#常⽤字段跟 MySQL 关键字冲突的解决⽅法:#键盘1左边的反引号括起来,即以`name`的形式括;# mysql关键字有以下这些:ADD ALL ALTERANALYZE AND ASASC ASENSITIVE BEFOREBETWEEN BIGINT BINARYBLOB BOTH BYCALL CASCADE CASECHANGE CHAR CHARACTERCHECK COLLATE COLUMNCONDITION CONNECTION CONSTRAINTCONTINUE CONVERT CREATECROSS CURRENT_DATE CURRENT_TIMECURRENT_TIMESTAMP CURRENT_USER CURSORDATABASE DATABASES DAY_HOURDAY_MICROSECOND DAY_MINUTE DAY_SECONDDEC DECIMAL DECLAREDEFAULT DELAYED DELETEDESC DESCRIBE DETERMINISTICDISTINCT DISTINCTROW DIVDOUBLE DROP DUALEACH ELSE ELSEIFENCLOSED ESCAPED EXISTSEXIT EXPLAIN FALSEFETCH FLOAT FLOAT4FLOAT8FOR FORCEFOREIGN FROM FULLTEXTGOTO GRANT GROUPHAVING HIGH_PRIORITY HOUR_MICROSECONDHOUR_MINUTE HOUR_SECOND IFIGNORE IN INDEXINFILE INNER INOUTINSENSITIVE INSERT INTINT1INT2INT3INT4INT8INTEGERINTERVAL INTO ISITERATE JOIN KEYKEYS KILL LABELLEADING LEAVE LEFTLIKE LIMIT LINEARLINES LOAD LOCALTIMELOCALTIMESTAMP LOCK LONGLONGBLOB LONGTEXT LOOPLOW_PRIORITY MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINTMINUTE_MICROSECOND MINUTE_SECOND MODMODIFIES NATURAL NOTNO_WRITE_TO_BINLOG NULL NUMERICON OPTIMIZE OPTIONOPTIONALLY OR ORDEROUT OUTER OUTFILEPRECISION PRIMARY PROCEDUREPURGE RAID0RANGEREAD READS REALREFERENCES REGEXP RELEASERENAME REPEAT REPLACEREQUIRE RESTRICT RETURNREVOKE RIGHT RLIKESCHEMA SCHEMAS SECOND_MICROSECOND SELECT SENSITIVE SEPARATORSET SHOW SMALLINTSPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNINGSQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL STARTING STRAIGHT_JOINTABLE TERMINATED THENTINYBLOB TINYINT TINYTEXTTO TRAILING TRIGGERTRUE UNDO UNIONUNIQUE UNLOCK UNSIGNEDUPDATE USAGE USEUSING UTC_DATE UTC_TIMEUTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYINGWHEN WHERE WHILEWITH WRITE X509XOR YEAR_MONTH ZEROFILL。
MySQL中字段名和保留字冲突的解决办法
MySQL中字段名和保留字冲突的解决办法
我们知道通常的SQL查询语句是这么写的:
复制代码代码如下:
select col from table;
这当然没问题,但如果字段名是“from”呢?
复制代码代码如下:
select from from table;
若真的这么写,必然出错,当字段名与MySQL保留字冲突时,可以⽤字符“`”将字段名括起来:
复制代码代码如下:
select `from` from table;
刚发现我原先设计的数据库表⾥有两个字段都⽤了保留字(add,comment)。
在insert和update的时候出错。
记得sql server ⾥好像是⽤[]括起来就ok了。
于是试了⼀下,事实证明这在mySql⾥⾏不通。
上⽹简单搜了⼀下发现都是说⽤中括号。
后来⼜想到MySql Administrator⽣成的sql语句好像会把表名什么都⽤单引号括起来。
试了⼀下,还是⾏不通。
但复制⽣成的那个符号发现可以。
确定那个符号不是单引号。
⼀看才发现时撇号(` 就是数字1前⾯那个键上的)。
到此问题解决。
总结⼀下就是⼀句话:
在Mysql中,当表名或字段名乃⾄数据库名和保留字冲突时,在sql语句⾥可以⽤撇号(`)括起来。
SQLite关键字保留字
The list below shows all possible keywords used by any build of SQLite regardless of . Most reasonable configurations use most or all of these keywords, but some keywords may be omitted when SQL language features are disabled. Regardless of the compile-time configuration, any identifier that is not on the following 121 element list is not a keyword to the SQL parser in SQLite:
NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PLAN PRAGMA PRIMARY QUERY RAISE REFERENCES REGEXP REINDEX RELEASE RENAME REPLACE RESTRICT RIGHT ROLLBACK
ROW SAVEPOINT SELECT SET TABLE TEMP TEMPORARY THEN TO TRANSACTION TRIGGER UNION UNIQUE UPDATE USING VACUUM VALUES VIEW VIRT AFTER ALL ALTER ANALYZE AND AS ASC ATTACH AUTOINCREMENT BEFORE BEGIN BETWEEN BY CASCADE CASE CAST CHECK COLLATE COLUMN COMMIT CONFLICT CONSTRAINT
mysql之查询关键字筛选分组去重排序分页正则判断
mysql之查询关键字筛选分组去重排序分页正则判断⽬录查询关键字前期准备(可以拿来练习):创建表:create table emp(id int primary key auto_increment,name varchar(20) not null,sex enum('male','female') not null default 'male', # 默认为男的age int(3) unsigned not null default 28,hire_date date not null, # 雇佣⽇期post varchar(50), # 职业post_comment varchar(100), # 员⼯描述salary double(15,2), # 薪资office int, # 门牌号:⼀个部门⼀个屋⼦depart_id int # 编号);插⼊记录:#三个部门:教学,销售,运营insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values('jaso','male',18,'20170301','第⼀讲师',7300.33,401,1), #以下是教学部('tom','male',78,'20150302','teacher',1000000.31,401,1),('kevin','male',81,'20130305','teacher',8300,401,1),('tony','male',73,'20140701','teacher',3500,401,1),('owen','male',28,'20121101','teacher',2100,401,1),('jack','female',18,'20110211','teacher',9000,401,1),('jenny','male',18,'19000301','teacher',30000,401,1),('sank','male',48,'20101111','teacher',10000,401,1),('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门('呵呵','female',38,'20101101','sale',2000.35,402,2),('西西','female',18,'20110312','sale',1000.37,402,2),('乐乐','female',18,'20160513','sale',3000.29,402,2),('拉拉','female',28,'20170127','sale',4000.33,402,2),('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门('程咬⾦','male',18,'19970312','operation',20000,403,3),('程咬银','female',18,'20130311','operation',19000,403,3),('程咬铜','male',18,'20150411','operation',18000,403,3),('程咬铁','female',18,'20140512','operation',17000,403,3);1、查询关键字之select与fromselect :控制查询表中的那些字段对应的数据from :控制查询的表eg : select * from t1;解释:查询t1表所有字段中的所有数据信息eg : select name from t1;解释:查询t1表中name字段的所有数据信息2、查询关键字之where筛选定义:where其实就是对数据进⾏筛选关键字: where实例:1、查询id⼤于定于3⼩于等于6的数据select * from emp where id >=3 and id <=6;select * from emp where id between 3 and 6; # 第⼆种写法2、查询薪资是20000或者18000或者17000的数据select * from emp where salary = 20000 or salary = 18000 or salary 17000;可简写为:select * from emp where salary in (20000,18000,17000);在练习下⾯的实例之前先补充⼀个知识点:模糊查询:定义:只查询需要数据所含有的部分字母.⽐如:查询名字中含有杰字的⽤户信息关键字: like关键符号:% : 匹配任意个数的任意字符_ : 匹配单个个数的任意字符3、查询员⼯姓名中包含o字母的员⼯姓名和薪资select name,salary from emp where name like '%o%';4、查询员⼯姓名为四个字符组成的员⼯姓名和薪资select name,salary from emp where name like '____'; # 由四个_组成代表四个字符也可以使⽤: char_length()查询字符长度select name,salary from emp where char_length(name) = 4;5、查询id⼩于3或者⼤于6的数据select * from emp where id < 3 or id > 6;select * from emp where id not between 3 and 6; # not 取反6、查询薪资不在20000,18000,17000范围的数据select * from emp where salary not in (20000,18000,17000); # not 取反7、查询岗位描述为空的员⼯与岗位名针对null不能⽤等号,只能⽤isselect name,post from emp where post_comment = null; # 报错select name,post from emp where post_comment is null;select name,post from emp where where post_comment is not null;3、查询关键字之group by 分组分组定义:按照某个指定的条件将单个单个的数据分为⼀个个的整体关键字: group by 条件eg : 班级按照作为横向分组班级按照年龄进⾏分组班级按照年龄进⾏分组应⽤场景:求每个部门的平均薪资求男⽣的平均薪资求⼥能的平均薪资注意:分组之后不在以单个个体为研究对象,也⽆法直接再获得单个个体的数据,研究对象应该为分组的整体分组之后默认只能直接获取到分组的依据其他字段数据⽆法直接获取如果需要实现上述要求需要修改sql_modeset global sql_mode='only_full_group_by';注:不能直接获取,但是可以通过某些⽅法间接获取。
MySQL关键字与语句
MySQL关键字与语句增-- 创建数据库CREATE DATABASE [IF NOT EXISTS] database_name;-- 创建表CREATE TABLE IF NOT EXISTS `et_catalogmetadata`-- 创建表CREATE TABLE test(id int,body varchar(100));-- 新建本地⽤户CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';-- 新建远程⽤户CREATE USER 'test'@'%' IDENTIFIED BY '123456';-- 增加列ALTER TABLE tasks ADD COLUMN complete DECIMAL(2,1) NULL AFTER description;-- 数据库名所对应的数据库不存在的情况下创建.如果已经存在则不创建CREATE DATABASE IF NOT EXISTS mydatabaseIF NOT EXISTS是语句的可选⼦句。
IF NOT EXISTS⼦句可防⽌创建数据库服务器中已存在的新数据库的错误。
不能在MySQL数据库服务器中具有相同名称的数据库。
该语句也可⽤于创建表删-- 删除⽤户DROP USER 'test'@'localhost';-- IF EXISTS是该语句的可选部分,以防⽌您删除数据库服务器中不存在的数据库。
DROP DATABASE [IF EXISTS] database_name;-- 删除表DROP TABLE table_name ;-- 删除索引drop index index_user_id on table_name;-- 删除PRIMARY KEY索引时使⽤ALTER TABLE table_name DROP PRIMARY KEY改-- 赋予insert,select,update权限和全部权限,test01=数据库,dev=⽤户:GRANT INSERT, SELECT, UPDATE ON test01.* TO 'dev' @'%';-- 不允许这个⽤户给其他⽤户授权GRANT ALL PRIVILEGES ON test01.* TO 'dev' @'%';-- 允许这个⽤户给其他⽤户授权GRANT ALL PRIVILEGES ON.TO ‘ wangxiang’ @’ %’ WITH GRANT OPTION;-- 刷新权限FLUSH PRIVILEGES;-- 收回权限REVOKE ALL PRIVILEGES ON *.* FROM 'test'@'%';-- 修改Root密码ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';-- 指定密码认证插件ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassowrd';-- 修改⽤户密码,两种⽅式ALTER USER user IDENTIFIED BY 'auth_string';update er set password='hiveuser' where user='hiveuser';-- 修改密码验证插件ALTER USER ‘nextcloud‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘new_password‘;#开启远程访问use mysql;update user set host='%' where user ='root';#-- 重命名表ALTER TABLE tasksRENAME TO work_items;-- 更新表数据,将email列的1056⾏修改为 mary.new@UPDATE employees SET email = 'mary.new@' WHERE employeeNumber = 1056;-- update配合select语句UPDATE customers SET sales = (SELECT employee FROM employees WHERE jobtitle = 'Sales Rep' LIMIT 1) WHERE sales IS NULL;查-- 查看所有数据库SHOW DATABASES;-- 查看权限SHOW GRANTS FOR 'test'@'%';-- 查看所有表SHOW TABLES;-- 查找所有⽤户USE db_name;SELECT HOST, USER,PASSWORD FROM ER;-- 查看表结构DESC table_name;-- 查看⽇志开启状态SHOW VARIABLES LIKE 'log_%';-- 查看所有binlog⽇志列表SHOW MASTER LOGS;-- 查看所有库的⼤⼩,务必先执⾏useuse information_schema;SELECT concat( round( sum( DATA_LENGTH / 1024 / 1024 ), 2 ), 'MB' ) AS DATA FROM TABLES;-- 查看指定库的指定表的⼤⼩SELECT concat( round( sum( DATA_LENGTH / 1024 / 1024 ), 2 ), 'MB' ) AS DATA FROM TABLES WHERE table_schema = 'jishi' AND table_name = 'a_ya';-- 查看指定库的指定表的索引⼤⼩SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Index_Size' FROM TABLES--WHERE table_schema = 'test' and table_name='a_yuser'; -- 查看索引show index from tblname;show keys from tblname;参数说明Non_unique如果索引不能包括重复词,则为0。