[关闭]
@songying 2018-12-13T13:13:33.000000Z 字数 1927 阅读 1065

21 创建,操纵表

mysql


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字节

创建表

  • 各列之间用,分隔。
  1. CREATE TABLE tablename
  2. (
  3. cust_id int NOT NULL ATUO_INCREMENT
  4. cust_name char(50) NOT NULL,
  5. ...
  6. PRIMARY KEY (cust_id) % cust_id列指定为主键列
  7. )

NULL值

NULL值表示没有值或缺失值。 NULL 的列允许该列无值。NOT NULL 的列则该列必须有值。

NULL是默认设置。

NULL值与空串('')不同,空串在NOT NULL中时允许的,空串时一个有效的值。

主键

主键值必须唯一.

  • 主键使用单个列,则它的值必须唯一
  • 使用多个列,则这些列的组合值必须唯一

主键可以在创建表时定义,或者在创建表之后定义。

  • 主键中只能使用NOT NULL值的列。
  1. PRIMARY KEY (key1, key2) #指定多个主键

使用AUTO_INCREMENT

AUTO_INCREMENT 告诉MySQL,本列每当增加一行时自动增量。

  • 每个表只允许一个 AUTO_INCREMENT 列
  • 它必须被索引(如,通过使它成为主键)。

指定默认值

  1. quantity int NOT NULL DEFAULT 1 # 指定默认值

更新表

理想状态下,当表中存储数据以后,该表就不应该再被更新。所以在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。

  1. ALTER TABLE 表名 ADD vend_phone CHAR(20); # 给vendors表增加一个名为vend_phone的列,且必须声明其数据类型
  2. ALTER TABLE 表名 DROP COLUMN vend_phone; # 删除名为vend_phone的列

使用 ALTER TABLE 要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。

复杂的表结构一般手动删除:

  1. 用新的列布局创建一个新表
  2. 使用 INSERT SELECT 语句从旧表复制数据到新表
  3. 检验包含所需数据的新表;
  4. 重命名或删除旧表
  5. 用旧表原来的名字重命名新表

删除表

  1. DROP TABLE table_name;

重命名表

  1. RENAME TABLE table_name1 to table_name2;
  2. RENAME TABLE name1 TO name2,
  3. name3 TO name4,
  4. name5 TO name6;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注