GVKun编程网logo

MySql数据库查询中的特殊命令(mysql数据库查询中的特殊命令是什么)

5

想了解MySql数据库查询中的特殊命令的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于mysql数据库查询中的特殊命令是什么的相关问题,此外,我们还将为您介绍关于1、PHP-获取MySQL数

想了解MySql数据库查询中的特殊命令的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于mysql数据库查询中的特殊命令是什么的相关问题,此外,我们还将为您介绍关于1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载、mysql-Mysql数据库查询的时候出现异常、Mysql实例mysql数据库查询优化 mysql效率第1/3页、MYSQL教程MySQL数据库查询索引优化的新知识。

本文目录一览:

MySql数据库查询中的特殊命令(mysql数据库查询中的特殊命令是什么)

MySql数据库查询中的特殊命令(mysql数据库查询中的特殊命令是什么)

第一:   MysqL的安装

下载MysqL软件,修改安装路径之后

安装数据库MysqL5.7.18

  第一步:数据库MysqL5.7.18可以在官网上下载对应的版本,下载地址:http://www.filehorse.com/download-mysql-64/,

  第二步:将下载好的安装包进行解压到一个盘下面,

  第三步:配置环境变量,新建环境变量MysqL_HOME,输入MysqL的安装目录,

然后再把;%MysqL_HOME%\bin插入到Path的最后面;

  第四步:以管理员的身份运行命令行,按win+R 输入cmd,点鼠标右键以管理员身份运行。

  第五步:切换到MysqL的安装目录下面,利用MysqLd 进行安装:

  初始化数据: MysqLd --initialize-insecure --user=MysqL,

  启动服务: MysqLd --user=MysqL,

  初始化MysqL root密码 MysqLadmin -u root password ‘new-password',

  详情见https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html 。 

  第六步:注册服务MysqLd --install MysqL

  用net start MysqL 命令开启服务。

   输入MysqL -u root -p命令: 然后再填写第五步初始化数据库时输入的密码,如下图所示:

在MySQL命令下输入 show databases; ,查看数据库中的表,如下图所示:

这说明数据库已经安装成功。

第二:     数据库特殊查询语句

按照降序排序,   select  name  from data order by name desc ;   ---- 这里desc就是按照降序排序的意思

相对列位置的查询, select  name ,price  from data order by 2,3;-----这里2,3表示先按照第二列排序,再按照第三列排序。

注:想在多个列上进行降序排序的时候必须每列都用desc 指定。

第三:

  Navicat 数据库软件新建链接,和新建数据库的区别

  新建链接是创建数据链接对象,里面包含数据库

要创建数据链接,在创建数据库

选择创建的数据库链接类型。我的是MysqL,设置链接名字,密码 端口号。

电子MysqL创建数据库

这样才会创建数据库。

总结

以上所述是小编给大家介绍的MysqL数据库查询中的特殊命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载

1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载

首先需定义一个数据库接口函数,可单独存为一个php页面

<span><span><?php </span><span><span>function</span><span>db_connect</span><span>()</span> {</span><span>$result</span> = <span>new</span> mysqli(<span>''数据库地址''</span>, <span>''账号''</span>, <span>''密码''</span>, <span>''库名''</span>);<span>//连接数据库</span><span>if</span> (!<span>$result</span>) {
      <span>return</span><span>false</span>;<span>//连接失败</span>
   }
   <span>return</span><span>$result</span>;<span>//返回数据库对象</span>
}
<span>?&gt;</span></span></span>
登录后复制

在另一php页面中,首先需使用include函数包含上述php页面,也即需保证上述接口函数能被正确调用

<span><span><?php </span><span><span>function</span><span>output_rows</span><span>(<span>$seller_id</span>)</span>{</span><span>$conn</span> = db_connect();<span>//连接数据库</span><span>if</span> (!<span>$conn</span>) {<span>//无法连接数据库</span><span>echo</span><span>"can not connect mysql"</span>;
        <span>return</span><span>''fail_mysql''</span>;
    }
    <span>$result</span> = <span>$conn</span>-&gt;query(<span>"SELECT * FROM t_order WHERE seller_id= ''"</span>. <span>$seller_id</span>.<span>"'' "</span>);<span>//查询数据</span><span>echo</span><span>$result</span>-&gt;num_rows;  <span>//输出行数</span>
}
<span>?&gt;</span></span></span>
登录后复制

