mysql表结构的完整描述图示 ---用于显示表的结构,涵盖了每个字段的属性(这里描述5个)。
一、desc(describe)命令的输出标签
1、Field(字段名)
-
描述: 列的名称。字段名用于标识表中的数据。
- 用途: 字段名是访问表数据的关键,操作 SQL 查询时引用字段名来选择、更新或删除数据。
- 命名规则: 避免使用 SQL 保留字(如
SELECT
、WHERE
),字段名应具有描述性,以便代码的可读性和维护性。例如,employee_name
比name
更具描述性。 - 常见问题: 避免使用特殊字符或空格,字段名应该遵循一致的命名约定,例如使用下划线分隔单词(
first_name
)。
2、Type (数据类型)
- 描述: 列的数据类型,定义了数据的存储方式和格式。
-
基本数据类型
1.1、数值类型
-
整型:
- bigint
- int(或 integer)
- mediumint
- smallint
- tinyint
-
浮点型:
- decimal(或 numeric)
- double
- float
1.2、字符串类型
-
字符类型:
- varchar(n) (可变长度)
- char(n) (固定长度)
-
文本类型:
- longtext
- mediumtext
- text
- tinytext
-
二进制类型:
- longblob
- mediumblob
- blob
- tinyblob
- varbinary(n)
- binary(n)
1.3、日期和时间类型
-
日期类型:
- year
- time
- timestamp
- datetime
- date
1.4、枚举和集合类型
-
enum:一个字符串对象,可以取预定义的值。
- set:一个字符串对象,可以包含零个或多个预定义值。
1.5、son类型
-
json:用于存储 json 格式的数据。
长度和精度: 数值类型可以设置最大长度(例如 varchar(255)),浮点数可以设置总位数和小数位数(例如 decimal(10,2)
)
3、Null (是否允许 NULL)
- 描述: 列是否可以包含 null值,默认不写是允许空值
- 允许:null允许空值
- 不允许:not null不允许为空值
- 插入数据: 当字段允许 null时,你可以在插入数据时选择不提供该字段的值,MySQL 将自动将其设置为 null。
- 查询数据: 查询中可以使用 is
null
或 isnot null
来筛选包含 null 或不包含 null 的记录。 - 比较: 在 SQL 中,null 不等于任何值(包括另一个 null),比较时需要使用 is
null
进行检查。
4、Key (键、索引)---基于某个列
- 描述: 列是否有索引,以及索引的类型。---show index from employeetable;(显示所有索引)
key键的类型:
主键(primary key):
- 用于唯一标识表中的每一行,不能有重复值且不能为空。
- #创建name表时写入(主键):
create table name(
id int(9) not null primary key comment'序号',
name varchar(8) comment'名字',
sex enum('男','女')comment'性别',
school varchar(30) default'柳州大学' comment'学校'
)comment ='信息登记表';
# 创建name4表时写入(复合主键):
create table name4 (
id int(9) not null comment '序号',
name varchar(9) not null comment '姓名',
sex enum('男', '女') comment '性别',
school varchar(99) default '柳州大学',
primary key (id, name) comment'定义复合主键'
) comment = '信息登记表';
# 向name2表添加一个(主键):
alter table name2 add primary key(id );
# 向name3表添加(复合主键)
alter table name3 add primary key(id,name);
外键(foreign key):
- 用于在两个表之间建立关系,确保引用完整性,子表参照父表数值要一致。
# 创建wai表是写入外键---(constraint约束)
- create table wai (
id int(9) not null comment'序号',
name varchar(9) not null comment'名字',
sex enum('男','女') comment'性别',
school varchar(9) default'柳州大学' comment'柳州大学',
foreign key(id) references name(id) # 外键参照name表的id列
)comment ='登记信息表';