数据库标准语言SQL(四)——索引的相关操作 + 插入数据

一.前言

建立索引的目的就是为了加快查询的速度。索引是关系数据库的内部实现技术,属于内模式的范畴。虽然讲,索引越多查询起来越快,但是还是要考虑索引一旦太多,势必会影响内存消耗。所以说还是要平衡一下。
然后介绍一点点插入的操作,因为接下来就是查询部分,总得有东西吧。

1.建立索引

(1)DBA和建表的人可以建立索引
(2)DBMS会自动建立PRIMARY KEY、UNIQUE 列的索引。
关于这两个列的问题,我们可以看看第三篇的内容,里面建表是就有几个这样的列。链接如下:
数据库标准语言SQL(三)——基本表的相关操作

2.维护索引

DBMS会自动完成索引的维护

3.使用索引

DBMS会自动选择是否使用索引来便利查询,以及使用哪一些索引。

二、索引操作的具体实现

1.建立索引

#在Student表的Sname列建立一个聚簇索引
create cluster index Stusanme on Student(Sanme);

执行以后是这样的

数据库索引字段排序设置 数据库索引语句_数据库


这个聚簇索引在建立前要先建立一个聚簇,好像这个部分暂时我还没有学到,以后学到会专门写一个,来补充的。才疏学浅,不好意思。

#这里在上一篇文章中,我们已经对于Student的Sno列建立了约束,
#自然而然就有了索引
create unique index Stusno on Student(Sno);

数据库索引字段排序设置 数据库索引语句_SYS_02


数据库索引字段排序设置 数据库索引语句_数据库_03


那就随便建几个然后在后面删了,没意见吧

create unique index Stusex on Student(Ssex);
create unique index Coucname on Course(Cname);

数据库索引字段排序设置 数据库索引语句_数据库索引字段排序设置_04

2.删除索引

我发现,之前书上的例子由于在建表时候已经对这些列增加了索引,所以我们试着先给他删了再说。

drop index SYS_C007575;
drop index SYS_C007577;
drop index SYS_C007579;

呃,就很奇妙

数据库索引字段排序设置 数据库索引语句_建表_05

#删上面的
drop index Stusex;
drop index Coucname;

3.更改索引名

好吧,之前那些已经建立,且无法消除的,我就给他改名,强行迎合,关键也是看这些系统名字不爽

alter index SYS_C007575 rename to Stusno;
alter index SYS_C007577 rename to Cno;
alter index SYS_C007579 rename to SCno;

比较好

数据库索引字段排序设置 数据库索引语句_SYS_06

三、插入操作

1.单行插入

一次插入一行

插入语句
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values('201215121','李莉','男',20,'CS');
查询语句
select *
from student;

数据库索引字段排序设置 数据库索引语句_建表_07

2.多行插入

#多行插入
insert all
into student(sno,sname,ssex,sage,sdept) values('20125122','刘星','女',19,'CS')
into student(sno,sname,ssex,sage,sdept) values('20125123','王浩然','女',18,'MA')
into student(sno,sname,ssex,sage,sdept) values('20125125','张立','男',19,'IS')
into student(sno,sname,ssex,sage,sdept) values('20125124','王强','男',22,'CS')
into student(sno,sname,ssex,sage,sdept) values('20125120','李爽','男',20,'CS')
select * from student;

数据库索引字段排序设置 数据库索引语句_建表_08


这里想说的是,如果后面没有那个select会提示缺少关键词,咱也不知道,而且,是

select * from dual;

我就是尝试不用dual行不行,结果可以。这可能是个坑,但是问题好像还没有暴露。
我查了一下,给大家推荐一篇大牛的文章,希望可以帮大家解决上面的问题