欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL 数据表

程序员文章站 2022-03-03 18:40:07
...

创建数据表

创建数据表之前,应使用语句 “ 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)