0

MySQL 数据表的基本操作——创建数据表(十三)

4.1  创建数据表

在创建完数据库之后,接下来的工作就是创建数据表。所谓创建数据表指的是在已经创建好了的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。本节将介绍创建数据表的语法形式、如何添加主键约束、外键约束、非空约束等。

4.1.1  创建表的语法形式

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

创建数据表的语句为 CREATE  TABLE,语法规则如下:

CREATE  TABLE <表名>

(

字段名1 数据类型 [列级别约束条件] [默认值],

字段名2 数据类型 [列级别约束条件] [默认值],

……

[表级别约束条件]

);

使用CREATE TABLE创建表时,必须指定以下信息

要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROPALTERINSERT等。

数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。

【例4.1】创建员工表tb_emp1,结构如【表4.1

4.1 tb_emp1 表结构

字段名称

数据类型

备注

id

INT(11)

员工编号

name

VARCHAR(25)

员工名称

deptId

INT(11)

所在部门编号

salary

FLOAT

工资

首先选择创建表的数据库,SQL语句如下:

USE test;

创建tb_emp1表,SQL语句为:

CREATE TABLE tb_emp1

(

id      INT(11),

name   VARCHAR(25),

deptId  INT(11),

salary  FLOAT

);

语句执行后,便创建了一个名称为tb_emp1的数据表,使用SHOW TABLES;语句查看数据表是否创建成功,SQL语句如下:

mysql> SHOW TABLES;

+-----------------------+

| Tables_in_ test    |

+----------------------+

| tb_emp1         |

+----------------------+

1 row in set (0.00 sec)

可以看到test数据库中已经有了数据表tb_tmp1,数据表创建成功。

4.1.2  使用主键约束

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key constraint)要求主键列的数据唯一,并且不允许为空。主键能够惟一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。主键分为两种类型:单字段主键,多字段联合主键。

1. 单字段主键

主键由一个字段组成,SQL语句格式分以下两种情况。

在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY

【例4.2】定义数据表tb_emp 2,其主键为idSQL语句如下:

CREATE TABLE tb_emp2

(

id      INT(11) PRIMARY KEY,

name   VARCHAR(25),

deptId  INT(11),

salary  FLOAT

);

在定义完所有列之后指定主键。

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

【例4.3】定义数据表tb_emp 3,其主键为idSQL语句如下:

CREATE TABLE tb_emp3

(

id INT(11),

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

PRIMARY KEY(id)

);

上述两个例子执行后的结果是一样的,都会在id字段字段上设置主键约束。

2. 多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRIMARY KEY [字段1, 字段2,. . ., 字段n]

【例4.4】定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工,可以把namedeptId联合起来做为主键,SQL语句如下:

CREATE TABLE tb_emp4

 (

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

PRIMARY KEY(name,deptId)

);

语句执行后,便创建了一个名称为tb_emp4的数据表,name字段和deptId字段组合在一起成为tb_emp4的多字段联合主键。

4.1.3  使用外键约束

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。例如,部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptId与这个id关联。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

创建外键的语法规则如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [ ,字段名2,]

REFERENCES <主表名> 主键列1 [ ,主键列2,]

外键名为定义的外键约束的名称,一个表中不能有相同名称的外键;字段名表示从表的需要添加外键约束的字段列;主表名,即被从表外键所依赖的表的名称;主键列表示主表中定义的主键字段,或者字段组合。

【例4.5】定义数据表tb_emp5,并在tb_emp5表上创建外键约束。

4.2 tb_dept1 表结构

<tbody>
    <tr class="firstRow">
        <td style="height:15.3pt; vertical-align:top; width:140.0pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:center"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><strong><span style="font-family:宋体">字段名称</span></strong></span></span></p>
        </td>
        <td style="height:15.3pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:center"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><strong><span style="font-family:宋体">数据类型</span></strong></span></span></p>
        </td>
        <td style="height:15.3pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:center"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><strong><span style="font-family:宋体">备注</span></strong></span></span></p>
        </td>
    </tr>
    <tr>
        <td style="height:16.05pt; vertical-align:top; width:140.0pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">Id</span></span></p>
        </td>
        <td style="height:16.05pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">INT(11)</span></span></p>
        </td>
        <td style="height:16.05pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><span style="font-family:宋体">部门编号</span></span></span></p>
        </td>
    </tr>
    <tr>
        <td style="height:15.3pt; vertical-align:top; width:140.0pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">Name</span></span></p>
        </td>
        <td style="height:15.3pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">VARCHAR(22)</span></span></p>
        </td>
        <td style="height:15.3pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><span style="font-family:宋体">部门名称</span></span></span></p>
        </td>
    </tr>
    <tr>
        <td style="height:16.05pt; vertical-align:top; width:140.0pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">location</span></span></p>
        </td>
        <td style="height:16.05pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman"">VARCHAR(50)</span></span></p>
        </td>
        <td style="height:16.05pt; vertical-align:top; width:140.05pt">
        <p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="font-family:"Times New Roman""><span style="font-family:宋体">部门位置</span></span></span></p>
        </td>
    </tr>
