数据库作业五:INDEX/INSERT/SELECT语句的使用

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');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值