建立索引的目的是为了加快查询的速度,能快速定位到需要查询的内容。一个表上可以建立一个或多个索引。
1.建立索引
核心SQL语句:CREATE INDEX
一般格式:
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名> [<次序>] [, <列名> [<次序>]]...)
表名为要建立基本表的名字,索引可以建立在该表的一列或多列上,各列名之间用逗号隔开。每个列名后面还可以用次序指定索引值的排列顺序,可选ASC(升序)或DESC(降序),默认为升序。
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
CLUSTER表示要建立的索引是聚簇索引。
例:为学生-课程数据库中的Student、Course和SC三个表建立索引,其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。
create unique index Stusno on Student(Sno);
create unique index Coucno on Course(Cno);
create unique index SCno on SC(Sno asc,Cno desc);
图形界面下查看我们刚刚建立的索引:
容易发现,除了我们自己建立的,还有一些是本来就有的,应该是DBMS自带的,不要轻易改动。
使用SQL语句查看某张表和整个库下的索引:
-- 查询某张表的索引,如Student表
select * from sys.sysindexes
where id=object_id('Student');
-- 查询整个库的索引,如此时的stutest库
select * from sys.sysindexes
2.修改索引
一般修改是对已经建立的索引进行重命名。一般格式如下:
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
例:将SC表中的SCno索引名改为SCSno
错误代码:
alter index SCno rename to SCSno;
正确代码:
exec sp_rename 'SC.Scno','SCSno','index'
3.删除索引
drop index Student.Stusno -- 必须要指定表名和索引名,否则报错!!!
二、向表中插入数据
SQL的数据插入语句insert通常有两种形式,一种是插入一个元组,另一种是插入子查询结果,后者可以一次性插入多个元组,本篇只讲解插入元组形式。 ###### 1.首先建立一个新的数据库,并建立三张表:学生表Student、课程表Course、选课表SC
create database insertDB;
use insertDB;
create table Student(
Sno char(9) primary key, /* 列级完整性约束条件,Sno是主码*/
Sname char(20) unique, /* Sname取唯一值*/
Ssex char(2),
Sage smallint,
Sdept char(20)
);
create table Course(
Cno char(4) primary key,
Cname char(40),
Cpno char(4),
Ccredit smallint,
foreign key(Cpno) references Course(Cno)
);
create table SC(
Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
2.学生表插入数据: 表名+属性
要赋值的属性的顺序可以与表中的顺序不一致,但相同属性对应的数据类型要一致,且所赋值的内容要与要赋值的属性顺序一致,即自己写的要做到一一对应。
insert into Student(Sno,Sname,Ssex,Sdept,Sage)
values('201215128','陈东','男','IS',18);
3.课程表插入数据
insert into Course(Cno,Cname,Cpno,Ccredit)
values('1','数据库',NULL,4);
4.选课表插入数据
未指定的列自动赋为NULL值
insert into SC(Sno,Cno)
values('201215128','1');
5.不指定属性,只有表名插入
此时相当于指定了所有属性,且插入顺序要与建表时的顺序一致
insert into Student
values('02056','樊萌萌','女',20,'CS');
三、简单查询【1】
指定表中的若干列和全查询
1.查询全体学生的学号和姓名
select Sno,Sname
from Student;
2.查询全体学生的姓名、学号、所在系
select Sname,Sno,Sdept
from Student;
3.查询全部列
select * from Student;
-- 等价于下列语句
select Sno,Sname,Ssex,Sage,Sdept
from Student;
4.去重查找
例:查找Student表中的专业类别
直接查找会发现有相同的,因为不同的人可能会选择相同的专业
select Sdept from Student
所以实行去重查找,加入distinct关键字
select distinct Sdept from Student
下一篇将会总结查询中更为复杂和常用的子查询、分组查询、条件查询等~~
SQL Server——索引+基于单表的数据插入与简单查询【1】
- Author -
Fmm-PMO声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@