数据库添加索引的作用(sql创建索引的步骤)

数据库添加索引的作用(sql创建索引的步骤)数据库SQL的基本操作1:建立表、修改表、删除表、建立索引、删除索引、数据增删改查1 建立表、修改表、删除表1.1 建立基本表1.1.1 学生表

学生表:Student (Sno, Sname, Ssex, Sdept)其中学号 Sno 主码

create table Student( Sno int primary key, Sname varchar(20), Ssex varchar(2), Sdept varchar(4));

结果:Table STUDENT 已创建。

1.1.2 课程表

课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号 Cno 主码;先行课为外码参照 Course 表中 Cno 字段。

create table Course( Cno int primary key, Cname varchar(20), Cpno varchar(4), Ccredit int, foreign key(Cpno) references Course(Cno));

结果:Table COURSE 已创建。

1.1.3 学生选课表

学生选课表:SC(Sno, Cno, Grade)其中学号 Sno、课程号 Cno 为主码;Sno 为外码参照 Student 表中 sno 字段;Cno 为外码参照 Course 表中 cno 字段。

create table SC( Sno int, Cno int, Grade int, primary key(Sno,Cno), foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno));

结果:Table SC 已创建。

1.2 修改基本表1.2.1 在 Student 表中加入属性

在 Student 表中加入属性 Sage(number 型)。

alter table Student add Sage number(6);

结果:Table STUDENT 已变更。

可以看出 Student 表中增加了一列为 Sage。

1.2.2 修改某个表的属性的数据类型alter table Student modify Sage varchar(5);

结果:Table STUDENT 已变更。

可见 Sage 的数据类型已经变为 varchar(n)型。

1.3 删除基本表1.3.1 删除基本表 Studentdrop table Student cascade constraints;

结果:Table STUDENT 已删除。

1.3.2 删除基本表 SCdrop table SC cascade constraints;

结果:Table SC 已删除。

表中仅有 Course 表,Student 表和 SC 表已经被删除。

2 建立索引、删除索引2.1 建立索引2.1.1 在 Student 表上建立关于 Sname 的唯一索引 stusnamcreate unique index stusnam on Student(Sname);

结果:Index STUSNAM 已创建。

2.1.2 在 SC 表上建立关于 Sno 升序、Cno 降序的唯一索引 i_sccreate unique index i_sc on SC(Sno ASC,Cno DESC);

结果:Index I_SC 已创建。

2.2 删除索引2.2.1 删除 Student 表上的索引 stusnamdrop index stusnam;

结果:Index STUSNAM 已删除。

2.2.2 删除 Course 表上的索引 i_scdrop index i_sc;

结果:Index I_SC 已删除。

3 数据增删改查3.1 增:插入数据3.1.1 向 Student 表中插入数据insert into student values (200215121,’力勇’,’男’,’CS’,20);insert into student values (200215122,’刘晨’,’女’,’CS’,19);insert into student values (200215123,’王敏’,’女’,’MA’,20);insert into student values (200215125,’张立’,’男’,’IS’,19);

结果:1 行已插入。1 行已插入。1 行已插入。1 行已插入。

3.1.2 向 Course 表中插入数据insert into Course values (1,’数据库’,’5′,4);insert into Course values (2,’数学’,null,2);insert into Course values (3,’信息系统’,’1′,4);insert into Course values (4,’操作系统’, ‘6’,3);insert into Course values (5,’数据结构’, ‘7’,4);insert into Course values (6,’数据处理’, null,2);insert into Course values (7,’PASCAL语言’,’6′,4);

结果:1 行已插入。1 行已插入。1 行已插入。1 行已插入。1 行已插入。1 行已插入。1 行已插入。

3.1.3 向 SC 表中插入数据insert into SC values (200215121,1,92);insert into SC values (200215121,2,85);insert into SC values (200215121,3,88);insert into SC values (200215122,4,90);insert into SC values (200215122,3,80);

3.2 改:修改数据3.2.1 修改 SC 表中学号为 200215121 的同学的成绩为 90update SC set Grade=90 where Sno=200215121;

结果:3 行已更新。

3.3 删:删除数据3.3.1 删除 SC 表中学号为 200215121 的学生数据delete from SC where Sno=200215121;

3 行已删除。

4 实战

工资等级表 (salgrade)一个公司的工资等级制,用来表示同一等级的工资下限及上限
NO 字段 类型 描述
1 Grade number 等级名称
2 Losal number 此等级的最低工资
3 hisal number 此等级的最高工资

4.1 建立基本表create table emp( empno number(4), ename varchar(10), job varchar(9), mgr number(4), hierdate date, sal number(7,2), comm number(7,2), deptno number(2));create table dept( deptno number(2) primary key, dname varchar(14), loc varchar(13));create table salgrade( Grade number, Losal number, hisal number);

结果:Table EMP 已创建。Table DEPT 已创建。Table SALGRADE 已创建。

4.2 修改基本表

为 emp 表增加新列 adress;修改 dept 表中的 dname 列的宽度,并加入默认值;

alter table emp add adress char(20);

结果:Table EMP 已变更。

alter table dept modify dname varchar(20);

结果:Table DEPT 已变更。

4.3 删除基本表

删除基本表 emp;删除基本表 salgrade

drop table emp cascade constraints;

结果:Table EMP 已删除。

drop table salgrade cascade constraints;

结果:Table SALGRADE 已删除。

可见,表 emp 和表 salgrade 已经被删除。

4.4 索引操作

建立索引:在 emp 表上建立关于 ename 的唯一索引 emp_sname;在 dept 表上建立关于 deptno 升序、dname 降序的唯一索引 e_de

create unique index emp_sname on emp(ename);

结果:Index EMP_SNAME 已创建。

create unique index e_de on dept(deptno ASC,dname DESC);

结果:Index E_DE 已创建。

删除索引:删除 emp 表上的索引 emp_sname;删除 dept 表上的索引 e_de

drop index emp_sname;

结果:Index EMP_SNAME 已删除。

drop index e_de;

结果:Index E_DE 已删除。

4.5 数据更新4.5.1 向 dept 表中插入数据;向 emp 表中插入数据;

插入数据:

insert into emp values (5,’叶良辰’,’程序员’,7,to_date(‘2017-11-1′,’YYYY-MM-DD’),12345.55,500.00,1);

结果:1 行已插入。

insert into dept values (1,’生活部’,’NEFU’);

结果:1 行已插入。

4.5.2 修改数据update dept set dname=’文学部’ where deptno=1;

结果:1 行已更新。

4.5.3 删除数据delete from dept where deptno=1;

结果:1 行已删除。

5 其他5.1 一个列上有外码约束如何实现

例如,建立表 SC 的外键约束 Sno

alter table SC add constraint fk_Sno foreign key (Sno) references S(Sno)go5.2 删除表时,表中某一列是另外一个表的外键,此表如何删除

答:级联删除
例如,删除 Student 表。

drop table Student cascade constraints;5.3 对表中某一列的数据类型进行修改时,要修改的列是否必须为空列

答:是。因为数据类型改变了。如果要修改的列不为空,则数据类型不能改变。

发表评论

登录后才能评论