添加列添加列ALTERTABLE表名ADD列名列数据类型[AFTER插入位置];EG:--在表的最后追加列addressALTERTABLEstudentsADDaddresschar(60);--在名为age的列后插入列birthdayALTERTABLEstudentsADDbirthdaydateAFTERage;修改列修改列ALTERTABLE表名CHANGE列名称列新名称新数据类型;EG:--将表tel列改名为telphoneALTERTABLEstudentsCHANGEteltelphoneCHAR(13)DEFAULT-;--将name列的数据类型改为char(16)ALTERTABLEstudentsCHANGEnamenamechar(16)notnull;删除列删除列ALTERTABLE表名DROP列名称;EG:--删除birthday列ALTERTABLEstudentsDROPbirthday;[Alter]创建后表的修改7/16/2015重命名表重命名表ALTERTABLE表名RENAME新表名;EG:--重命名students表为workmatesALTERTABLEstudentsRENAMEworkmates;删除整张表删除整张表DROPTABLE表名;EG:--删除workmates表DROPTABLEworkmates;删除整个数据库删除整个数据库DROPDATABASE数据库名;EG:--删除samp_db数据库DROPDATABASEsamp_db;[Alter]创建后表的修改7/16/2015 ASCII编码编码 用一个字节来标识0-9的数字、大小写字母、及一些标点和不可见字符。1个字节8位,可以有256种组合。标准的ASCII编码只利用一个字节的后7位(128种组合),最高位用作奇偶校验。 范围为00000000-01111111即0-127 因为ASCII最多只有256种组合,中国汉字成千上万,所以需要更多的字节来表示一个汉字,常见中文编码的有GB2312和GBK。 GB2312编码编码 是中国计算机的本地编码方式,用两个字节来表示一个汉字。为了兼容ASCII编码,这两个字节的取值范围都不在0-127,而是在128-255之间。则GB2312理论上最多有128*128=16384种组合。足够表示常用的汉字。 现有以下几个数,每个数表示一个字节,问哪些是GB2312编码,哪些是用ASCII编码?数字只是随便举的 1282006518917823213186 128200因为两个字节都在128-255之间,所以是用GB2312编码的汉字 65一个字节在0-127之间,所以是用ASCII编码的,实际表示的是小写字母‘a’。 189178同理是用GB2312编码的汉字 213186也是用GB2312编码的汉字 GBK编码编码 是GB2312的升级版,收容了更多的汉字。它也是用两个字节表示汉字,第一个字节的理论范围依旧是128-255之间,但第二个字节范围变为0-255。理论上最多能表示128*256种组合。同样能兼容ASCII编码。 比如 128656518917823213186[Character]字符集详解7/16/2015 因为128不在0-127之间,所以从128开始的2个字节表示的是一个汉字 65在0-127,所以用一个字节表示小写字母‘a’。 189178同理189不在0-127之间,表示的是一个汉字 213186同理213不在0-127之间,表示的是一个汉字 Unicode字符集字符集 Unicode其实只是相当于一张表,用4个字节给去全世界的文字进行了编号。 UTF-8编码编码 UTF-8和Unicode的关系,相当于压缩文件与源文件的关系,UTF-8用来压缩Unicode。UTF-8是变长编码,理论上用1到6字节来表示一个字符。 最高位是0的,用1个字节来表示一个字符 最高位有n个连续的1,则用个n个字节表示一个字符。 MySql乱码问题乱码问题 乱码问题有两种可能:1、解码与对应的编码不匹配。2、数据损坏。 第一种是可以解决的,第二种数据已损坏无法还原。 对于第一种情况,要先了解MySql的各个环节 客户端先按照客户端的编码方式对数据进行编码,然后传送到连接器,如果与连接器的编码方式不匹配再转换成连接器的编码。然后比对连接器的编码与存储数据的编码。如果连接器的编码方式与数据库存储数据的编码方式不一致,则接着转换成数据库存储数据的编码方式。同理,当返回结果时,数据库数据比对连接器编码,不一致则转成连接器编码,再比对连接器[Character]字符集详解7/16/2015编码与结果集编码,不一致则转换成结果及编码。 总而言之,只要客户端、连接器、结果集编码保持一致,大部分情况是不会出现乱码总而言之,只要客户端、连接器、结果集编码保持一致,大部分情况是不会出现乱码的。的。 可以通过 setcharacter_set_client=编码方式;设置客户端编码 setcharacter_set_connection=编码方式;设置连接器编码 setcharacter_set_results=编码方式;设置接结果集编码 这三句话也可以简化为一句:setnames编码方式。[Character]字符集详解7/16/2015//将已经存在表设置自动增长属性altertablecustomerschangeididintnotnullauto_incrementprimarykey;//添加字段并设置主键ALTERTABLEtabelnameADDnew_field_idint(5)unsigneddefault0notnullauto_increment,ADDprimarykey(new_field_id);//加主关键字的索引ALTERTABLEtablenameADDprimarykey(id);//加索引ALTERTABLEtablenameCHANGEdepnodepnoint(5)notnull;ALTERTABLEtablenameADDINDEX索引名(字段名1[,字段名2…]);ALTERTABLEtablenameADDINDEXemp_name(name);//加唯一限制条件的索引ALTERTABLEtablenameADDUNIQUEemp_name2(cardnumber);//删除某个索引ALTERTABLEtablenameDROPINDEXemp_name;//增加字段:ALTERTABLEtable_nameADDfield_namefield_type;//删除字段ALTERTABLEtable_nameDROPfield_name;[Column]针对列的修改7/16/20151.----注意:注意:MySqlMySql中只有键才能定义为中只有键才能定义为auto_incrementauto_increment型型2.CREATETABLEcompanyCREATETABLEcompany3.((4.company_idSMALLINTNOTNULLcompany_idSMALLINTNOTNULL,,5.company_nameVARCHARcompany_nameVARCHAR((1010))NOTNULLNOTNULL,,6.PRIMARYKEYPRIMARYKEY((company_idcompany_id))7.););1.----方式一:在创建表的时候同时创建约束方式一:在创建表的时候同时创建约束2.CREATETABLEpersonCREATETABLEperson3.((4.idSMALLINTNOTNULLauto_incrementidSMALLINTNOTNULLauto_increment,,5.pnameVARCHARpnameVARCHAR((1010))NOTNULLNOTNULL,,6.company_idSMALLINTcompany_idSMALLINT,,7.#主键约束#主键约束8.PRIMARYKEYPRIMARYKEY((idid),),9.#唯一约束,也可以指定约束的名称:uniquekeyconstraint_name(name),#唯一约束,也可以指定约束的名称:uniquekeyconstraint_name(name),10.UNIQUEKEYUNIQUEKEY((pnamepname)),,11.#外键约束,也可以指定约束的名称:constraintconstraint_nameforeignkey#外键约束,也可以指定约束的名称:constraintconstraint_nameforeignkey12.FOREIGNKEYFOREIGNKEY((company_idcompany_id))REFERENCEScompanyREFERENCEScompany((company_idcompany_id))13.););1.----方式二:创建表以后,再创建约束方式二:创建表以后,再创建约束2.CREATETABLEpersonCREATETABLEperson3.((4.ididSMALLINTSMALLINTNOTNULLNOTNULL,,5.nameVARCHARnameVARCHAR((1010))NOTNULLNOTNULL,,6.company_idcompany_idSMALLINTSMALLINT7.))8.9.//创建主键约束//创建主键约束10.((11))ALTERTABLEpersonADDPRIMARYKEYALTERTABLEpersonADDPRIMARYKEY((idid););11.((22))ALTERTABLEpersonADDALTERTABLEpersonADDCONSTRAINTprimary_kCONSTRAINTprimary_kPRIMARYKEYPRIMARYKEY((idid));;12.再将主键列设为再将主键列设为auto_incrementauto_increment::13.ALTERTABLEpersonMODIFYidSMALLINTAUTO_INCREMENTALTERTABLEpersonMODIFYidSMALLINTAUTO_INCREMENT;;14.//删除主键约束//删除主键约束15.((11))aALTERTABLEpersonDROPaALTERTABLEpersonDROPPRIMARYKEYPRIMARYKEY;;16.删除主键约束的时候,如果主键已经是删除主键约束的时候,如果主键已经是AUTO_INCREMENTAUTO_INCREMENT型,则无法删除,因为只有键才能是型,则无法删除,因为只有键才能是AUTO_INCREMENTAUTO_INCREMENT型的型的17.约束名称可以用约束名称可以用SHOWCREATETABLEpersonSHOWCREATETABLEperson命令查看命令查看18.19.20.//创建外键约束,可在后面加上ondeleterestrictonupdaterestrict//创建外键约束,可在后面加上ondeleterestrictonupdaterestrict21.((11))ALTERTABLEALTERTABLEpersonADDFOREIGNKEYpersonADDFOREIGNKEY((company_idcompany_id))REFERENCEScompanyREFERENCEScompany((company_idcompany_id););22.((22))ALTERTABLEALTERTABLEpersonADDpersonADDCONSTRAINTCONSTRAINTforeing_kforeing_kFOREIGNKEYFOREIGNKEY((co