通过调用上述定义的函数即可显示sql查询结果的行数,上述函数通过$result = $conn->query("SELECT * FROM t_order WHERE seller_id= ''". $seller_id."'' ");进行数据库的查询,查询t_seller表中seller_id等于$seller_id的所有行,并将结果集赋给$result,再通过使用$result->num_rows可取得查询结果的行数,用echo进行输出显示

立即学习“PHP免费学习笔记(深入)”;

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了1、PHP-获取MySQL数据库查询结果行数,包括了Mysql数据库方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

mysql-Mysql数据库查询的时候出现异常

mysql-Mysql数据库查询的时候出现异常

mysql

图片说明图片说明图片说明

Mysql实例mysql数据库查询优化 mysql效率第1/3页

Mysql实例mysql数据库查询优化 mysql效率第1/3页

《MysqL实例MysqL数据库查询优化 MysqL效率第1/3页》要点:
本文介绍了MysqL实例MysqL数据库查询优化 MysqL效率第1/3页,希望对您有用。如果有疑问,可以联系我们。


//1.绑定 
bool CDBManager::BindInsertStmt(MysqL * connecthandle) 

       //作插入操作的绑定 
       MysqL_BIND insertbind[FEILD_NUM]; 
       if(m_stInsertParam == NULL) 
              m_stInsertParam = new CHostCacheTable; 
       m_stInsertStmt = MysqL_stmt_init(connecthandle); 
       //构建绑定字符串 
       char insertsql[sql_LENGTH]; 
       strcpy(insertsql, "insert into HostCache(SessionID, ChannelID, ISPType, " 
              "ExternalIP, ExternalPort, InternalIP, InternalPort) " 
              "values(?, ?, ?)"); 
       MysqL_stmt_prepare(m_stInsertStmt, insertsql, strlen(insertsql)); 
       int param_count= MysqL_stmt_param_count(m_stInsertStmt); 
       if(param_count != FEILD_NUM) 
              return false; 
       //填充bind结构数组, m_sInsertParam是这个statement关联的结构变量 
       memset(insertbind, 0, sizeof(insertbind)); 
       insertbind[0].buffer_type = MysqL_TYPE_STRING; 
       insertbind[0].buffer_length = ID_LENGTH /* -1 */; 
       insertbind[0].buffer = (char *)m_stInsertParam->sessionid; 
       insertbind[0].is_null = 0; 
       insertbind[0].length = 0; 

       insertbind[1].buffer_type = MysqL_TYPE_STRING; 
       insertbind[1].buffer_length = ID_LENGTH /* -1 */; 
       insertbind[1].buffer = (char *)m_stInsertParam->channelid; 
       insertbind[1].is_null = 0; 
       insertbind[1].length = 0; 

       insertbind[2].buffer_type = MysqL_TYPE_TINY; 
       insertbind[2].buffer = (char *)&m_stInsertParam->ISPtype; 
       insertbind[2].is_null = 0; 
       insertbind[2].length = 0; 

       insertbind[3].buffer_type = MysqL_TYPE_LONG; 
       insertbind[3].buffer = (char *)&m_stInsertParam->externalIP; 
       insertbind[3].is_null = 0; 
       insertbind[3].length = 0; 

       insertbind[4].buffer_type = MysqL_TYPE_SHORT; 
       insertbind[4].buffer = (char *)&m_stInsertParam->externalPort; 
       insertbind[4].is_null = 0; 
       insertbind[4].length = 0; 

       insertbind[5].buffer_type = MysqL_TYPE_LONG; 
       insertbind[5].buffer = (char *)&m_stInsertParam->internalIP; 
       insertbind[5].is_null = 0; 
       insertbind[5].length = 0; 

       insertbind[6].buffer_type = MysqL_TYPE_SHORT; 
       insertbind[6].buffer = (char *)&m_stInsertParam->internalPort; 
       insertbind[6].is_null = 0; 
       insertbind[6].is_null = 0; 
       //绑定 
       if (MysqL_stmt_bind_param(m_stInsertStmt, insertbind)) 
              return false; 
       return true; 


