我对数据库的概念非常陌生,目前正在学习如何设计数据库。我有一张表,下面有几列...
这是在mysql中:
1. Names - text - unique but might change in future
2. Result - varchar - not unique
3. issues_id - int - not unique
4. comments - text - not unique
5. level - varchar - not unique
6. functionality - varchar - not unique
我不能选择上述任何列作为主键,因为它们将来可能会更改
我试图在OE.PRODUCT_INFORMATION表上创建一个约束,该表由Oracle11g R2提供。约束应该使PRODUCT_NAME惟一。
我试过以下几种说法:
ALTER TABLE PRODUCT_INFORMATION
ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (PRODUCT_NAME);
问题是,在OE.PRODUCT_INFORMATION中已经有产品名称,目前已经存在了两倍以上。执行上述代码会引发以下错误:
an alter table validating constraint failed because the table
我为Oracle数据库编写了一个脚本,我正在将它转换为在Server中工作,并且我有两个关于特定代码部分的问题。
在Oracle脚本中,我有以下代码:
CREATE UNIQUE INDEX "PK_PORTALROLES" ON "PORTAL_ROLE" ("ROLE_NAME");
ALTER TABLE "PORTAL_ROLE" ADD CONSTRAINT "PK_PORTALROLES"
PRIMARY KEY ("ROLE_NAME") USING INDEX EN
在SQLite中,给定一个表,比如
CREATE TABLE t (
id INTEGER PRIMARY KEY,
v STRING UNIQUE COLLATE NOCASE
)
在v上添加显式索引有什么用处吗
CREATE UNIQUE INDEX idx_t_v ON t (v COLLATE NOCASE);
我正在尝试创建下表
CREATE TABLE Ingredient.Ingredient
(
GUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL,
Name NVARCHAR(MAX) NOT NULL UNIQUE
)
但是我已经意识到,NVARCHAR UNIQUE列的最大大小是450 (至少在当前版本的Server中是这样)。为了不使用神奇的文字,我创建了一个用户定义的函数,它返回NVARCHAR UNIQUE列的当前最大大小。
CREATE FUNCTION [Max NVARCHAR Index Size]()
RETURNS INT
我有一张有唯一约束的桌子
create table if not exists watchlist(
_id integer primary key autoincrement,
country text not null,
name text not null,
unique (country, name) on conflict replace
);
因为我的查询大部分时间都会涉及WHERE子句中的country和name。为了加快查询速度,我想知道是否还需要创建
create index idx_country_name on watchlist(c
我正在为Postgres 12数据库编写一个幂等模式更改脚本。但是,我注意到,如果在ADD列语句中包含if NOT,那么即使该列已经存在,它也在为已经存在的唯一性约束添加重复索引。简单的例子:
-- set up base table
CREATE TABLE IF NOT EXISTS test_table
(id SERIAL PRIMARY KEY
);
-- statement intended to be idempotent
ALTER TABLE test_table
ADD COLUMN IF NOT EXISTS name varchar(50) UNIQUE;
运行此
对Postgres数据库的以下查询有时非常慢(4,000+ms):
EXPLAIN ANALYZE SELECT "sms".* FROM "sms" WHERE "sms"."From" = 'NUMBER1' AND "sms"."To" = 'NUMBER2' AND "sms"."SmsMessageSid" = 'UNIQUE_ID' ORDER BY "sms"."id" AS
我有一个主产品表,如下所示:
CREATE TABLE dbo.[products](
[id] INT NOT NULL IDENTITY(1, 1),
[product_code] VARCHAR(100) NOT NULL UNIQUE,
[price] FLOAT NOT NULL,
[brand] VARCHAR(100) NOT NULL,
[colour] VARCHAR(100) NOT NULL
);
因此,如果创建此表,将在id列上创建clustered index,在product_code列上创建non-clustered ind
在我的一个PostgreSQL表上,我有一组两个字段,这两个字段在表中被定义为唯一的,但在选择数据时也将两者一起使用。鉴于此,我是只需要定义一个唯一索引,还是应该在唯一索引之外指定一个索引?
这?
CREATE UNIQUE INDEX mytable_col1_col2_idx ON mytable (col1, col2);
或者这个?
CREATE UNIQUE INDEX mytable_col1_col2_uidx ON mytable (col1, col2);
CREATE INDEX mytable_col1_col2_idx ON mytable (col1, col2);
可以在SQL Server create TABLE语句中创建主键或唯一索引。是否可以在create TABLE语句中创建非唯一索引?
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
如何将主聚集索引更改为非聚集索引。(作为一个“辅助”表,我希望对"header“表的外键列使用clustured索引。)
这对我不起作用(错误似乎是合理的:)
DROP INDEX ClientUsers.PK_ClientUsers
CREATE UNIQUE CLUSTERED INDEX IDX_ClientUsers_Id ON ClientUsers(Id)
Msg 3723, Level 16, State 4, Line 7
An explicit DROP INDEX is not allowed on index 'ClientUsers.PK_Client
我希望创建一个表bar,该表具有由命名索引支持的命名外键约束。我想在create语句中使用内联定义来实现这一点。在查看时,看起来甲骨文应该支持内联执行此操作。
在执行下列语句时..。
create table foo (
id number not null primary key
);
create table bar (
id number not null primary key,
nick varchar2(16) not null constraint foo_nick_ck unique using index,
foo_id numb
我正面临一个令人困惑的问题。如果创建如下所示的表,将会出现错误:
CREATE TABLE t
(
a NVARCHAR(100) SPARSE
NULL UNIQUE
)
Msg 1919, Level 16, State 2, Line 1
Column 'a' in table 't' is of a type that is invalid for use as a key column in an index.
Msg 1750, Level 16, State 0, Line 1
Could not create
我对DB2非常陌生,我想通过两个日期列的索引来支持我的查询:
WHERE (t0.start_date <= ? AND (t0.till_date > ? OR t0.till_date IS
NULL))
是否有最佳方法放置索引,还是只对till_date进行索引比较好?
第二个问题是,我是否必须手动将索引放在外键列上?
向你问好,先生
我有一个不需要特定字段作为主键的表。我可以添加一个自动增量ID字段,但它根本不会在数据库查询中使用。
我可以使一个唯一的键也成为主键吗?
唯一键由两个配对在一起的字段组成:
a VARCHAR(64) NOT NULL,
b VARCHAR(64) NOT NULL,
UNIQUE KEY uk_ab(a,b)