1.
函数1:
CREATE FUNCTION "public"."NewProc"(length int4)
RETURNS "pg_catalog"."text" AS $BODY$
declare chars text[] := '{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}';
result text := '';
i integer := 0;
begin
if length < 0 then
raise exception 'Given length cannot be less than 0';
end if;
for i in 1..length loop
result := result || chars[1+random()*(array_length(chars, 1)-1)];
end loop;
return result;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100
;
ALTER FUNCTION "public"."NewProc"(length int4) OWNER TO "postgres";
NewProc是函数的名字,可以自己修改,后边代码中会用到,名称为random_string,用于创建随机字符串
函数2:
CREATE FUNCTION "public"."NewProc"(length int4)
RETURNS "pg_catalog"."text" AS $BODY$
declare
chars text[] := '{0,1,2,3,4,5,6,7,8,9}';
result text := '';
i integer := 0;
begin
if length < 0 then
raise exception 'Given length cannot be less than 0';
end if;
for i in 1..length loop
result := result || chars[1+random()*(array_length(chars, 1)-1)];
end loop;
return result;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100
;
ALTER FUNCTION "public"."NewProc"(length int4) OWNER TO "postgres";
用于创建随机电话,后边会用到,名字为random_phone,
2.插入表sql语句
insert into table_name(column1,column2,,)
values(value1,value2,,,);
上述语句用于一次插入一条记录
3.当一次插入多条记录时,使用如下语句:
insert into table_name(column1,column2,....)
select value1,value2,..
[from ...]
[where ...]
方括号中都可以缺省
4.
更新表中数据
update table_name set column=value
WHERE id in(子查询)
5.'||'在sql语句中起接字符串的作用
6.alter 表
在表中增加新字段,alter table table_name add column column_name character;
7.在postgresql shell 中查看所有的表: \d
查看某一个具体的表: \d table_name;
8.在现有的表中增加主键
alter table table_name add primary ket(column_name)
9.删除主键
alter table table_name drop constraint primarykeyname
primarykeyname是系统自动生成的名字,不是用户自己定义的名字,这一点需要主要
10.增加外键
alter table table_name1 add foreign key(column_name) references table_name2(column_name) on update cascade on delete cascade;
在table_name1中增加外键,那么这个外键应该是保存在table_name1中,删除的时候也只能删除这个表中的外键,不能乱删。
on update cascade 更新一起更新
on update restrict 更新不允许一起更新
on delete cascade 删除一起删除
on delete restrict 删除不允许一起删除
11.增加唯一值约束
alter table table_name add constraint unique_name unique(column);
注意:unique_name 在同个数据库中名字不能重复x
11.修改字段名字
alter table table_name rename column old_column to new_column;
12.修改字段的类型
alter table table_name alter column column_name type type_name;
13.删除外键
alter table table_name1 drop constraint foreign_key_name;
外键需要知道谁参照谁,不能乱删除;参照的表中也存放了该外键的定义。
14.强制修改类型,使用using
alter table table_name alter column_name type character using column_name::character;
15.增加约束
alter table table_name alter column column_name character check(column_name>10)
16.增加默认值
alter table table_name alter column column_name set default 10;
删除默认值 alter table table_name alter column column_name drop default;