//2.查询 
bool CDBManager::InsertHostCache2(MysqL * connecthandle, char * sessionid, char * channelid, int ISPtype, \ 
              unsigned int eIP, unsigned short eport, unsigned int iIP, unsigned short iport) 

       //填充结构变量m_sInsertParam 
       strcpy(m_stInsertParam->sessionid, sessionid); 
       strcpy(m_stInsertParam->channelid, channelid); 
       m_stInsertParam->ISPtype = ISPtype; 
       m_stInsertParam->externalIP = eIP; 
       m_stInsertParam->externalPort = eport; 
       m_stInsertParam->internalIP = iIP; 
       m_stInsertParam->internalPort = iport; 
       //执行statement,性能瓶颈处 
       if(MysqL_stmt_execute(m_stInsertStmt)) 
              return false; 
       return true; 

_baidu_page_break_tag_
//1.常规的方法 
//性能瓶颈,10万条记录时,执行查询140ms, 获取结果集500ms,其余可忽略 
int CDBManager::QueryHostCache(MysqL* connecthandle, CDBManager::CHostCacheTable * &hostcache) 
{      
       char selectsql[sql_LENGTH]; 
       memset(selectsql, sizeof(selectsql)); 
       sprintf(selectsql,"select * from HostCache where ChannelID = '%s' and ISPtype = %d", channelid, ISPtype); 
       if(MysqL_real_query(connecthandle, selectsql, strlen(selectsql)) != 0)   //检索 
              return 0; 
       //获取结果集 
       m_pResultSet = MysqL_store_result(connecthandle); 
       if(!m_pResultSet)   //获取结果集出错 
              return 0; 
       int iAllNumRows = (int)(MysqL_num_rows(m_pResultSet));      ///<所有的搜索结果数 
       //计算待返回的结果数 
       int iReturnNumRows = (iAllNumRows <= RETURN_QUERY_HOST_NUM)? iAllNumRows:RETURN_QUERY_HOST_NUM; 
       if(iReturnNumRows <= RETURN_QUERY_HOST_NUM) 
       { 
              //获取逐条记录 
              for(int i = 0; i<iReturnNumRows; i++) 
              { 
                     //获取逐个字段 
                     m_Row = MysqL_fetch_row(m_pResultSet); 
                     if(m_Row[0] != NULL) 
                            strcpy(hostcache[i].sessionid, m_Row[0]); 
                     if(m_Row[1] != NULL) 
                            strcpy(hostcache[i].channelid, m_Row[1]); 
                     if(m_Row[2] != NULL) 
                            hostcache[i].ISPtype      = atoi(m_Row[2]); 
                     if(m_Row[3] != NULL) 
                            hostcache[i].externalIP   = atoi(m_Row[3]); 
                     if(m_Row[4] != NULL) 
                            hostcache[i].externalPort = atoi(m_Row[4]); 
                     if(m_Row[5] != NULL) 
                            hostcache[i].internalIP   = atoi(m_Row[5]); 
                     if(m_Row[6] != NULL) 
                            hostcache[i].internalPort = atoi(m_Row[6]);               
              } 
       } 
       else 
       { 
              //随机的挑选指定条记录返回 
              int iRemainder = iAllNumRows%iReturnNumRows;    ///<余数 
              int iQuotient = iAllNumRows/iReturnNumRows;      ///<商 
              int iStartIndex = rand()%(iRemainder + 1);         ///<开始下标   
              //获取逐条记录 
        for(int iSelectedindex = 0; iSelectedindex < iReturnNumRows; iSelectedindex++) 
        { 
                            MysqL_data_seek(m_pResultSet, iStartIndex + iQuotient * iSelectedindex); 
                            m_Row = MysqL_fetch_row(m_pResultSet); 
                  if(m_Row[0] != NULL) 
                       strcpy(hostcache[iSelectedindex].sessionid, m_Row[0]); 
                   if(m_Row[1] != NULL) 
                                   strcpy(hostcache[iSelectedindex].channelid, m_Row[1]); 
                   if(m_Row[2] != NULL) 
                       hostcache[iSelectedindex].ISPtype      = atoi(m_Row[2]); 
                   if(m_Row[3] != NULL) 
                       hostcache[iSelectedindex].externalIP   = atoi(m_Row[3]); 
                    if(m_Row[4] != NULL) 
                       hostcache[iSelectedindex].externalPort = atoi(m_Row[4]); 
                   if(m_Row[5] != NULL) 
                       hostcache[iSelectedindex].internalIP   = atoi(m_Row[5]); 
                   if(m_Row[6] != NULL) 
                       hostcache[iSelectedindex].internalPort = atoi(m_Row[6]); 
        } 
      } 
       //释放结果集内容 
       MysqL_free_result(m_pResultSet); 
       return iReturnNumRows; 


//2.使用limit版 
int CDBManager::QueryHostCache(MysqL * connecthandle, unsigned int myexternalip, CHostCacheTable * hostcache) 

       //首先获取满足结果的记录条数,再使用limit随机选择指定条记录返回 
       MysqL_ROW row; 
       MysqL_RES * pResultSet; 
       char selectsql[sql_LENGTH]; 
       memset(selectsql, sizeof(selectsql)); 

       sprintf(selectsql,"select count(*) from HostCache where ChannelID = '%s' and ISPtype = %d", strlen(selectsql)) != 0)   //检索 
              return 0; 
       pResultSet = MysqL_store_result(connecthandle); 
       if(!pResultSet)        
              return 0; 
       row = MysqL_fetch_row(pResultSet); 
       int iAllNumRows = atoi(row[0]); 
       MysqL_free_result(pResultSet); 
       //计算待取记录的上下范围 
       int iLimitLower = (iAllNumRows <= RETURN_QUERY_HOST_NUM)? 
              0:(rand()%(iAllNumRows - RETURN_QUERY_HOST_NUM)); 
       int iLimitUpper = (iAllNumRows <= RETURN_QUERY_HOST_NUM)? 
              iAllNumRows:(iLimitLower + RETURN_QUERY_HOST_NUM); 
       //计算待返回的结果数 
       int iReturnNumRows = (iAllNumRows <= RETURN_QUERY_HOST_NUM)? 
               iAllNumRows:RETURN_QUERY_HOST_NUM; 

       //使用limit作查询 
       sprintf(selectsql,"select SessionID, ExternalIP, InternalPort " 
              "from HostCache where ChannelID = '%s' and ISPtype = %d limit %d, %d" 
              , ISPtype, iLimitLower, iLimitUpper); 
       if(MysqL_real_query(connecthandle, strlen(selectsql)) != 0)   //检索 
              return 0; 
       pResultSet = MysqL_store_result(connecthandle); 
       if(!pResultSet) 
              return 0; 
       //获取逐条记录 
       for(int i = 0; i<iReturnNumRows; i++) 
       { 
              //获取逐个字段 
              row = MysqL_fetch_row(pResultSet); 
              if(row[0] != NULL) 
                     strcpy(hostcache[i].sessionid, row[0]); 
              if(row[1] != NULL) 
                     hostcache[i].externalIP   = atoi(row[1]); 
              if(row[2] != NULL) 
                     hostcache[i].externalPort = atoi(row[2]); 
              if(row[3] != NULL) 
                     hostcache[i].internalIP   = atoi(row[3]); 
              if(row[4] != NULL) 
                     hostcache[i].internalPort = atoi(row[4]);              
       } 
       //释放结果集内容 
       MysqL_free_result(pResultSet); 
       return iReturnNumRows; 


