我需要在数据库中创建一个新表,我通过JPA EntityManager访问.JPA NativeQueries是否支持"选择"或"更新"以外的查询?或者是否有另一种在JPA上下文中执行复杂SQL查询的最先进方法?
如果博客有"类别"表,如下所示:
CREATE TABLE categories
(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
parent_id INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
description TEXT,
count INTEGER NOT NULL DEFAULT 0
);
Run Code Online (Sandbox Code Playgroud)
如果parent_id字段旨在引用类别表的"id"字段,那么我如何添加一个约束来确保插入parent_id的值引用id字段?
我只想确保只存在的类别id值可以用作新插入类别的父级.
在为预先存在的数据库编写SQLAlchemy模型时,我必须提供多少关于表的信息?考虑这个表是MySQL数据库的一部分:
CREATE TABLE entities (
id INTEGER NOT NULL AUTO_INCREMENT,
dn VARCHAR(100) NOT NULL UNIQUE,
PRIMARY KEY (id)
) Engine=InnoDB, COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
根据我的测试,这足以使用它:
class Entity(Base):
__tablename__ = 'entities'
id = Column('id', Integer, primary_key=True)
dn = Column('dn', String(100))
Run Code Online (Sandbox Code Playgroud)
但当然它缺少UNIQUE,AUTO_INCREMENT,Engine和COLLATE信息.SQLAlchemy是否关心这些?
当然我可以使用Reflection,但由于一致性原因,我宁愿不这样做.
我想在一个过程中创建一个表.我试图将创建查询放在一个字符串中,然后立即执行该字符串.例如:
create or replace procedure hr.temp is
var1 varchar2(4000);
begin
var1:='create table hr.temp(
id number)';
execute immediate var1;
end temp;
Run Code Online (Sandbox Code Playgroud)
但是当我执行这个程序时,我得到错误:
ORA-00911: invalid character
ORA-06512: at "SYS.TEMP", line 6
.
.
.
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做到这一点吗?
我有一个我每周"发布"的数据库,这意味着我发布了一个人们可以开始的备份,并且我发布了一个他们可以用来从上周升级的更新脚本(这样他们就可以尽可能地保留他们当前的数据).当然,此脚本包含大量的DDL的- CREATE TABLE,ALTER TABLE等等.它的基本结构是这样的:
/*
HOW TO USE THIS SCRIPT
1. Run it against your existing DB
2. Check whether there were any errors
3. If there were, issue a rollback by highlighting this:
ROLLBACK
and executing it
4. If there weren't, issue a commit by highlighting this:
COMMIT
and executing it
5. !!! Not doing either of these will leave a transaction open, which will
probably cause all further queries to time out till you do …Run Code Online (Sandbox Code Playgroud) 我有现有的表有10年的数据(我已经采取转储).
我想在表中的一个日期键列上对现有表进行Range分区.
我看到的大多数示例都是CREATE TABLE..PARTITION BY RANGE...为了添加新分区.但我的桌子是现有的桌子.
我想我需要一些ALTER陈述.
ALTER TABLE TABLE_NAME
PARTITION BY RANGE(CREATED_DATE)
PARTITION JAN16 VALUES LESS THAN (01-02-2016),
PARTITION FEB16 VALUES LESS THAN (01-03-2016) AND GREATER THAN(31-01-2016),//OR?
PARTITION MAR16 VALUES BETWEEN (01-03-2016) AND (31-03-2016), //OR?
Run Code Online (Sandbox Code Playgroud)
两个问题..
我是否需要Alter语句来添加分区机制或需要使用create语句?
保持每个分区只有一个MONTH数据的正确语法是什么.
使用带有UTC时区的字段创建表的语法是什么?
我有这些领域:
(id INT PRIMARY KEY NOT NULL,
bravo timestamp without time zone DEFAULT now(),
charlie timestamp with time zone UTC DEFAULT now()
)
Run Code Online (Sandbox Code Playgroud)
这个名字的最后一个字段charlie不是出于某种原因.我希望它很简单,因为它只是告诉它有一个时区,然后在那里推动UTC,并now()在输入过程中弄清楚db .
以同样的方式SHOW CREATE TABLE tblname; 带回以前执行的内容,无论如何都要查看ALTER TABLE查询的SQL?请帮忙?
是否有可能在mysql中创建一个包含两列值的列的表?这样的事情:
create table test1 (
number1 int,
number2 int,
total int DEFAULT (number1+number2)
);
Run Code Online (Sandbox Code Playgroud)
或者像这样:
CREATE TABLE `Result` (
`aCount` INT DEFAULT 0,
`bCount` INT DEFAULT 0,
`cCount` = `aCount` + `bCount`
);
Run Code Online (Sandbox Code Playgroud) 在Athena,我想创建基于查询结果的表,但每个查询结果包括2 files,".csv"和".csv.metadata"。所有这些文件都在我的表中,而元数据构成了该表looks messy。ignore这些".csv.metadata"文件有什么办法,只显示".csv"文件的数据吗?
任何建议或代码片段将不胜感激。
谢谢。
create-table ×10
mysql ×4
sql ×3
alter-table ×2
oracle ×2
hibernate ×1
hierarchical ×1
jpa ×1
partition ×1
postgresql ×1
reflection ×1
rollback ×1
sql-server ×1
sqlalchemy ×1
timestamp ×1
transactions ×1