仓酷云

标题: 公布MySQL对表的修正(增添或删减列,创立或作废索引等) [打印本页]

作者: 只想知道    时间: 2015-1-16 20:12
标题: 公布MySQL对表的修正(增添或删减列,创立或作废索引等)
表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。MySQL创立了一个数据库后,接着创立了一张表,并增加了一些字段,那末我今后还想再增添字段怎样做?

解答:利用altertable(修正表)!

ALTERTABLE语法:

ALTER[IGNORE]TABLEtbl_name
alter_specification[,alter_specification]...

alter_specification:
ADD[COLUMN]column_definition[FIRST|AFTERcol_name]
|ADD[COLUMN](column_definition,...)
|ADDINDEX[index_name][index_type](index_col_name,...)
|ADD[CONSTRAINT[symbol]]
PRIMARYKEY[index_type](index_col_name,...)
|ADD[CONSTRAINT[symbol]]
UNIQUE[index_name][index_type](index_col_name,...)
|ADD[FULLTEXT|SPATIAL][index_name](index_col_name,...)
|ADD[CONSTRAINT[symbol]]
FOREIGNKEY[index_name](index_col_name,...)
[reference_definition]
|ALTER[COLUMN]col_name{SETDEFAULTliteral|DROPDEFAULT}
|CHANGE[COLUMN]old_col_namecolumn_definition
[FIRST|AFTERcol_name]
|MODIFY[COLUMN]column_definition[FIRST|AFTERcol_name]
|DROP[COLUMN]col_name
|DROPPRIMARYKEY
|DROPINDEXindex_name
|DROPFOREIGNKEYfk_symbol
|DISABLEKEYS
|ENABLEKEYS
|RENAME[TO]new_tbl_name
|ORDERBYcol_name
|CONVERTTOCHARACTERSETcharset_name[COLLATEcollation_name]
|[DEFAULT]CHARACTERSETcharset_name[COLLATEcollation_name]

|DISCARDTABLESPACE|IMPORTTABLESPACE|table_options
|partition_options
|ADDPARTITIONpartition_definition
|DROPPARTITIONpartition_names
|COALESCEPARTITIONnumber
|REORGANIZEPARTITIONpartition_namesINTO(partition_definitions)
|ANALYZEPARTITIONpartition_names
|CHECKPARTITIONpartition_names
|OPTIMIZEPARTITIONpartition_names
|REBUILDPARTITIONpartition_names
|REPAIRPARTITIONpartition_names
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#alter-table

我的实例:

增添一个字段:

altertablebookaddnamevarchar(20);

以为20太小,修正为50

altertablebookchangenamenamevarchar(50);

增添几个字段:

altertablebookaddauthorsvarchar(100),addcategoryvarchar(20),add

pricedouble(10,2);

删除一列:

altertablebookdropcover;

在某个地位加上1列:

altertablebookaddcovervarchar(100)after(first)publishdate;

修正某笔记录某个字段或多个字段的值:

updatebooksetcolumn_name1=""wherecolumn_name2="";

删除一笔记录:

deletefromtable_namewherewhere_contion;

修正某个表中的纪录的按次:

altertablebookorderbybookid(默许为升序降序为desc);根据Evans的调查报告,“MySQL的使用在未来将继续呈成长趋势。”
作者: 小妖女    时间: 2015-1-18 18:32
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
作者: 透明    时间: 2015-1-25 13:47
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
作者: 飘飘悠悠    时间: 2015-2-2 22:20
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
作者: admin    时间: 2015-2-8 14:18
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
作者: 灵魂腐蚀    时间: 2015-2-25 19:14
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
作者: 再见西城    时间: 2015-3-8 02:04
总感觉自己还是不会SQL
作者: 兰色精灵    时间: 2015-3-15 20:52
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2