_baidu_page_break_tag_
//定义句柄队列 
typedef std::list<MysqL *> CONNECTION_HANDLE_LIST; 
typedef std::list<MysqL *>::iterator CONNECTION_HANDLE_LIST_IT; 

//连接数据库的参数结构 
class CDBParameter              

public: 
       char *host;                                 ///<主机名 
       char *user;                                 ///<用户名 
       char *password;                         ///<密码 
       char *database;                           ///<数据库名 
       unsigned int port;                 ///<端口,一般为0 
       const char *unix_socket;      ///<套接字,一般为NULL 
       unsigned int client_flag; ///<一般为0 
}; 

//创建两个队列 
CONNECTION_HANDLE_LIST m_lsBusyList;                ///<正在使用的连接句柄 
CONNECTION_HANDLE_LIST m_lsIdleList;                  ///<未使用的连接句柄 

//所有的连接句柄先连上数据库,加入到空闲队列中,等待使用. 
bool CDBManager::Connect(char * host /* = "localhost" */, char * user /* = "chenmin" */, \ 
                                           char * password /* = "chenmin" */, char * database /* = "HostCache" */) 

       CDBParameter * lpDBParam = new CDBParameter(); 
       lpDBParam->host = host; 
       lpDBParam->user = user; 
       lpDBParam->password = password; 
       lpDBParam->database = database; 
       lpDBParam->port = 0; 
       lpDBParam->unix_socket = NULL; 
       lpDBParam->client_flag = 0; 
       try 
       { 
              //连接 
              for(int index = 0; index < CONNECTION_NUM; index++) 
              { 
                     MysqL * pConnectHandle = MysqL_init((MysqL*) 0);     //初始化连接句柄 
                     if(!MysqL_real_connect(pConnectHandle, lpDBParam->host, lpDBParam->user, lpDBParam->password,\ 
       lpDBParam->database,lpDBParam->port,lpDBParam->unix_socket,lpDBParam->client_fla)) 
                            return false; 
//加入到空闲队列中 
                     m_lsIdleList.push_back(pConnectHandle); 
              } 
       } 
       catch(...) 
       { 
              return false; 
       } 
       return true; 