</tbody></table><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">创建一个部门表</span><span style="font-family:"Times New Roman"">tb_dept1</span><span style="font-family:宋体">,表结构如【表</span><span style="font-family:"Times New Roman"">4.2</span><span style="font-family:宋体">】,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_dept1</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i nt(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name&nbsp;&nbsp;&nbsp; VARCHAR(22)&nbsp; NOT NULL,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">location &nbsp;VARCHAR(50)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">定义数据表</span><span style="font-family:"Times New Roman"">tb_emp5</span><span style="font-family:宋体">,让它的键</span><span style="font-family:"Times New Roman"">deptId</span><span style="font-family:宋体">作为外键关联到</span><span style="font-family:"Times New Roman"">tb_dept1</span><span style="font-family:宋体">的主键</span><span style="font-family:"Times New Roman"">id</span><span style="font-family:宋体">,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句为:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_emp5 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name &nbsp;&nbsp;VARCHAR(25),</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">deptId &nbsp;INT(11), </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">salary &nbsp;&nbsp;FLOAT,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">以上语句执行成功之后,在表</span><span style="font-family:"Times New Roman"">tb_emp5</span><span style="font-family:宋体">上添加了名称为</span><span style="font-family:"Times New Roman"">fk_emp_dept1</span><span style="font-family:宋体">的外键约束,外键名称为</span><span style="font-family:"Times New Roman"">deptId</span><span style="font-family:宋体">,其依赖于表</span><span style="font-family:"Times New Roman"">tb_dept1</span><span style="font-family:宋体">的主键</span><span style="font-family:"Times New Roman"">id</span><span style="font-family:宋体">。<br/><img alt="" src="http://www.jbsage.com/attachment/MTUzMjY2OTAzNDIyNA==.png" style="height:116px; width:450px"/></span></span></span><br/>&nbsp;</p><h3 style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:16pt"><span style="font-family:Calibri"><span style="font-size:14.0pt"><span style="font-family:"Times New Roman"">4.1.4&nbsp; </span></span><span style="font-size:14.0pt"><span style="font-family:楷体_GB2312">使用非空约束</span></span></span></span></h3><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">非空约束(</span><span style="font-family:"Times New Roman"">Not Null constraint</span><span style="font-family:宋体">)指字段的值不能为空。对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">非空约束的语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman""><span style="font-family:宋体">字段名</span> <span style="font-family:宋体">数据类型</span> not null</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">【例</span><span style="font-family:"Times New Roman"">4.6</span><span style="font-family:宋体">】定义数据表</span><span style="font-family:"Times New Roman"">tb_emp6</span><span style="font-family:宋体">,指定员工的名称不能为空,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_emp6 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name &nbsp;&nbsp;VARCHAR(25) NOT NULL,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">deptId &nbsp;INT(11), </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">salary &nbsp;FLOAT,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CONSTRAINT fk_emp_dept2&nbsp; FOREIGN KEY (deptId) REFERENCES tb_dept1(id)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">执行后在</span><span style="font-family:"Times New Roman"">tb_emp6</span><span style="font-family:宋体">中创建了一个</span><span style="font-family:"Times New Roman"">Name</span><span style="font-family:宋体">字段,其插入值不能为空(</span><span style="font-family:"Times New Roman"">NOT NULL</span><span style="font-family:宋体">)。</span></span></span></p><h3 style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:16pt"><span style="font-family:Calibri"><span style="font-size:14.0pt"><span style="font-family:"Times New Roman"">4.1.5&nbsp; </span></span><span style="font-size:14.0pt"><span style="font-family:楷体_GB2312">使用唯一性约束</span></span></span></span></h3><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">唯一性约束(</span><span style="font-family:"Times New Roman"">Unique Constraint</span><span style="font-family:宋体">)要求添加该约束的列字段的值唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">添加唯一性约束的语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">⑴</span> <span style="font-family:宋体">在定义完列之后直接指定唯一约束,语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman""><span style="font-family:宋体">字段名</span> <span style="font-family:宋体">数据类型</span> UNIQUE</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">【例</span><span style="font-family:"Times New Roman"">4.7</span><span style="font-family:宋体">】定义数据表</span><span style="font-family:"Times New Roman"">tb_dept2</span><span style="font-family:宋体">,指定部门的名称唯一,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_dept2 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name &nbsp;&nbsp;&nbsp;VARCHAR(22) UNIQUE,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">location &nbsp;VARCHAR(50)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">⑵</span> <span style="font-family:宋体">在定义完所有列之后指定唯一约束,语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">[CONSTRAINT <<span style="font-family:宋体">约束名</span>>] UNIQUE(<<span style="font-family:宋体">字段名</span>>)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">【例</span><span style="font-family:"Times New Roman"">4.8</span><span style="font-family:宋体">】定义数据表</span><span style="font-family:"Times New Roman"">tb_dept3</span><span style="font-family:宋体">,指定部门的名称唯一,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_dept3 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name&nbsp;&nbsp; &nbsp;VARCHAR(22),</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">location&nbsp; VARCHAR(50),</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CONSTRAINT STH UNIQUE(name)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:"Times New Roman"">UNIQUE</span><span style="font-family:宋体">和</span><span style="font-family:"Times New Roman"">PRIMARY KEY</span><span style="font-family:宋体">区别:一个表中可以有多个字段声明为</span><span style="font-family:"Times New Roman"">UNIQUE</span><span style="font-family:宋体">,但只能由一个</span><span style="font-family:"Times New Roman"">PRIMARY KEY </span><span style="font-family:宋体">声明;声明为</span><span style="font-family:"Times New Roman"">PRIMAY KEY</span><span style="font-family:宋体">的列不允许有空值,但是声明为</span><span style="font-family:"Times New Roman"">UNIQUE</span><span style="font-family:宋体">的字段允许为空值(</span><span style="font-family:"Times New Roman"">NULL</span><span style="font-family:宋体">)的存在。</span></span></span></p><h3 style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:16pt"><span style="font-family:Calibri"><span style="font-size:14.0pt"><span style="font-family:"Times New Roman"">4.1.6 &nbsp;</span></span><span style="font-size:14.0pt"><span style="font-family:楷体_GB2312">使用默认约束</span></span></span></span></h3><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">默认约束(</span><span style="font-family:"Times New Roman"">Default Constraint</span><span style="font-family:宋体">)指定某列的默认值。如男性同学较多,性别就可以默认为&lsquo;男&rsquo;。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为&lsquo;男&rsquo;。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">默认约束的语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman""><span style="font-family:宋体">字段名</span> <span style="font-family:宋体">数据类型</span> DEFAULT <span style="font-family:宋体">默认值</span></span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">【例</span><span style="font-family:"Times New Roman"">4.9</span><span style="font-family:宋体">】定义数据表</span><span style="font-family:"Times New Roman"">tb_emp7</span><span style="font-family:宋体">,指定员工的部门编号默认为</span><span style="font-family:"Times New Roman"">1111</span><span style="font-family:宋体">,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_emp7 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name &nbsp;&nbsp;VARCHAR(25) NOT NULL,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">deptId &nbsp;INT(11) DEFAULT 1111, </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">salary &nbsp;FLOAT,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CONSTRAINT fk_emp_dept3&nbsp; FOREIGN KEY (deptId) REFERENCES tb_dept1(id)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">以上语句执行成功之后,表</span><span style="font-family:"Times New Roman"">tb_emp7</span><span style="font-family:宋体">上得字段</span><span style="font-family:"Times New Roman"">deptId</span><span style="font-family:宋体">拥有了一个默认的值</span><span style="font-family:"Times New Roman"">1111</span><span style="font-family:宋体">,新插入的记录如果没有指定部门编号,则默认的都为</span><span style="font-family:"Times New Roman"">1111</span><span style="font-family:宋体">。</span></span></span></p><h3 style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:16pt"><span style="font-family:Calibri"><span style="font-size:14.0pt"><span style="font-family:"Times New Roman"">4.1.7&nbsp; </span></span><span style="font-size:14.0pt"><span style="font-family:楷体_GB2312">设置表的属性值自动增加</span></span></span></span></h3><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">在数据库应用中,经常希望在每次插入新记录时,系统就会自动生成字段的主键值。可以通过为表主键添加</span><span style="font-family:"Times New Roman"">AUTO_INCREMENT</span><span style="font-family:宋体">关键字来实现。默认的,在</span><span style="font-family:"Times New Roman"">MySQL</span><span style="font-family:宋体">中</span><span style="font-family:"Times New Roman"">AUTO_INCREMENT</span><span style="font-family:宋体">的初始值值是</span><span style="font-family:"Times New Roman"">1</span><span style="font-family:宋体">,每新增一条记录,字段值自动加</span><span style="font-family:"Times New Roman"">1</span><span style="font-family:宋体">。一个表只能有一个字段使用</span><span style="font-family:"Times New Roman"">AUTO_INCREMENT</span><span style="font-family:宋体">约束,且该字段必须为主键的一部分。</span><span style="font-family:"Times New Roman"">AUTO_INCREMENT</span><span style="font-family:宋体">约束的字段可以是任何整数类型(</span><span style="font-family:"Times New Roman"">TINYINT</span><span style="font-family:宋体">、</span><span style="font-family:"Times New Roman"">SMALLIN</span><span style="font-family:宋体">、</span><span style="font-family:"Times New Roman"">INT</span><span style="font-family:宋体">、</span><span style="font-family:"Times New Roman"">BIGINT</span><span style="font-family:宋体">等)。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">设置字段值自增属性的语法规则如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman""><span style="font-family:宋体">字段名</span> <span style="font-family:宋体">数据类型</span> AUTO_INCREMENT</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">【例</span><span style="font-family:"Times New Roman"">4.10</span><span style="font-family:宋体">】定义数据表</span><span style="font-family:"Times New Roman"">tb_emp8</span><span style="font-family:宋体">,指定员工的编号自动递增,</span><span style="font-family:"Times New Roman"">SQL</span><span style="font-family:宋体">语句如下:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CREATE TABLE tb_emp8 </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">(</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT(11) PRIMARY KEY AUTO_INCREMENT,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">name &nbsp;&nbsp;VARCHAR(25) NOT NULL,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">deptId &nbsp;INT(11), </span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">salary &nbsp;FLOAT,</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">CONSTRAINT fk_emp_dept5&nbsp; FOREIGN KEY (deptId) REFERENCES tb_dept1(id)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Times New Roman"">);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">上述例子执行后,会创建名称为</span><span style="font-family:"Times New Roman"">tb_emp8</span><span style="font-family:宋体">的数据表。表</span><span style="font-family:"Times New Roman"">tb_emp8</span><span style="font-family:宋体">中的</span><span style="font-family:"Times New Roman"">id</span><span style="font-family:宋体">字段的值在添加新记录的时候会自动增加,在插入记录的时候,默认的自增字段</span><span style="font-family:"Times New Roman"">id</span><span style="font-family:宋体">的值从</span><span style="font-family:"Times New Roman"">1</span><span style="font-family:宋体">开始,每次添加一条新记录,该值自动加</span><span style="font-family:"Times New Roman"">1</span><span style="font-family:宋体">。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">例如,执行如下插入语句:</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">mysql> INSERT INTO <span style="font-family:"Times New Roman"">tb_emp8</span> (name,salary)</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">-> VALUES(&#39;Lucy&#39;,1000), (&#39;Lura&#39;,1200),(&#39;Kevin&#39;,1500);</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri"><span style="font-family:宋体">语句执行完后,</span><span style="font-family:"Times New Roman"">tb_emp8</span><span style="font-family:宋体">表中增加</span><span style="font-family:"Times New Roman"">3</span><span style="font-family:宋体">条记录,在这里,并没有输入</span><span style="font-family:"Times New Roman"">id</span><span style="font-family:宋体">的值,但系统已经自动添加该值,使用</span><span style="font-family:"Times New Roman"">SELECT</span><span style="font-family:宋体">命令查看记录。</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">mysql> SELECT * FROM tb_emp8;</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">+----+-------+--------+--------+</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">| id | name&nbsp; &nbsp;| deptId| salary &nbsp;|</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">+----+-------+--------+--------+</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">|&nbsp; 1 | Lucy&nbsp; &nbsp;|&nbsp;&nbsp; NULL |&nbsp;&nbsp; 1000 &nbsp;|</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">|&nbsp; 2 | Lura&nbsp; &nbsp;|&nbsp;&nbsp; NULL |&nbsp;&nbsp; 1200 &nbsp;|</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">|&nbsp; 3 | Kevin &nbsp;|&nbsp;&nbsp; NULL |&nbsp;&nbsp; 1500 &nbsp;|</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">+----+-------+--------+--------+</span></span></span></p><p style="margin-left:0cm; margin-right:0cm; text-align:justify"><span style="font-size:9pt"><span style="background-color:#d9d9d9"><span style="font-family:"Courier New"">3 rows in set (0.00 sec)</span></span></span></p><p style="text-align:center"><img src="http://www.jbsage.com//attachment/20250807/e343d282daf0c36e738ad3e552aae0c7.png" alt="e343d282daf0c36e738ad3e552aae0c7.png" width="100%" height="auto"/></p>