想了解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数据库查询中的特殊命令是什么)
- 1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载
- mysql-Mysql数据库查询的时候出现异常
- Mysql实例mysql数据库查询优化 mysql效率第1/3页
- 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数据库补丁下载
一
首先需定义一个数据库接口函数,可单独存为一个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>?></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>->query(<span>"SELECT * FROM t_order WHERE seller_id= ''"</span>. <span>$seller_id</span>.<span>"'' "</span>);<span>//查询数据</span><span>echo</span><span>$result</span>->num_rows; <span>//输出行数</span> } <span>?></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效率第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数据库查询索引优化,希望对您有用。如果有疑问,可以联系我们。
对于任何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.shtmlMysqL数据库
今天关于MySql数据库查询中的特殊命令和mysql数据库查询中的特殊命令是什么的介绍到此结束,谢谢您的阅读,有关1、PHP-获取MySQL数据库查询结果行数 mysql数据库下载64位 sql数据库实例下载 sql数据库补丁下载、mysql-Mysql数据库查询的时候出现异常、Mysql实例mysql数据库查询优化 mysql效率第1/3页、MYSQL教程MySQL数据库查询索引优化等更多相关知识的信息可以在本站进行查询。
本文标签: