1.建立索引 CREATE INDEX
语法:
CREATE [UNIQUE][CLUSTER|NONCLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>] [,<列名>[<次序>]],...);
简单使用:
--按学号升序建立学生表的索引, UNIQUE表示唯一,Stusno是索引名,Student是表名,Sno是列名。顺序有:ASC升序,DESC降序。不写的话,默认是升序ASC
CREATE UNIQUE INDEX Stusno ON Student(Sno);
--按课程号升序建立课程表的索引
CREATE UNIQUE INDEX Coucno ON Course(Cno);
--按学号升序,课程号降序的顺序建立索引。学号升序,课程号降序的意思是:先按学号升序排序,如果出现学号相同的情况,则对学号相同的按照课程号降序的方式排序,这种情况也容易理解。
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
2.修改索引
语法:
EXEC sp_rename '表名.旧索引名','新索引名','index'
--EXEC是EXECUTE(执行)的缩写,表示执行一个存储过程。
例如:
--将索引名SCno更改为SCSno
EXEC sp_rename 'SCno','SCSno','index'
3.删除索引
语法:
DROP INDEX <表名.索引名>;
例如:
--先创建一个缩影
CREATE UNIQUE INDEX Stusname ON Student(Sname)
--删除索引
DROP INDEX Student.Stusname;
4.插入数据
语法:
INSERT INTO <表名>[<属性列1>,...]
VALUES(<常量1>,...)
例如:
INSERT INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215128','陈冬','男','IS',18);
到了这你一定注意到了插入语法中,属性列是在[]之中,在语法中[]中的内容往往是可以省略的,所以在这,属性列也可以省略;注意:如果才用省略的方式,values()中的值的顺序一定要与表中的属性的顺序一致。
例如:
INSERT INTO Student VALUES ('201215126','张三','男',18,'CS');
5.查询
语法:
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]...|(SELECT语句)[AS]<别名>
[WHERE<条件表达式>]
查询全体学生的学号和姓名
SELECT Sno,Sname
FROM Student;
查询全体学生的姓名、学号、所在系
SELECT Sname,Sno,Sdept
FROM Student;
查询全体学生的全部信息
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
--等价于
SELECT *
FROM Student;
Select语句后面不仅可以跟属性列,还可以是表达式
SELECT Sname,2020-Sage
FROM Student;
--'Year of Birth'纯用来显示,增强可读性
--LOWER(Sdept),LOWER是变成小写字母的函数.转成大写是Upper()函数
SELECT Sname,'Year of Birth',2020-Sage,LOWER(Sdept)
FROM Student;
为查询结果中的列起别名(主要针对用户,增强可读性)
--原列名 与别名之间以空格相隔 有三种起别名的方式,在此就不详细叙述(时间紧急)
SELECT
Sname NAME,
'Year of Birth' BIRTH,
2020-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student
DISTINCT|ALL的使用
SELECT Sno FROM SC;
--等价于
SELECT ALL Sno FROM SC;
--消除重复行
SELECT DISTINCT Sno FROM SC;
WHERE的使用
--查询Sdept为CS的学生的姓名
SELECT Sname FROM Student WHERE Sdept = 'CS'
--查询Sage小于20的学生的姓名
SELECT Sname FROM Student WHERE Sage<20;
BETWEEN…AND,NOT BETWEEN …AND的使用
--查询年龄在20与25之间的学生的姓名、专业和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 25
--查询年龄在不在20与25之间的学生的姓名、专业和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 25
IN,NOT IN使用
--查找专业为CS或MA的学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ('CS','MA')
--查找专业不是CS和MA的学生的姓名和性别
SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN('CS','MA');