一、在数据库中创建表#
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可以给某一个字段添加注释,也可以给表添加。