在数据库中,数据表是数据库最重要、最基本的操作对象,是数据存储的基本单位。创建数据表的过程就是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。
创建数据表的语法形式:
CREATE TABLE <表名>
(字段名1 数据类型 [列级别约束] [默认值],
字段名2 数据类型 [列级别约束] [默认值],
..............
[表级别约束]);其中[]中的内容不是必须有的,看实际情况选择。
mysql> CREATE DATABASE teat_db;
Query OK, 1 row affected (0.00 sec)
mysql> USE teat_db;
Database changed
mysql> CREATE TABLE yuangong
-> (id INT(11),
-> name VARCHAR(25),
-> deptId INT(11),
-> salary FLOAT);
Query OK, 0 rows affected (0.03 sec)
mysql> SHOW TABLES;
+-------------------+
| Tables_in_teat_db |
+-------------------+
| yuangong |
+-------------------+
1 row in set (0.00 sec)
1.主键约束
主键是能够唯一的标识表中的一条计录,也就是说主键约束所在的列的数据是唯一的不重复的,要注意数据不能为空。主键能够和外键结合来定义不同数据表之间的关系,以加快数据库的查询速度。
单字段主键语句格式:
字段名 数据类型 PRIMARY KEY [默认值]; 在定义字段类型时直接添加约束
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]; 在定义完字段类型后添加约束
mysql> CREATE TABLE yuangong1
-> (id INT(11) PRIMARY KEY,
-> name VARCHAR(25),
-> salary FLOAT
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE TABLE yuangong2
-> (id INT(11),
-> name VARCHAR(25),
-> location VARCHAR(50),
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.02 sec)
字段联合主键: PRIMARY KEY [字段1,字段2.........]
2.外键约束
外键是用来建立两个表的数据之间的连接。一个表可以有多个外键也可以只有一个外键,同时一个表的外键可以为空值,如果不是空值的话应该对应另外一个表的主键。我们一般把主键所在的表称之为父表,外键所在的表称之为子表。外键的作用是保持数据的一致性和完整性。
外键约束的语句格式:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1[字段名2.....]
REFERENCES <主表名> 主键列1 [主键列2.......]
案例:假若我们想创建一张一个班级的学生信息表,包括学生的学号、姓名、身份证信息、民族、语数英成绩,为了方便管理在建表的时候我们选择建立两张表一张为个人信息表,一张为成绩表,为了将两张表之间建立联系我们可以将个人信息表中的学号设置为主键,在成绩表中设置外键建立关系保证数据的完整和一致性。
mysql> CREATE TABLE student
-> ( id INT(12) PRIMARY KEY,
-> name VARCHAR(25) NOT NULL,
-> minzu VARCHAR(10),
-> idcard INT(18)
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE TABLE student_sclre
-> (student_id INT(12),
-> chinese FLOAT,
-> math FLOAT,
-> english FLOAT,
-> FOREIGN KEY(student_id) REFERENCES student(id)
-> );
Query OK, 0 rows affected (0.02 sec)
注意:在定义完外键之后,就不允许删除在父表中关联的行,而且在定义外键时应该和其对应的主键的数据类型一致。
3.非空约束
非空约束即指定的字段不能为空,在上面的例子中已经使用到了这个约束。
语句格式:
字段名 数据类型 NOT NULL;
4.唯一性约束
唯一性约束时要求指定的列的数据不能重复不过可以为空,但是为空的值只能存在一个。
语句格式:
字段名 数据类型 UNIQUE;
和主键的区别:主键声明只能为一个(单字段主键和多字段联合主键),而且不能为空,UNIQUE的声明可以在多个字段上添加同时可以为空。
5.默认约束
默认约束是说有该约束的字段在插入值时如果没有给赋值则会使用默认值。如我们上面使用的民族的字段,因为学生是汉族的比例特别的大我们可以把民族的默认值设置为汉族,这样在插入信息时可以只对于不是汉族的学生填写对应的信息。
语句格式:
字段名 数据类型 DEFAULT 默认值;
6.设置表的属性值自动增加
例如我们学生的学号信息都是依次加一的,这个时候我们自己去挨个添加就比较麻烦,这个约束就可以帮我们解决这个麻烦。默认的,AUTO_INCREMENT的初始值是1,每增加一条学生的信息就会自动加一,一个表中只能有一个字段使用该约束,且该字段应该是主键的一部分。
语句格式:
字段名 数据类型 AUTO_INCREMENT;