postgresql的ALTER常用操作,postgresqlalter
postgresql版本:psql (9.3.4)
1、增加一列ALTER TABLE table_name ADD column_name datatype; 2、删除一列 ALTER TABLE table_name DROP column_name; 3、更改列的数据类型 ALTER TABLE table_name ALTER column_name TYPE datatype; 4、表的重命名 ALTER TABLE table_name RENAME TO new_name; 5、更改列的名字 ALTER TABLE table_name RENAME column_name to new_column_name; 6、字段的not null设置 ALTER TABLE table_name ALTER column_name {SET|DROP} NOT NULL; 7、给列添加default ALTER TABLE table_name ALTER column_name SET DEFAULT expression;
下面演示下:一 方法一:通过 pg_user 视图查询--1.1 设置用户的 log_statement 参数 postgres=# alter role francs set log_statement="all";ALTER ROLE --1.2 验证 postgres=# select * From pg_user where usename='francs';-[ RECORD 1 ]--------------------usename | francsusesysid | 24920usecreatedb | fusesuper | fusecatupd | fuserepl | fpasswd | ********valuntil | useconfig | {log_statement=all}--1.3 设置用户的 maintenance_work_mem 参数 postgres=# alter role francs set maintenance_work_mem="1GB";ALTER ROLE--1.4 再次验证 postgres=# select * From pg_user where usename='francs';-[ RECORD 1 ]---------------------------------------------usename | francsusesysid | 24920usecreatedb | fusesuper | fusecatupd | fuserepl | fpasswd | ********valuntil | useconfig | {log_statement=all,maintenance_work_mem=1GB} 备注:上面是通过 pg_user.useconfig 查询。二 方法二: 通过 pg_db_role_setting catalog 基表查询--2.1 pg_db_role_setting 表结构 Table "pg_catalog.pg_db_role_setting" Column | Type | Modifiers -------------+--------+----------- setdatabase | oid | not null setrole | oid | not null setconfig | text[] | Indexes: "pg_db_role_setting_databaseid_rol_index" UNIQUE, btree (setdatabase, setrole), tablespace "pg_global"备注:可见 pg_db_role_setting 会针对数据库,用户级别进行记录。--2.2 验证 postgres=# select oid,rolname from pg_authid where rolname='francs'; oid | rolname -------+--------- 24920 | francs(1 row)postgres=# select * From pg_db_role_setting where setrole=24920; setdatabase | setrole | setconfig -----------......余下全文>>
alter table 表名 alter column 字段名 varchar(50) not null;
或者
alter table 表名 modify column 字段名 varchar(50) not null;
字段类型自定义 ,可以是varchar、int等类型,根据不同的数据库版本,修改指令可能是alter column或modify column