@songying
2018-12-13T13:13:33.000000Z
字数 1927
阅读 1065
mysql
它存储串,如名字、地址、电话号码、邮政编码等。有两种基本的串类型,分别为定长串和变长串.
- 定长串接受长度固定的字符串,其长度是在创建表时指定的。
- 变长串存储可变长度的文本。
数据类型 | 说明 |
---|---|
CHAR | 1~255个字符的定长串。它的长度必须在创建时指定,否则MySQL假定为CHAR(1) |
ENUM | 接受最多64 K个串组成的一个预定义集合的某个串 |
TEXT | 最大长度为64 K的变长文本 |
LONGTEXT | 与TEXT相同,但最大长度为4 GB |
MEDIUMTEXT | 与TEXT相同,但最大长度为16 K |
SET | 接受最多64个串组成的一个预定义集合的零个或多个串 |
TINYTEXT | 与TEXT相同,但最大长度为255字节 |
VARCHAR | 长度可变,最多不超过255字节。如果在创建时指定为VARCHAR(n),则可存储0到n个字符的变长串(其中n≤255) |
数据类型 | 描述 |
---|---|
BIT | 位字段,1~64位 |
INT | 整数值,支持2147483648~2147483647 |
TINYINT | 整数值,支持128~127 |
SMALLINT | 整数值,支持32768~32767 |
MEDIUMINT | 整数值,支持8388608~8388607 |
BIGINT | 整数值,支持9223372036854775808~9223372036854775807 |
REAL | 4字节的浮点值 |
FLOAT | 单精度浮点值 |
DOUBLE | 双精度浮点值 |
DECIMAL(或DEC) | 精度可变的浮点值 |
BOOLEAN(或BOOL) | 布尔标志,或者为0或者为1 |
类型 | 描述 |
---|---|
DATE | 格式为YYYY-MM-DD |
TIME | 格式为HH:MM:SS |
DATETIME | DATE和TIME的组合 |
TIMESTAMP | 功能和DATETIME相同(但范围较小) |
YEAR | 用2位数字表示,范围是70(1970年)~69(2069年),用4位数字表示,范围是1901年~2155年 |
二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等
BLOB | Blob最大长度为64 KB |
---|---|
MEDIUMBLOB | Blob最大长度为16 MB |
LONGBLOB | Blob最大长度为4 GB |
TINYBLOB | Blob最大长度为255字节 |
- 各列之间用
,
分隔。-
CREATE TABLE tablename
(
cust_id int NOT NULL ATUO_INCREMENT,
cust_name char(50) NOT NULL,
...
PRIMARY KEY (cust_id) % 将cust_id列指定为主键列
)
NULL值表示没有值或缺失值。 NULL 的列允许该列无值。NOT NULL 的列则该列必须有值。
NULL是默认设置。
NULL值与空串('')不同,空串在NOT NULL中时允许的,空串时一个有效的值。
主键值必须唯一.
- 主键使用单个列,则它的值必须唯一
- 使用多个列,则这些列的组合值必须唯一
主键可以在创建表时定义,或者在创建表之后定义。
- 主键中只能使用NOT NULL值的列。
PRIMARY KEY (key1, key2) #指定多个主键
AUTO_INCREMENT 告诉MySQL,本列每当增加一行时自动增量。
- 每个表只允许一个 AUTO_INCREMENT 列
- 它必须被索引(如,通过使它成为主键)。
覆盖AUTO_INCREMENT
确定AUTO_INCREMENT的值
quantity int NOT NULL DEFAULT 1, # 指定默认值
理想状态下,当表中存储数据以后,该表就不应该再被更新。所以在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。
ALTER TABLE 表名 ADD vend_phone CHAR(20); # 给vendors表增加一个名为vend_phone的列,且必须声明其数据类型
ALTER TABLE 表名 DROP COLUMN vend_phone; # 删除名为vend_phone的列
使用 ALTER TABLE 要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。
复杂的表结构一般手动删除:
- 用新的列布局创建一个新表
- 使用 INSERT SELECT 语句从旧表复制数据到新表
- 检验包含所需数据的新表;
- 重命名或删除旧表
- 用旧表原来的名字重命名新表
DROP TABLE table_name;
RENAME TABLE table_name1 to table_name2;
RENAME TABLE name1 TO name2,
name3 TO name4,
name5 TO name6;