MySQL心得2--命令行方式建库和表(三)

2014-11-24 09:39:24 · 作者: · 浏览: 2
,具体在附录E中介绍。
举例:
USE mydb1;
CREATE TABLE XS
(
学号 char(6) NOTNULL primary KEY,
姓名 char(8) NOTNULL ,
专业名 char(10) NOT NULL ,
性别 tinyint(1) NOT NULL default 1
) engine=InnoDB;
说明:“primary KEY”表示将“学号”字段定义为主键。“default 1”表示“性别”的默认值为1。“engine=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“engine=InnoDB”可以省略。
12.说明:
● ignore:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定ignore,当重复关键字错误发生时操作失败。如果指定了ignore,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
● column_definition:定义列的数据类型和属性,具体内容在create table的语法中已做说明。
● first| after col_name:表示在某列的前或后添加,不指定则添加到最后。
注意:若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来char类型的列要修改成int类型,而原来列值中有字符型数据“a”,则无法修改。
13. 1). 空值(NULL)概念
空值通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。
注意:表的关键字不允许为空值。空值不能与数值数据0或字符类型的空字符混为一谈。任意两个空值都不相等。 www.2cto.com
2). 列的IDENTITY(标志)属性
对任何表都可创建包含系统所生成序号值的一个标志列,该序号值唯一标志表中的一列,可以作为键值。每个表只能有一个列设置为标志属性,该列只能是decimal、int、numeric、smallint、bigint 或tinyint 数据类型。定义标志属性时,可指定其种子(即起始)值、增量值,二者的默认值均为 1。系统自动更新标志列值,标志列不允许空值。
在下列情况下,MySQL隐含地改变在一个CREATE TABLE语句给出的一个列类型(这也可能在ALTER TABLE语句上出现)。
14.MySQL隐含地改变列类型:
(1)长度小于4的varchar被改变为char。
(2)如果在一个表中的任何列有可变长度,结果使整个行是变长。
因此,如果一张表包含任何变长的列(varchar、text或Blob),所有大于3个字符的char列被改变为varchar列。这在任何方面都不影响用户如何使用列。在MySQL中这种改变可以节省空间并且使表操作更快捷。
(3)timestamp的显示尺寸必须是偶数且在2~14的范围内。如果指定0显示尺寸或比14大,尺寸被强制为14。从1~13范围内的奇数值尺寸被强制为下一个更大的偶数。
(4)不能在一个timestamp列里面存储一个NULL,将它设为NULL默认为当前的日期和时间。
如果想要知道MySQL是否使用了除指定的以外的一种列类型,在创建表之后,使用一个DESCRIBE语句即可。DESCRIBE语句在3.1.4节介绍。
15 type定义如下:
说明:在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。
对于字符数据类型,MySQL支持两种数据类型选项:CHARACTERSET和COLLATE。如果要区分字符的大小写情况,可以在字符类型后面加上BINGARY。
对于除BIT以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。UNSIGNED:不允许负值。ZEROFILL:当插入的值长度小于字段设定的长度时,剩余部分用0填补。
spatial_type是空间类型数据。
16. 表选项table_option定义如下:
{engine | type} = engine_name //存储引擎
| auto_increment = value //初始值
| auto_increment = value //表的平均行长度
| [default] charcter set charset_name [collatecollation_name] //默认字符集和校对
| checksum = {0 | 1} //设置为1表示求校验和
| comment= 'string' //注释
| connection = 'connect_string' //连接字符串
| MAX_ROWS = value //行的最大数
| MIN_ROWS = value //列的最小数
| PACK_KEYS = {0 | 1 | DEFAULT}
| password = 'string' //对.frm文件 加密
| delay_key_write = {0 | 1} //对关键字的更新
|row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} //定义各行应如何储存 www.2cto.com
| union = (tbl_name[,tbl_name]...) //表示哪个表应该合并
| insert_method = { NO | FIRST | LAST}//是否执行INSERT语句
|data directory = 'absolute path todirectory' //数据文件的路径
| index directory = 'absolute path todirectory’ //索引的路径
作者 tianyazaiheruan