首页 > 编程笔记 > MySQL笔记 阅读:2

MySQL创建数据表(附带实例)

表是数据库中用户存储所有数据的对象,是关系模型中表示实体的方式,是组成数据库的基本元素。可以说没有表,也就没有数据库。在一个关系数据库中,可以包含多个表,所有数据存储在表中。

在数据表中,数据以行和列的形式存储在规范化的二维表格中。表类似于电子表格软件的工作表,但更规范。MySQL 中的每个表都有一个名字,以标识该表。

下表所示为 student 表(即学生表)。下面说明一些与表有关的名词。

表:student 表
 

student 表保存学校所有学生的信息,包括学生学号、姓名和身份证号等,其信息说明如下表所示。

表:student 表的信息说明

数据表属于数据库,在创建数据表之前,应该使用“USE <数据库名>”语句指定操作是在哪个数据库中进行,如果没有选择数据库,就会抛出“No database selected”的错误。

创建数据表的语句为 CREATE TABLE,语法规则如下:
CREATE [TEMPORARY]  TABLE  [IF NOT EXISTS]  <表名>
(
字段名1,数据类型[列级别约束条件][默认值],
字段名2,数据类型[列级别约束条件][默认值],
.........
[表级别约束条件]
)ENGINE="存储引擎";
说明如下:
USE STUDB;
CREATE TABLE 'student' (
  'stu_no' char(12) NOT NULL,
  'stu_name' char(20) NOT NULL,
  'stu_sex' char(2) NOT NULL,
  'stu_politicalstatus' varchar(20) DEFAULT NULL,
  'stu_birthday' date NOT NULL,
  'stu_identitycard' varchar(18) NOT NULL,
  'stu_speciality' varchar(40) NOT NULL,
  'stu_address' varchar(50) DEFAULT NULL,
  'stu_postcode' char(6) DEFAULT NULL,
  'stu_telephone' varchar(18) NOT NULL,
  'stu_email' varchar(30) NOT NULL,
  'stu_resume' text,
  'stu_poor' tinyint(1) NOT NULL,
  'stu_enterscore' float NOT NULL,
  'stu_fee' int(11) NOT NULL,
  PRIMARY KEY ('stu_no')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上面的例子里,每个字段都包含附加约束或修饰符,这些可以用来增加对所输入数据的约束。“PRIMARY KEY”表示将“stu_no”字段定义为主键。“NOT NULL”表示字段必须录入值。“ENGINE=InnoDB”表示采用的存储引擎是 InnoDB,InnoDB 是 MySQL 在 Windows 平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。

表创建完成后,为确保表的定义正确,可以查看表结构的定义。可以采用两种方式来查看,一种是通过工具软件的图形化界面查看;另一种是通过 MySQL Command Line Client 方式使用 DESCRIBE 和 SHOW CREATE TABLE 语句查看。

DESCRIBE/DESC 语句可以查表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,其语法规则如下:
{DESCRIBE/DESC} 表名 [列名|通配符]

通过 DESCRIBE 命令查看 student 表的基本结构,DESCRIBE 命令的执行结果如下:
mysql> DESCRIBE student;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| stu_no        | char(12)    | NO   | PRI | NULL    |       |
| stu_name      | char(20)    | NO   |     | NULL    |       |
| stu_sex       | char(2)     | NO   |     | NULL    |       |
| stu_politicalstatus | varchar(20) | YES  |     | NULL    |       |
| stu_birthday  | date        | NO   |     | NULL    |       |
| stu_identitycard | varchar(18) | NO   |     | NULL    |       |
| stu_speciality| varchar(40) | NO   |     | NULL    |       |
| stu_address   | varchar(50) | YES  |     | NULL    |       |
| stu_postcode  | char(6)     | YES  |     | NULL    |       |
| stu_telephone | varchar(18) | NO   |     | NULL    |       |
| stu_email     | varchar(30) | NO   |     | NULL    |       |
| stu_resume    | text        | YES  |     | NULL    |       |
| stu_poor      | tinyint(1)  | NO   |     | NULL    |       |
| stu_enterscore| float       | NO   |     | NULL    |       |
| stu_fee       | int(11)     | NO   |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
15 rows in set (0.10 sec)
其中各列的含义分别为:
使用 SHOW CREATE TABLE 语句可以查看创建表时的定义语句,还可以查看表的存储引擎和字符编码,在表名之后加上“\G”,可以使所显示的信息更加简洁,其语法规则如下:
SHOW CREATE TABLE表名 \G;
通过 SHOW CREATE TABLE 命令查看 student 表的详细信息,SHOW CREATE TABLE 命令的执行结果如下:
mysql> SHOW CREATE TABLE student\G
*************************** 1. row ***************************
       Table: student
Create Table: CREATE TABLE `student` (
  `stu_no` char(12) NOT NULL,
  `stu_name` char(20) NOT NULL,
  `stu_sex` char(2) NOT NULL,
  `stu_politicalstatus` varchar(20) DEFAULT NULL,
  `stu_birthday` date NOT NULL,
  `stu_identitycard` varchar(18) NOT NULL,
  `stu_speciality` varchar(40) NOT NULL,
  `stu_address` varchar(50) DEFAULT NULL,
  `stu_postcode` char(6) DEFAULT NULL,
  `stu_telephone` varchar(18) NOT NULL,
  `stu_email` varchar(30) NOT NULL,
  `stu_resume` text,
  `stu_poor` tinyint(1) NOT NULL,
  `stu_enterscore` float NOT NULL,
  `stu_fee` int(11) NOT NULL,
  PRIMARY KEY (`stu_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
通过以上两个查看命令的应用可见,它们的侧重点是不一样的,如果要查询表的基本结构,用 DESCRIBE 命令;如果要查看表创建时使用的语句以及存储引擎和字符编码,用 SHOW CREATE TABLE 命令。

相关文章