1. 表的基本概念
在数据库中,表是一种非常重要的数据库对象,是组成数据库的基本对象,由若干个字段组成,主要用来储存数据记录。
表中的数据库对象包含列,索引和触发器。
列:也称属性列,在具体创建表时必须指定列的名字和数据类型。
索引:是根据指定的数据库表列建立起来的顺序,提供了快速访问数据的途径且可监督表的数据,使其索引所指向的列中的数据不重复。
触发器:定义的事物命令的集合,当对一个表中的数据进行插入,更新或者删除时这组命令就会自动执行,可以用来确保数据的完整性和安全性。
2.创建表
CREATE TABLE t_dept( deptno INT, dbname VARCHAR(20), loc VARCHAR(40) );
3.查看表结构
3.1 DESCRIBE(DESC是简写)语句查看表定义
DESCRIBE t_dept;
3.2 SHOW CREATE TABLE语句查看表详细定义
SHOW CREATE TABLE t_dept;
在显示详细定义信息时,可以使用";","\g"和"\G"符号来结束,为了让结果美观,便于查看,最好使用"\G"符号来结束,如下:
4. 删除表
DROP TABLE t_dept;
5. 修改表
5.1 修改表名
ALTER TABLE old_table_name RENAME [TO] NEW _table_name
5.2 增加字段
在表的最后一个位置增加字段:
ALTER TABLE table_name ADD 属性名 属性类型
在表的第一个位置增加字段:
ALTER TABLE table_name ADD 属性名 属性类型 FIRST
在表的指定字段之后增加字段:
ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名
5.3 删除字段
ALTER TABLE table_name DROP 属性名
5.4 修改字段
修改字段的数据类型:
ALTER TABLE table_name MODIFY属性名 属性类型
修改字段的名字:
ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型
同时修改字段的名字和属性:
ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型
修改字段的顺序:
ALTER TABLE table_name MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2
6. 操作表的约束
对于已经创建好的表,虽然字段的数据类型决定了所能储存的数据类型,但是表中所储存的数据是否合法并没有进行检查。如果想针对表中的数据做一些完整性检查操作,可以通过表中的约束来完成。
6.1 MySQL支持的完整性约束
所谓表的完整性是指数据的准确性和一致性,而完整性检查就是指检查数据的准确性和一致性。
完整性约束关键字 | 含义 |
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE KEY(UK) | 约束字段的值是唯一 |
PRIMARY KEY(PK) | 约束字段为表的主键,可以作为该表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值为自动增加 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
MySQL数据库管理系统不支持check约束,即可以使用check约束但是却没有任何效果。
根据约束数据列限制,约束可以分为单列约束(每个约束只约束一列数据)和多列约束(每个约束可以约束多列数据)。
6.2 设置非空约束(NOT NULL,NK)
create table table_name( 属性名 属性类型 NOT NULL, ... );
6.3 设置字段的默认值(DEFAULT)
create table table_name( 属性名 属性类型 DEFAULT 默认值, ... );
6.4 设置唯一约束(UNIQUE,UK)
create table table_name( 属性名 属性类型 UNIQUE, ... );
如果想给设置唯一约束的字段的约束取一个名字,可以执行SQL语句CONSTRAINT:
create table table_name( dbname 属性类型, ... CONSTRAINT uk_dbname UNIQUE(dbname) );
6.5 设置主键约束(PRIMARY KEY,PK)
设置主键约束时,必须满足主键字段的值是唯一,非空的。
单字段主键:
create table table_name( 属性名 属性类型 PRIMARY KEY, ... );
如果想给设置单一主键的字段的约束取一个名字,可以执行SQL语句CONSTRAINT:
create table table_name( dbname 属性类型, ... CONSTRAINT pk_dbname PRIMARY KEY(dbname) );
多字段主键:
当主键由多个字段组合而成时,需要通过SQL语句CONSTRAINT 来实现:
create table table_name( 属性名1 数据类型, 属性名2 数据类型, ... CONSTRAINT 约束名 PRIMARY KEY(属性名1,属性名2) );
6.6 设置字段值自动增长(AUTO_INCREMENT)
AUTO_INCREMENT是MySQL唯一拓展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID。一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常会设置成PK主键。
create table table_name( 属性名 数据类型 AUTO_INCREMENT, ... );
6.7 设置外键约束(FOREIGN KEY,FK)
前面的完整性约束都是在单表中进行设置,而外键约束则保证多个表(通常为两个表)之间的参照完整性,即构建于两个表的两个字段之间的参照关系。
create table table_name( 属性名 数据类型, 属性名 数据类型, ... CONSTRAINT 外键约束名 FOREIGN KEY(属性名1) REFERENCES 表名 (属性名2) );