[TOC] >[success]表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 ## 创建表 **创建MySQL数据表需要以下信息:** 1. 表名 2. 表字段名(至少一个) 3. 定义每个表字段(类型,修饰) **实例** ~~~ mysql> CREATE TABLE stu (id int(5),name char(20)); ~~~ ## 显示表结构 ~~~ mysql> desc stu; ~~~ ## 删除表 ~~~ mysql> drop table stu; ~~~ ## 表修饰 ### default 设置字段的默认值,如果没有向这个字段插入内容,将使用默认值 ### unique UNIQUE约束唯一标识数据库表中的每条记录。一个表中可以有多个字段使用unique约束 ### primary key 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。 ### zerofill 用前导0填充数值以达到指定的显示位数,使用这个修饰符可以阻止 MySQL 数据库存储负值。 ### unsigned unsigned 修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。仍而增大这个字段可以存储的值的范围 ### AUTO_INCREMENT 我们通常希望在每次插入新纪录时,自动地创建主键字段的值。我们可以在表中创建一个auto-increment字段。默认地AUTO_INCREMENT 的开始值是1,每条新纪录递增 1。 当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值不已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大亍已编号的值,则会把该插入到数据列中,并使在下一个编号将仍这个新值开始递增。也就是说,可以跳过一些编号。 **完整实例** ~~~ mysql>CREATE TABLE `stu` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `name` char(20) NOT NULL DEFAULT '1' COMMENT '学生名', `sex` enum('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别', `age` int(3) unsigned NOT NULL COMMENT '年龄', `qq` varchar(11) NOT NULL COMMENT 'qq', `score` int(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='学生表'; ~~~ ## 复制表结构 ~~~ mysql>create table stu_copy like stu; ~~~ 复制一个跟stu表结构一样的另外一张表,不包含数据。 ## 复制表数据 ~~~ mysql>insert into stu_copy select * from stu; ~~~ 复制表数据到另外一张表。 ## 创建表同时复制数据 ~~~ mysql>create table stu_copy select * from stu; ~~~ 复制一个跟stu表结构一样的另外一张表,包含数据。 >[danger]练习:创建一个学校的数据库 school。 创建学生表,包含字段id,学生姓名,性别,年龄。 创建学生日记表,包含id 标题,内容,查看次数。