//提取一个空闲句柄供使用 
MysqL * CDBManager::GetIdleConnectHandle() 

       MysqL * pConnectHandle = NULL; 
       m_ListMutex.acquire(); 
       if(m_lsIdleList.size()) 
       { 
              pConnectHandle = m_lsIdleList.front();        
              m_lsIdleList.pop_front(); 
              m_lsBusyList.push_back(pConnectHandle); 
       } 
       else //特殊情况,闲队列中为空,返回为空 
       { 
              pConnectHandle = 0; 
       } 
       m_ListMutex.release(); 

       return pConnectHandle; 


//从使用队列中释放一个使用完毕的句柄,插入到空闲队列 
void CDBManager::SetIdleConnectHandle(MysqL * connecthandle) 

       m_ListMutex.acquire(); 
       m_lsBusyList.remove(connecthandle); 
       m_lsIdleList.push_back(connecthandle); 
       m_ListMutex.release(); 

//使用示例,首先获取空闲句柄,利用这个句柄做真正的操作,然后再插回到空闲队列 
bool CDBManager::DeleteHostCacheBySessionID(char * sessionid) 

       MysqL * pConnectHandle = GetIdleConnectHandle(); 
       if(!pConnectHandle) 
              return 0; 
       bool bRet = DeleteHostCacheBySessionID(pConnectHandle, sessionid); 
       SetIdleConnectHandle(pConnectHandle); 
       return bRet; 

//传入空闲的句柄,做真正的删除操作 
bool CDBManager::DeleteHostCacheBySessionID(MysqL * connecthandle, char * sessionid) 

       char deletesql[sql_LENGTH]; 
       memset(deletesql, sizeof(deletesql)); 
       sprintf(deletesql,"delete from HostCache where SessionID = '%s'", sessionid); 
       if(MysqL_query(connecthandle,deletesql) != 0) //删除 
              return false; 
       return true; 

