一、在数据库中创建表
create table table_test(
id int comment 'id',
name varchar(10)
)comment '测试表';
上述代码创建了一个叫做table_test,并创建了int类型的键id,varchar类型长度为10的键name。
二、键的约束
1、主键约束(primary key)
主键用来唯一标识表中的每一行数据,主键字段不能包含NULL值,且每个表只能有一个主键。
create table table_test(
id int comment 'id' primary key, --将id设为主键
name varchar(10)
)comment '测试表';
代理键是系统自动生成的不带有特殊意义的可以作为主键的键,在Postgre数据库中可以使用serial创建代理键,并且使用表级约束将代理键设为主键。
代理键会自动从零递增。
create table table_test(
id serial not null comment 'id',
name varchar(10),
constraint id_check primary key id
)comment '测试表';
2、唯一约束(unique)
确保字段的值在整个表中是唯一的,可以为NULL,可以单独作为一个约束使用,也可以和主键约束一起使用。
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)
约定字段的值在一个规定的范围内。
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 ('小明','小红'))达到一样的效果。
create table table_test(
id int comment 'id',
name enum('小明','小红') --限制name只能取值为两个枚举量
)comment '测试表';
4、默认约束(default)
指定一个字段的默认值。
create table table_test(
id int default 0 comment 'id' ,--id默认值为0
name varchar(10)
)comment '测试表';
5、非空约束(not null)
约束一个字段的值不能为空。
create table table_test(
id int not null comment 'id', --值不能为空
name varchar(10)
)comment '测试表';
6、外键约束(foreign key)
外键约束使得一个字段的取值必须来自于另一个表的特定字段(通常是主键)。
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、时间日期类型

四、字段额外属性
- comment可以给某一个字段添加注释,也可以给表添加。