【openGauss笔记】SQL语法-9 创建索引

文章目录

CREATE TABLE warehouse (
	w_id SMALLINT,
	w_name VARCHAR(10),
	w_street_1 VARCHAR(20),
	w_street_2 VARCHAR(20),
	w_city VARCHAR(20),
	w_state CHAR(2),
	w_zip CHAR(9),
	w_tax DECIMAL(4,2),
	w_ytd DECIMAL(12,2)
);

9. 创建索引

常见的索引有B树索引、哈希(Hash)索引、位图索引等。

创建索引使用的是CREATE INDEX语句,它需要制定索引的名称以及要创建索引的基本表和基本表上的候选列。

CREATE INDEX <索引名> ON <基本表名> (<列名1>, <列名2>, ...);

例2-41:warehouse基本表创建一个基于w_id列的索引,默认是B树索引。具体语句如下:

CREATE INDEX warehouse_index ON warehouse (w_id); 

可以通过UNIQUE关键字来指定创建的索引是否具有唯一性。
例2-42:new_orders基本表创建一个基于全部列的索引。具体语句如下:

CREATE TABLE new_orders
(
	no_o_id INTEGER NOT NULL,
	no_d_id SMALLINT NOT NULL,
	no_w_id SMALLINT NOT NULL
);

CREATE UNIQUE INDEX new_orders_index ON new_orders(no_o_id, no_d_id, no_w_id);

UNIQUE关键字指定的唯一性和主键的唯一性有一些不同。主键中的所有列不能有NULL值,而UNIQUE关键字创建的唯一索引可以允许有NULL值,由于NULL值在SQL中代表的是不确定的值,无法做等值比较,所以UNIQUE索引的唯一性表现在可以具有NULL值,而且可以有多组NULL值。

例2-43: 即使new_orders基本表上有UNIQUE索引,也可以插入多组NULL值。具体语句如下:

CREATE UNIQUE INDEX new_orders_index ON new_orders(no_o_id, no_d_id, no_w_id);
INSERT INTO new_orders VALUES(NULL, NULL, NULL);
INSERT INTO new_orders VALUES(NULL, NULL, NULL);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhShy23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值