MYSQL教程MySQL数据库查询索引优化

MYSQL教程MySQL数据库查询索引优化

《MysqL教程MysqL数据库查询索引优化》要点:
本文介绍了MysqL教程MysqL数据库查询索引优化,希望对您有用。如果有疑问,可以联系我们。

导读:工作一年了,也是第一次使用MysqL的索引.添加了索引之后的速度的提升,让我惊叹不已.隔壁的老员工看到我的大惊小怪,平淡地回了一句那肯...
工作一年了,平淡地回了一句“那肯定啊”.

对于任何DBMS,索引都是进行优化的最主要的因素.对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降.MysqL数据库

小宝鸽试了一下,2.5万数据单表中,无索引:200ms-700ms,添加索引后10ms-15ms,使用redis缓存1ms-7ms,如果数据量更大的时候,索引效果将会更加明显.更甚者,多表查询.MysqL数据库

 MysqL数据库

索引原理

 MysqL数据库

1、除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据.MysqL数据库

数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等.数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据.但如果是1千万的记录呢,分成几段比较好?稍有算法基础的同学会想到搜索树,其平均复杂度是lgN,具有不错的查询性能.但这里我们忽略了一个关键的问题,复杂度模型是基于每次相同的操作成本来考虑的,数据库实现比较复杂,数据保存在磁盘上,而为了提高性能,每次又可以把部分数据读入内存来计算,因为我们知道访问磁盘的成本大概是访问内存的十万倍左右,所以简单的搜索树难以满足复杂的应用场景.MysqL数据库

2、另外,比如学生信息表,添加学生姓名索引,索引是在name上排序的.现在,当查找某个学生信息时,就不需要逐行搜索全表,可以利用索引进行有序查找(如二分查找法),并快速定位到匹配的值,以节省大量搜索时间.MysqL数据库

3、是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. MysqL数据库


例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示.MysqL数据库

SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3

此查询结果应该为1000行,每行包含3个相等的值.在无索引的情况下处理此查询,必须寻找3个表所有的组合,以便得出与WHERE子句相配的那些行.而可能的组合数目为1000×1000×1000(十亿),显然查询将会非常慢.MysqL数据库

如果对每个表进行索引,就能极大地加速查询进程.利用索引的查询处理如下.MysqL数据库

(1)从表t1中选择第一行,查看此行所包含的数据.MysqL数据库

(2)使用表t2上的索引,直接定位t2中与t1的值匹配的行.类似,利用表t3上的索引,直接定位t3中与来自t1的值匹配的行.MysqL数据库

(3)扫描表t1的下一行并重复前面的过程,直到遍历t1中所有的行.MysqL数据库

在此情形下,仍然对表t1执行了一个完全扫描,但能够在表t2和t3上进行索引查找直接取出这些表中的行,比未用索引时要快一百万倍.MysqL数据库

利用索引,MysqL加速了WHERE子句满足条件行的搜索,而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度.MysqL数据库

索引的类型

MysqL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等.MysqL数据库

1、普通索引MysqL数据库

在创建普通索引时,不附加任何限制条件.这类索引可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定.建立索引以后,查询时可以通过索引进行查询.例如,在student表的stu_id字段上建立一个普通索引.查询记录时,就可以根据该索引进行查询.MysqL数据库

2、唯一性索引MysqL数据库

使用UNIQUE参数可以设置索引为唯一性索引.在创建唯一性索引时,限制该MysqL数据库

索引的值必须是唯一的.例如,在student表的stu_name字段中创建唯一性索引,那么stu_name字段的值就必需是唯一的.通过唯一性索引,可以更快速地确定某条记录.主键就是一种特殊唯一性索引.MysqL数据库

3、全文索引MysqL数据库

