MySQL 数据表
创建数据表
创建数据表之前,应使用语句 “ USE<数据库名> ” 指定在那个数据库中进行操作。如果没选择数据库,会出现 “ No database selected ” 的错误。
1.基本的必须制定部分:
表的常用语法:CREATE TABLE table_name ( column_name column_type [ NULL | NOT NULL ] [ DEFAULT default_value ] [ AUTO_INCREMENT ] [ PRIMARY KEY ] [ COMMENT 'string' ] )
table_name:创建的表的名称。
column_name:表中某一列的列名,一个表可以有多个列。
column_type :列的类型。
例:
员工号:
姓名: 年龄: 出生日期: 工资: 1001 张三 34 1972-01-29 6000.00 1002 李四 37 1969-06-02 6200.00 1003 王五 26 1980-12-12 3800.00 mysql> create table mytable -> (id int (5), -> name char (10), -> age smallint (3), -> birthday date, -> salary float (15,2)); Query OK, 0 rows affected (0.17 sec)
表名为 mytable,表列分别为 id name age birthday salary。其中,员工号是一个5位的整形数据,姓名是一个10位的字符串型数据,年龄是一个3位的整形数据,生日是一个日期型数据,工资是一个15位的有2位小数的浮点型数据。
2.列的基本属性
NULL 和 NOT NULL 是一个可选的二选一的选项,表示这一列是否为空,不指定则默认允许为空。
DEFAULT default_value 是一个可选的是否存在默认值的选项,如果指定这个选项,在以后对该表插入数据时如果没有指定这一列的值,则该列的值将为 default_value 的值。
AUTO_INCREMENT 是一个可选的标识该列是否自动递增的选项,如果指定了这个选项,则每次插入一条记录时,该列的值自动加1。
PRIMARY KEY 选项标识这一列是否为主键,表中的一列或多列主键唯一标识一条记录
COMMENT 'string' 用来输入对该列的一个说明,MySQL不会读取这个选项,但会将创建表时写入的说明储蓄在表的定义中,供以后参考。
例:
mysql> create table mytable( -> id int(5) not null auto_increment primary key comment '员工号', -> name char(10) not null comment '姓名', -> age smallint(3) not null default 0 comment '年龄', -> birthday date null comment '出生日期', -> salary float(15,2) not null default 0.0 comment '工资'); Query OK, 0 rows affected (0.08 sec)
此代码指定了除了出生日期以外的其他列都不可以为空。员工号通过数据库进行自动递增分配,员工号是表的主键,唯一标识一条记录。每行均增加注释,此后可通过 show create table 命令来查看注释。
语法:show create table table_name ; table_name 为表的名称
此实例输出这个命令:
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | mytable | CREATE TABLE `mytable` ( `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '员工号', `name` char(10) NOT NULL COMMENT '姓名', `age` smallint(3) NOT NULL DEFAULT '0' COMMENT '年龄', `birthday` date DEFAULT NULL COMMENT '出生日期', `salary` float(15,2) NOT NULL DEFAULT '0.00' COMMENT '工资', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.03 sec)
3.复制表结构
语法:create table new_table_name like old_table_name ; new_table_name 指新创建表的名称,old_table_name指要被复制已经存在的表的名称
例:
mysql> create table mytable_new like mytable; Query OK, 0 rows affected (0.18 sec)
用 show create table 来验证新表是否与旧表格式相同
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | mytable_new | CREATE TABLE `mytable_new` ( `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '员工号', `name` char(10) NOT NULL COMMENT '姓名', `age` smallint(3) NOT NULL DEFAULT '0' COMMENT '年龄', `birthday` date DEFAULT NULL COMMENT '出生日期', `salary` float(15,2) NOT NULL DEFAULT '0.00' COMMENT '工资', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec)
上一篇: 数据表结构
下一篇: 实践中的重构05_简洁的代码