有没有办法在单个"CREATE TABLE AS"语句中设置PRIMARY KEY?
示例 - 我希望将以下内容写入1个语句而不是2:
CREATE TABLE "new_table_name" AS SELECT a.uniquekey, a.some_value + b.some_value FROM "table_a" AS a, "table_b" AS b WHERE a.uniquekey=b.uniquekey;
ALTER TABLE "new_table_name" ADD PRIMARY KEY (uniquekey);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点(假设有超过2个表,例如10)?
我遵循http://www.sqlite.org/foreignkeys.html上的SQLite文档中的说明,但是我添加外键的尝试失败了.这是我的创建语句:
CREATE TABLE
checklist (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
checklist_title TEXT,
description TEXT,
created_on INTEGER,
modified_on INTEGER
);
CREATE TABLE
item (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
FOREIGN KEY(checklist_id) REFERENCES checklist(_id),
item_text TEXT, item_hint TEXT,
item_order INTEGER,
created_on INTEGER,
modified_on INTEGER
);
Run Code Online (Sandbox Code Playgroud)
第一张表很好.错误发生在第二个语句中.我已经尝试将两个查询包装在一个事务中而没有.这是错误:
未知栏 "checklist_id" 外键的定义(代码1):在编译:CREATE TABLE项目(_id INTEGER PRIMARY KEY AUTOINCREMENT,外键(checklist_id)参考清单(_id),ITEM_TEXT TEXT,item_hint TEXT,item_order INTEGER,created_on INTEGER ,modified_on INTEGER)
我在CREATE TABLE语句中有以下行:
field1_id bigint DEFAULT nextval('table1_field1_id_seq'::regclass) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
regclass在上面表示什么?是否绝对需要添加::regclass?
注:我已经看到了PostgreSQL文档的链接,其讲述regclass,但不明白它.
有可能做一个
create table <mytable> as select <query statement>
运用
row format delimited fields terminated by '|';
Run Code Online (Sandbox Code Playgroud)
或做一个
create table <mytable> like <other_table> row format delimited fields terminated by '|';
语言手册似乎表明没有......但是我曾经在过去做过这件事.
我在psql中这样做了:
CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT, ip TEXT);
Run Code Online (Sandbox Code Playgroud)
我明白了
ERROR: syntax error at or near "user" LINE 1: ...BLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT,...
Run Code Online (Sandbox Code Playgroud)
我做:
CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, userd TEXT, ip TEXT);
Run Code Online (Sandbox Code Playgroud)
有用.
请注意userd而不是user.
表可以拥有的列名是否有一些限制?(postgresql v9.1.3)
create database语句是:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
Run Code Online (Sandbox Code Playgroud)
但我想知道如何在特定数据库中创建表?
因为我想删除一些表,有人建议如下,我做了:
postgres=# drop schema public cascade;
DROP SCHEMA
postgres=# create schema public;
CREATE SCHEMA
Run Code Online (Sandbox Code Playgroud)
然后我在创建新数据库时遇到问题,例如:
postgres=# create database test;
CREATE DATABASE
postgres=# \c test
You are now connected to database "test" as user "postgres".
test=# create table hi(id int primary key);
*ERROR: no schema has been selected to create in*
Run Code Online (Sandbox Code Playgroud)
你可以看到我收到了错误
错误:未选择任何架构来创建*
如何恢复公共架构?
我建议人们永远不要做"drop schema public cascade"; 如果我们不知道如何恢复.有人可以帮帮我吗?
谷歌搜索后,我找不到一种方法来创建一个新列表,其中DATETIME列的默认格式设置为' DD-MM-YYYY HH:MM:SS'
我看到了一个完成它的教程,phpmyadmin所以我怀疑我可以通过命令行使用mysql并在创建新表时实现相同的功能
CREATE TABLE ()
Run Code Online (Sandbox Code Playgroud)
先感谢您
可能重复:
使用Oracle进行SELECT INTO
我遇到SQL SELECT INTO了创建新表的声明,并将旧表记录转储到单个SQL语句中的新表中
SELECT * INTO NEW_TABLE FROM OLD_TABLE;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试上面的查询时,它会给出错误 ORA-00905: missing keyword
在ORACLE中可以这样做吗?
谢谢.
我试图在postgres中创建一个表,但它最终在错误的数据库中.
这是我的工作:在我的sql脚本中,我最初创建了一个用户和一个数据库,然后是一个表.代码将解释更多:
drop database if exists sinfonifry;
drop role if exists sinfonifry;
-- create the requested sinfonifry user
create user sinfonifry createdb createuser password 'some_password';
-- create a sinfonifry database
create database sinfonifry owner sinfonifry;
DROP TABLE if exists sinf01_host;
CREATE TABLE sinf01_host
(
host_id bigserial NOT NULL, -- The primary key
host_ip inet NOT NULL, -- The IP of the host
host_name character varying(255) NOT NULL, -- The name of the host
CONSTRAINT "PK_host" PRIMARY KEY (host_id )
) …Run Code Online (Sandbox Code Playgroud) create-table ×10
postgresql ×5
database ×2
mysql ×2
sql ×2
android ×1
command-line ×1
datetime ×1
format ×1
hive ×1
oracle ×1
primary-key ×1
select ×1
sql-drop ×1
sql-like ×1
sqlite ×1