View Single Post
  #1   IP: 49.87.98.13
Old 2014-11-20, 08:48 PM
Texarkana Texarkana is offline
初级会员
 
Join Date: 2013-03-29
Posts: 1
Texarkana 现在声名狼藉
Default 数据表的类型/字符集及表的修改

数据表的类型及存贮位置
MYSQL有一个存储引擎的概念.
mysql>show engines;显示所有的MySQL支持的存储引擎

只学MyISAM和InnoDB
默认的表类型是MyISAM,如要创建InnoDB的表类型:

mysql>create table () engine InnoDB;
mysql>create table () engine=InnoDB;

MyISAM 表类型
OPTIMIZE TABLE 表名
强调快速读取操作

缺点:有一些功能不支持


InnoDB 表类型. 采用表空间的概念来管理数据表
可看作是MyISAM的更新换代类型,支持一些MyISAM所不支持的功能
缺点: 占用空间大, 速度没MyISAM快

MyISAM
.frm 存贮表结构的
.MYD 存贮表数据的
.MYI 存贮索引的

InnoDB
.frm


MySQL默认的字符集
ACSII
ISO-8859-1/latin1
gb2312-80 80年发布的 不推荐使用
gb13000 93年发布的 不推荐使用
GBK 95年发布的 可以用,不推荐使用
GB18030 2000年发布的 数据库支持的较少见

UTF -32
USC -2
UTF -16
UTF -8 强烈推荐大家使用

GBK 2字节, UTF-8 3个字节
name varchar(12) 6个汉字 GBK
name varchar(12) 4个汉字 UTF-8
如有大量的运算,用定长的字符集比比较好.GBK是定长的, utf-8不是

MySQL服务器, 数据库,数据表, 字段
mysql>show character set; 显示mysql支持的字符集
注意:数据库用的UTF-8没一 "-",直接写成UTF8

MySQL字符集包括:
字符集: 是用来定义MySQL存储字符的方式 36个字符集
校对字符集: 是对规则定义了比较字符串的方式 70多
一对多的关系: 1个字符集可以对应多个校对规则
mysql>show collation like 'utf%'; 显示utf8的所有校对字符集
utf8_general_ci: ci表示对大小写不区分
mysql>show variables like 'character_set_server';查服务器字符集
mysql>show variables like 'collation_server';查校对规则

客户端与服务器交互时
character_set_client
character_set_connection
character_set_results
set names 字符集 同时修改以上三个的值


mysql>alter database character set gbk;更改库的字符集
mysql>alter table t2 character set utf8; 更改表的字符集为utf8


备份数据库
命令格式如下:

mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径

例子:

从eyeglasses数据库的t1表中导出数据到 C:/www/createtab.sql 这个文件中

K:\xampp\mysql\bin>mysqldump -u root -p --default-character-set=gbk -d eyeglasses t1 > C:/www/createtab.sql

--default-character-set=gbk:指定导出的字符集为gbk
-d t1:要导出的表名为t1
C:/www/createtab.sql 转成C:/www/下的createtab.sql文件



修改表
Alter table 表名
mysql>alter table t1 add name varchar(30) not null;
mysql>alter table t1 add age int unsigned not null default '0';

在字段name 之后加sex:
mysql>alter table t1 add sex varchar(10) not null after name;

在第一个字段前加height:
mysql>alter table t1 height double first;

修改字段类型:
mysql>alter table t1 modify sex char(3); 将sex的varchar改成char类型
modify 适合于改字段类型
如改字段名要用change:
mysql>alter table t1 change name username varchar(30); 将字段name改成名为username

change old new

更改表名
mysql>alter table t1 rename as users; 将表名为t1的改成表名为users
alter table old rename as new

删除
删除表的字段
mysql>alter table users drop age; 删除表users中的age字段

删除整个表
mysql>drop table if exists users;如users表存在就删除它
Reply With Quote