MySQL心得2--命令行方式建库和表(二)
gned] [zerofill]
int [unsigned] [zerofill]
bigint [unsigned] [zerofill]
float[(M,D)][unsigned][zerofill]
double[(M,D)][unsigned][zerofill]
位类型。M指定位数,默认值1,范围1-64
带符号的范围是-128到127。无符号0到255。
www.2cto.com
使用0或1表示真或假
2的16次方
2的32次方
2的64次方
M指定显示长度,d指定小数位数
表示比float精度更大的小数
文本、二进制类型
char(size) char(20)
varchar(size) varchar(20)
blob longblob
text(clob) longtext(longclob)
固定长度字符串
可变长度字符串
二进制数据
大文本
时间日期
date/datetime/TimeStamp
日期类型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间
注意: 在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。
对于字符数据类型,MySQL支持两种数据类型选项:characterset和collate。如果要区分字符的大小写情况,可以在字符类型后面加上bingary。
对于除bit以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。unsigned:不允许负值。zerofill:当插入的值长度小于字段设定的长度时,剩余部分用0填补。
与int有关的类型与java中的bit、short、int、long分别对应。
varchar、bolb和text类是变长类型。每个类型的存储需求取决于列值的实际长度。
9. 列定义column_definition格式如下:
col_name type [not null | null] [default default_value]
[auto_increment] [unique [key] | [primary] key]
[comment 'string'] [reference_definition]
说明: www.2cto.com
● col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。
● type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。
● auto_increment:设置自增属性,只有整型列才能设置此属性。当插入null值或0到一个auto_increment列中时,列被设置为value+1,在这里value是此前表中该列的最大值。auto_increment顺序从1开始。每个表只能有一个auto_increment列,并且它必须被索引。
● not null | null:指定该列是否允许为空。如果不指定,则默认为null。
● default default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOT NULL,默认值取决于列类型:
(1)对于没有声明auto_increment属性的数字类型,默认值是0。对于一个auto_increment列,默认值是在顺序中的下一个值。
(2)对于除timestamp以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个timestamp列,默认值是当前的日期和时间。
(3)对于除enum的字符串类型,默认值是空字符串。对于enum,默认值是第一个枚举值。
● unique key | primary key:两者都表示字段中的值是唯一的。primary key表示设置为主键,一个表只能定义一个主键,主键一定要为notnull。
● comment 'string':对于列的描述,string是描述的内容。
● reference_definition:指定参照的表和列。
10. (1).复制表 : create table 表名 like 表名1
语法格式:
create [temporary] table[if not exists] tbl_name
[ ( )like old_ name [ ] ]
| [as (select_statement)] ;
说明:
使用LIKE关键字创建一个与old _name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用as关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条select语句。
(2).删除表 : drop table 表名(这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除) www.2cto.com
(3).修改表名 : rename子句,语法格式:
rename table old_name to new_name
new_tbl_name是新表名。例如,将表a改名为b:alter table a rename to b ;除了上面的alter table命令,还可以直接用renametable语句来更改表的名字。
● order by子句(以后介绍):用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。
● table_options:修改表选项,具体定义与create table语句中一样。
可以在一个alter table语句里写入多个add、alter、drop和chang子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个alter table语句中每个子句只允许使用一次。
11.说明:表中大多数的选项涉及的是表数据如何存储及存储在何处。多数情况下,不必指定表选项。engine选项是定义表的存储引擎