发布网友 发布时间:2022-04-07 17:02
共3个回答
懂视网 时间:2022-04-07 21:23
table 表名 rename to 新表名2.更改字段名
alter table 表名 rename 字段名 to 新字段名
3,更改字段类型
如:ID 字段 原类型为 character varying(50) 新类型为integer
其中,ID中原有数据为1,2,3等数字
用如下语句更改
alter table dbo.titemtype alter column id type integer using to_number(id,‘9‘ ) ;
要增加一个字段,使用下面这样的命令:
ALTER TABLE products ADD COLUMN description text;
新增的字段对于表中已经存在的行而言最初将先填充所给出的缺省值(如果你没有声明 DEFAULT 子句,那么缺省是 NULL)。
你也可以同时在该字段上定义约束,使用通常的语法:
ALTER TABLE products ADD COLUMN description text CHECK (description <> ‘‘ ) ;
实际上,所有在 CREATE TABLE 里描述的可以应用于字段的选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则 ADD 将会失败。另外,你可以在正确填充了新字段的数值之后再增加约束(见下文)。
【提示】添加一个字段并填充缺省值将会导致更新表中的所有行(为了存储新字段的值),但如果没有指定缺省值,PostgreSQL 就可以避免物理更新。所以如果你将要在新字段中填充的值大多数都不等于缺省值,那么最好添加一个没有缺省值的字段,然后再使用 UPDATE 更新数据,最后使用下面的方法添加缺省值。
要删除一个字段,使用下面这样的命令:
ALTER TABLE products DROP COLUMN description;
不管字段里有啥数据,都会消失,和这个字段相关的约束也会被删除。不过,如果这个字段被另一个表的外键所引用,PostgreSQL 则不会隐含地删除该约束。你可以通过使用 CASCADE 指明删除任何依赖该字段的东西:
ALTER TABLE products DROP COLUMN description CASCADE;
参阅节5.11获取有关这些操作背后的机制的信息。
要增加一个约束,必须使用表约束语法。比如:
ALTER TABLE products ADD CHECK (name <> ‘‘ ) ;ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no) ;ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;
要增加一个不能写成表约束的非空约束,使用下面的语法:
ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;
这个约束将立即进行检查,所以表在添加约束之前必须符合约束条件。
要删除一个约束,你需要知道它的名字。如果你曾经给了它取了名字,那么事情就很简单。否则你就需要找出系统自动分配的名字。psql 的命令 d tablename可以这个帮忙;其它接口可能也提供了检查表的细节的方法。然后就是这条命令:
ALTER TABLE products DROP CONSTRAINT some_name;
如果你在处理一个生成的约束名,比如 $2 ,别忘了你需要给它添加双引号,让它成为一个有效的标识符。
和删除字段一样,如果你想删除被依赖的约束,你需要用 CASCADE 。一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。
除了非空约束外,所有约束类型都这么用。要删除非空约束,可以这样:
ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;
要记得非空约束没有名字。
要给一个字段设置缺省值,可以使用一个像下面这样的命令:
ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
请注意这么做不会影响任何表中现有的数据行,它只是为将来的 INSERT 命令改变缺省值。
要删除缺省值,可以用
ALTER TABLE products ALTER COLUMN price DROP DEFAULT;
这样实际上相当于把缺省设置为空。结果是,如果我们删除一个还没有定义的缺省值不算错误,因为缺省隐含就是 NULL 。
把一个字段转换成另外一种数据类型,使用下面的命令:
ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2) ;
只有在字段里现有的每个项都可以隐含的转换城新类型时才可能成功。如果需要更复杂的转换,你可以增加一个 USING 子句,它声明如何从旧值里计算新值。
PostgreSQL 将试图把字段的缺省值(如果存在)转换成新的类型,还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。在修改某字段类型之前,你最好删除那些约束?,然后再把合适的约束添加上去。
重命名一个字段:
ALTER TABLE products RENAME COLUMN product_no TO product_number;
重命名一个表:
ALTER TABLE products RENAME TO items;
PostgreSQL基本命令
标签:postgresql
热心网友 时间:2022-04-07 18:31
1、使用CREATE DATABASE
该命令将创建一个数据库PostgreSQL的shell提示符,但你应该有适当的权限来创建数据库。默认情况下,创建新的数据库将通过克隆标准系统数据库template1。
语法:
CREATE DATABASE语句的基本语法如下:
CREATE DATABASE dbname;其中dbname是要创建的数据库的名称。
例子:
下面是一个简单的例子,这将创建testdb 在PostgreSQL模式:
postgres=# CREATE DATABASE testdb;
postgres-#
2、使用createdb的命令
PostgreSQL命令行可执行createdb是是SQL命令CREATE DATABASE一个包装器。此命令和SQL命令CREATE DATABASE之间唯一的区别是,前者可以直接在命令行中运行,它允许的注释被添加到数据库中,全部在一个命令。
语法:
createdb语法如下所示:
createdb [option...] [dbname [description]]
参数
下表列出了参数及它们的描述。
参数名称 描述
dbname The name of a database to create.
description Specifies a comment to be associated with the newly created database.
options command-line arguments which createdb accepts.
选项
下表列出了命令行参数CREATEDB接收:
选项 描述
-D tablespace Specifies the default tablespace for the database.
-e Echo the commands that createdb generates and sends to the server.
-E encoding Specifies the character encoding scheme to be used in this database.
-l locale Specifies the locale to be used in this database.
-T template Specifies the template database from which to build this database.
--help Show help about dropdb command line arguments, and exit.
-h host Specifies the host name of the machine on which the server is running.
-p port Specifies the TCP port or the local Unix domain socket file extension on which the server is listening for connections.
-U username User name to connect as.
-w Never issue a password prompt.
-W Force createdb to prompt for a password before connecting to a database.
打开命令提示符,然后去是PostgreSQL安装所在的目录。进入到bin目录,执行下面的命令创建一个数据库。
createdb -h localhost -p 5432 -U postgress testdb
password ******
上面的命令会提示Postgres的默认的PostgreSQL管理用户的密码,以便提供密码和继续创建新的数据库。
一旦创建数据库时可以使用上述方法,可以检查它在列表中的数据库使用l即反斜线el命令如下:
postgres-# l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | C | C |
(4 rows)
postgres-#
热心网友 时间:2022-04-07 19:49
这好像是一个BUG,在新版本中解决了。