玖叶教程网

前端编程开发入门

PostgreSQL建表手册

表操作大全,主键,约束,外键,字段操作,重命名

1.单个字段主键
postgres=# create table test01(id int primary key, note varchar(20));

2.复合主键
postgres=# create table test02(id1 int,id2 int,note varchar(20), CONSTRAINT pk_test02 primary key(id1,id2));

3.唯一约束UNIQUE
postgres=# create table test03(id1 int,id2 int,note varchar(20),id3 int, CONSTRAINT pk_test03 primary key(id1,id2), CONSTRAINT uk_test03_id3 UNIQUE(id3));

4.check约束,定义某些字段的值必须满足某种要求
postgres=# create table child(name varchar(20), age int,note text, CONSTRAINT ck_child_age CHECK(age<18));
年龄字段要求不能大于18

create table books(book_no integer,name text,price numeric CHECK(price>0),discounted_price numeric CHECK(discounted_price),CHECK (price>discounted_price));
CHECK(price>0) CHECK(discounted_price) 为字段约束
CHECK (price>discounted_price)为表约束

create table books(book_no integer,name text,price numeric ,discounted_price numeric,CHECK(price>0),CHECK(discounted_price),CHECK (price>discounted_price));
或者
create table books(book_no integer,name text,price numeric ,discounted_price numeric,CHECK(price>0 and discounted_price and price>discounted_price));

5.非空约束
create table books(book_no integer not null, name text, price numeric);

6.外键约束
create table class(class_no int primary key, class_name varchar(40));
create table student(student_no int primary key,student_name varchar(40), age int, class_no int REFERENCES class(class_no));

7.增加字段
alter table class add column class_teacher varchar(40);

8.删除字段
alter table class drop column class_teacher varchar(40);

9.删除字段外键依赖CASCADE
alter table class drop column class_teacher varchar(40) CASCADE;

10.增加约束
alter table student ADD CHECK (age>16);
alter table class ADD CONSTRAINT unique_class_teacher UNIQUE(class_teacher);

11.增加非空约束
alter table student ALTER COLUMN student_name SET NOT NULL;

12.删除约束
alter table class DROP CONSTRAINT unique_class_teacher;

13.修改默认值
alter table student ALTER COLUMN age SET DEFAULT 15;

14.删除默认值
alter table student ALTER COLUMN age DROP DEFAULT;

15.修改字段数据类型
alter table student ALTER COLUMN student_name TYPE text;
只有在字段里现有的每个项都可以隐式地转换成新类型时,这个语句才能成功。
如果把varchar(40)改成varchar(5),就可能失败
alter table student ALTER COLUMN student_name TYPE varchar(5);

16.重命名字段
alter table books RENAME COLUMN book_no TO book_id;

17.重命名表
alter table class RENAME to classes;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言