使用FULLTEXT参数可以设置索引为全文索引.全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上.查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度.例如,student表的information字段是TEXT类型,该字段包含了很多的文字信息.在information字段上建立全文索引后,可以提高查询information字段的速度.MysqL数据库从3.23.23版开始支持全文索引,但只有MyISAM存储引擎支持全文检索.在默认情况下,全文索引的搜索执行方式不区分大小写.但索引的列使用二进制排序后,可以执行区分大小写的全文索引.MysqL数据库

4、单列索引MysqL数据库

在表中的单个字段上创建索引.单列索引只根据该字段进行索引.单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引.只要保证该索引只对应一个字段 即可.MysqL数据库

5、多列索引MysqL数据库

多列索引是在表的多个字段上创建一个索引.该索引指向创建时对应的多个字段,可以通过这几个字段进行查询.但是,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用.例如,在表中的id、name和sex字段上建立一个多列索引,那么,只有查询条件使用了id字段时该索引才会被使用.MysqL数据库

6、空间索引MysqL数据库

使用SPATIAL参数可以设置索引为空间索引.空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率.MysqL中的空间数据类型包括GEOMETRY和POINT、LInesTRING和polyGON等.目前只有MyISAM存储引擎支持空间检索,而且索引的字段不能为空值.对于初学者来说,这类索引很少会用到.MysqL数据库

索引的操作

1、添加PRIMARY KEY(主键索引)MysqL数据库

MysqL>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

2、添加UNIQUE(唯一索引)MysqL数据库

MysqL>ALTER TABLE `table_name` ADD UNIQUE ( `column` )

3、添加INDEX(普通索引)MysqL数据库

MysqL>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4、添加FULLTEXT(全文索引)MysqL数据库

MysqL>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

5、添加多列索引MysqL数据库

 MysqL数据库

MysqL>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`,`column2`,`column3` )

创建索引MysqL数据库

在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引.MysqL数据库

1、ALTER TABLEMysqL数据库

ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引.MysqL数据库

ALTER TABLE table_name ADD INDEX index_name (column_list)   
UNIQUE (column_list)   
PRIMARY KEY (column_list)

其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔.索引名index_name可选,缺省时,MysqL将根据第一个索引列赋一个名称.另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引.MysqL数据库

2、CREATE INDEXMysqL数据库

CREATE INDEX可对表增加普通索引或UNIQUE索引.MysqL数据库

CREATE INDEX index_name ON table_name (column_list)   
UNIQUE ON table_name (column_list)

table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选.另外,不能用CREATE INDEX语句创建PRIMARY KEY索引.MysqL数据库

3、索引类型MysqL数据库

在创建索引时,可以规定索引能否包含重复值.如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引.对于单列惟一性索引,这保证单列不包含重复的值.对于多列惟一性索引,保证多个值的组合不重复. MysqL数据库


PRIMARY KEY索引和UNIQUE索引非常类似.事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引.这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引.MysqL数据库

下面的sql语句对students表在sid上添加PRIMARY KEY索引.MysqL数据库

TABLE students KEY (sid)

删除索引MysqL数据库

可利用ALTER TABLE或DROP INDEX语句来删除索引.类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下.MysqL数据库

DROP ON talbe_name   
INDEX index_name   
KEY

其中,前两条语句是等价的,删除掉table_name中的索引index_name.MysqL数据库

第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名.如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MysqL将删除第一个UNIQUE索引.MysqL数据库

如果从表中删除了某列,则索引会受到影响.对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除.如果删除组成索引的所有列,则整个索引将被删除.MysqL数据库

注:一般数据库默认都会为主键生成索引MysqL数据库

参考文章: 
http://blog.csdn.net/yuanzhuohang/article/details/6497021 
http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 
http://edu.cnzz.cn/201305/88671f51.shtml
MysqL数据库

今天关于MySql数据库查询中的特殊命令mysql数据库查询中的特殊命令是什么的介绍到此结束,谢谢您的阅读,有关1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载、mysql-Mysql数据库查询的时候出现异常、Mysql实例mysql数据库查询优化 mysql效率第1/3页、MYSQL教程MySQL数据库查询索引优化等更多相关知识的信息可以在本站进行查询。

本文标签: