数据库数据结构和字段详解

HarderHeng Lv5

一、在数据库中创建表

1
2
3
4
create table table_test(
id int comment 'id',
name varchar(10)
)comment '测试表';

上述代码创建了一个叫做table_test,并创建了int类型的键idvarchar类型长度为10的键name

二、键的约束

1、主键约束(primary key)

主键用来唯一标识表中的每一行数据,主键字段不能包含NULL值,且每个表只能有一个主键。

1
2
3
4
create table table_test(
id int comment 'id' primary key, --将id设为主键
name varchar(10)
)comment '测试表';

代理键是系统自动生成的不带有特殊意义的可以作为主键的键,在Postgre数据库中可以使用serial创建代理键,并且使用表级约束将代理键设为主键。

代理键会自动从零递增。

1
2
3
4
5
create table table_test(
id serial not null comment 'id',
name varchar(10),
constraint id_check primary key id
)comment '测试表';

2、唯一约束(unique)

确保字段的值在整个表中是唯一的,可以为NULL,可以单独作为一个约束使用,也可以和主键约束一起使用。

1
2
3
4
create table table_test(
id int comment 'id' primary key, --将id设为主键
name varchar(10) unique --使name字段的值唯一
)comment '测试表';

也可以使用表级约束定义由多个列组成的复合主键constraint table_test_PK primary key (id,name)

复合主键用来将两列不能唯一的列组合起来以构成唯一的列,来确保表中具有能作为主键的列。

3、检查约束(check)

约定字段的值在一个规定的范围内。

1
2
3
4
create table table_test(
id int check (id >= 0) comment 'id', --为字段添加了检查约束使得id必须大于零
name varchar(10)
)comment '测试表';

也可以在表级别进行检查约束,在定义列之后可以加上constraint id_check check (id >= 0),这个约束名为id_check,并且作用于id字段。

可以使用enum枚举类型代替检查约束。

在这里也可以用语句name varchar(10) check (name in ('小明','小红'))达到一样的效果。

1
2
3
4
create table table_test(
id int comment 'id',
name enum('小明','小红') --限制name只能取值为两个枚举量
)comment '测试表';

4、默认约束(default)

指定一个字段的默认值。

1
2
3
4
create table table_test(
id int default 0 comment 'id' ,--id默认值为0
name varchar(10)
)comment '测试表';

5、非空约束(not null)

约束一个字段的值不能为空。

1
2
3
4
create table table_test(
id int not null comment 'id', --值不能为空
name varchar(10)
)comment '测试表';

6、外键约束(foreign key)

外键约束使得一个字段的取值必须来自于另一个表的特定字段(通常是主键)。

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE cities (
id INT PRIMARY KEY,
name VARCHAR(50)
);

CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
city_id INT,
FOREIGN KEY (city_id) REFERENCES cities(id)
);

以上的代码对city_id添加了约束使得其值只能是city表中的id取值。

三、数据结构

数据库有三种数据结构

1、数值类型

  • 在数值类型后面加上unsigned表示无符号
  • 在浮点类型后面加上括号指定两个参数,一个是位数一个是小数位。

2、字符串类型

  • 在字符串后面加上括号指定字符长度

  • char是定长字符串,性能好但是空间大,varchar是变长字符串,性能差但是空间小。

  • blob是二进制文件,一般不用。text是二进制文本。

3、时间日期类型

image-20240403201151186

四、字段额外属性

  • comment可以给某一个字段添加注释,也可以给表添加。
  • Title: 数据库数据结构和字段详解
  • Author: HarderHeng
  • Created at : 2024-04-03 18:20:28
  • Updated at : 2024-05-15 14:45:37
  • Link: https://harderheng.life/2024/04/03/数据库数据结构和字段详解/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments