以文本方式查看主题 - 搭建论坛 (http://bbs.diylsoft.com:8118/starforum/index.asp) -- 数据库交流 (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=6) ---- [求助]怎么用SQL语句获得并修改数据库结构? (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&id=26120) |
-- 作者:引力波 -- 发布时间:2009-9-1 15:26:24 -- [求助]怎么用SQL语句获得并修改数据库结构? 大家好! 我近期一直在规划一个项目,这个项目的数据库往往因为全国各地的情况不一样,而需要相应的动态修改数据库。这个修改过程最好是用户自己修改! 现在的问题是:一、怎么用SQL语句获得数据库结构?二、能否提供动态修改数据库结构的实例? 第一个问题如果解决了,第二个问题我想就好办了。我在网上查了,书里找了,没有好的答案,还要请公司和大家帮助,这个问题应该具有普遍意义,如果实现了,大家都可以受益! |
-- 作者:admin -- 发布时间:2009-9-1 21:00:02 -- 直接使用“ALTER TABLE”SQL语句名称ALTER TABLE — 更改表属性 ALTER TABLE table [ * ] ADD [ COLUMN ] column type ALTER TABLE table [ * ] ALTER [ COLUMN ] column { SET DEFAULT value | DROP DEFAULT } ALTER TABLE table [ * ] RENAME [ COLUMN ] column TO newcolumn ALTER TABLE table RENAME TO newtable 输入
输出
描述ALTER TABLE 变更一个现存表的定义.ADD COLUMN 形式用与 CREATE TABLE 一样的语法向表中增加一个新列/字段。ALTER COLUMN 形式允许你从列/字段中设置或者删除缺省(值)。注意缺省(值)只对新插入的行有效。RENAME 子句可以在不影响相关表中任何数据的情况下更改一个表或者列/字段的名称。因此,表或列/字段在此命令执行后仍将是相同尺寸和类型。 如果要改变表的属性,你必须是表的所有者. 注意COLUMN 关键字是多余的,可以省略. 如果“*” 跟在一个表名后面,表示该命令要对该表和所有继承级别低于该表的表进行操作;缺省时,该属性(更改)不会增加到任何子表或修改任何子表的相关名称。当增加或修改一个超级表(译注:继承级别高的表)的属性时总是应该这样的。否则,象下面这样的在继承级上进行的查询 SELECT NewColumn FROM SuperClass* 将不能工作,因为子表会比超级表少一个属性。 在目前的实现里,新列/字段的缺省(值)和约束子句会被忽略。你可以随后用 ALTER TABLE 的 SET DEFAULT 形式设置缺省(值)。(你还不得不用 UPDATE 把已存在行更新为缺省值。) 要修改表的结构,你必须是表的所有人。不允许更改系统表结构的任何部分。PostgreSQL 用户手册 里有关于继承的更多信息. 请参考 CREATE TABLE 部分获取更多有效参数的描述. 用法向表中增加一个 VARCHAR 列: ALTER TABLE distributors ADD COLUMN address VARCHAR(30); 对现存列改名: ALTER TABLE distributors RENAME COLUMN address TO city; 对现存表改名: ALTER TABLE distributors RENAME TO suppliers; 兼容性SQL92ADD COLUMN 形式是兼容的,除了上面说的缺省(值)和约束外。ALTER COLUMN 形式是完全兼容的。 SQL92 对 ALTER TABLE 声明了一些附加的Postgres目前还不支持的功能:
重命名列/字段和表名是 PostgreSQL 扩展。SQL92 没有提供这些。 |
-- 作者:引力波 -- 发布时间:2009-9-1 22:15:00 -- 非常好,谢谢ADMIN!我来学习一下。 ![]() |
-- 作者:引力波 -- 发布时间:2009-9-3 7:57:26 -- 再问:怎样能得到当前数据库某一字段的数据类型? |