关于postgresql字段的信息
postgreSQL怎样创建一个序列号/自动递增的字段
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL CURRVAL=返回 sequence的当前值 NEXTVAL=增加sequence的值,然后返回 sequence 值 比如: emp_sequence.CURRVAL emp_sequence.NEXTVAL 可以使用sequence的地方: - 不包含子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 - NSERT语句的VALUES中 - UPDATE 的 SET中 可以看如下例子: INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL; 但是要注意的是: - 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白? - 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 2、Alter Sequence 你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create . Alter sequence 的例子 ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ; 影响Sequence的初始化参数: SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 可以很简单的Drop Sequence DROP SEQUENCE order_seq; 示例Sequence: CREATE SEQUENCE SCOTT.DMIFPOSTID START WITH 261 INCREMENT BY 1 NOMINVALUE NOMAXVALUE NOCYCLE CACHE 20 NOORDER 3、如何使用 第一种方法:一般来说需要新建一个触发器(TRIGGER),使得在插入数据之前先运行Sequence生成自增号。示例Trigger -- Create table create table TEST ( SEQ INTEGER not null, NAME VARCHAR2(20), PWD VARCHAR2(20) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); -- Create/Recreate primary, unique and foreign key constraints alter table TEST add constraint PK_TEST primary key (SEQ) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create or replace trigger TI_TEST before insert on test for each row declare -- local variables here begin SELECT SEQ_TEST.NEXTVAL INTO :NEW.SEQ FROM DUAL; end TI_TEST; 插入语句 insert into test values('aa','aa'); 第二种方法:可以在插入数据时直接调用。 insert into table(id,name) values(seq_name.nextval,'名字');
10年积累的成都网站制作、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有北票免费网站建设让你可以放心的选择与我们合作。
postgresql 查寻哪些表包含字段
1、通过命令行查询
\d 数据库 —— 得到所有表的名字
\d 表名 —— 得到表结构
2、通过SQL语句查询
"select * from pg_tables" —— 得到当前db中所有表的信息(这里pg_tables是系统视图)
"select tablename from pg_tables where schemaname='public'" —— 得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)
postgresql字段值唯一约束
postgresql 允许设置多个字段为值唯一的约束。
使用 pgAdmin 4 设置起来很方便。而且在 postgresql 6.5.1 是默认安装就具备的工具。
首先找到你要设置约束的表
鼠标右键选择属性
选择强制约束
点击 + 号 新增一个约束
输入内容,选择要设置的字段
最后点击 保存按钮
字段值唯一约束就建立成功了。
之后你就会发现,除非是空值,否则你设置的字段内是不会有重复值的。
怎样设置PostgreSQL中字段和表名对大小写敏感
由于 PostgreSQL 是大小写敏感的,并默认对SQL语句中的数据库对象名称转换为小写,因此如果你在创建数据库对象时指定了大小写混和的对象名称,那么在通过SQL语句访问 这些对象时,必须使用双引号(")将数据库对象括起来,以提示 PostgreSQL 不用帮你转换对象名为小写,否则将激发“xxxxx对象不存在”的异常,譬如您的数据库中有名为 TUser 的表,您在 PostgreSQL 自带的图形化查询工具中必须使用类似这样的查询语句才能正确执行:SELECT * FROM "TUser",当然它对 SQL 标准中的保留字和关键字是不区分大小写的,所以写成 select * From "TUser" 这样也是完全可以的。
另外,PostgreSQL 对数据也是大小写敏感的,这点与 SQLServer 不同(SQLServer 默认是不敏感的),譬如在 TUser 表中有字段 Name,其中有一行 Name 字段值为“Tony Tang”的记录,如果直接使用
SELECT * FROM "TUser" WHERE "Name" LIKE '%tony%';
是查询不到这条记录的,不过你可以这么写:
SELECT * FROM "TUser" WHERE UPPER("Name") LIKE '%TONY%';
呵呵,是不是觉得这样不太好看,而且担心性能会受影响?幸好 PostgreSQL 提供了关键字 ILIKE 来帮我们解决这个问题,这真是个非常有趣的关键字(I like),对于第一种写法只需要将 LIKE 替换成 ILIKE 就可以了。
最后,建议在编写 SQL 脚本的时候,使用单引号做字符串常量的标识,虽然在 MS SQLServer 中双引号和单引号均可作为字符串常量的标识符,但是在 PostgreSQL 中对此就有严格的功能区分(不能用双引号作为字符串常量的标识符),为了保险起见,建议对所有的数据库对象名均使用双引号(")将其显式约定,以保证大小 写的严格匹配。
如何修改Postgresql中空间字段的SRID
您好,很高兴为您解答。
首先,修改geometry_columns表中对应字段的SRID为新的坐标系ID;
其次,修改beijing_highway表的定义,将enforce_dims_the_geom的定义的(st_srid(the_geom) = (-1))删除(注:此处the_geom是空间字段);
然后更新数据内容 update table_name set the_geom = st_geomfromtext(ST_AsText(the_geom),4326)(注:此处4326为数据的坐标系ID);
最后,将enforce_dims_the_geom的定义(st_srid(the_geom) = (4326))加回去就可以变更SRID了。
如果是从一个坐标系向另外一个坐标系调整,就需要进行坐标系的变换了。这时候可能会意识到,字段是只能增加,也就是插入。
采用postgis函数将墨卡托投影变成4326并插入空间数据库
QuanGuo=# insert into test values(1,'hahaha',st_transform(st_geomfromtext('POINT
(10070507.650288 4282901.6281314)',900913),4326));
INSERT 0 1
QuanGuo=# select astext(location) from test;
astext
------------------------------------------
POINT(-104.987 39.739)
POINT(-104.955 39.739)
POINT(10 10)
POINT(10070507.650288 4282901.6281314)
POINT(90.4649094109628 35.8711162526031)
(5 rows)
QuanGuo=#
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
postgresql查出来的字段长度为什么比实际字段多了4
使用数据库postgresql的时候,有时会遇到字段长度扩展的情况,由于之前已经有数据了,所以只能修改字段长度,不能通过删除再增加的方式。
可以使用如下方式进行
通过上面的一句话就可以把你的表中相应的字段的长度修改为3000.
补充:PostgreSQL字符类型长度变更的性能
分享标题:关于postgresql字段的信息
文章分享:http://myzitong.com/article/dscihej.html