索引-视图小作业

本文描述了如何使用SQL语句创建和修改数据库表,包括定义学生表的结构,设置主键和唯一性约束,调整年龄字段的数据类型。此外,还展示了如何为SC表建立复合主键索引以及创建一个包含学生姓名、性别、课程名和成绩的视图。

题目

学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键

1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。
2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。

1

create TABLE Student(
sno int(10) unique PRIMARY KEY AUTO_INCREMENT,
sname varchar(20) UNIQUE not null,
ssec varchar(10)   check(ssec in ('男','女')),
sage int(10) not NULL,
sdept varchar(20) DEFAULT '计算机');

2

alter table Student MODIFY sage smallint(10); # SMALLINT类型默认为 6

3

create table SC(
sno int(10),
cno int(10), 
score int(10),
primary key (sno,cno),
foreign key(sno) references Student(sno),
foreign key(cno) references Course(cno));

create unique index SC_INDX on SC(sno asc,cno asc);

4

create table Course(
cno int(10) primary key,
cname varchar(16));

create view stu_info as select Student.sname,Student.ssec,Course.cno,SC.score 
from Student,SC,Course where Student.Sno=SC.sno and SC.cno=Course.cno;

select * from stu_info;
### 如何在 SQL Server 中创建视图 #### 使用 T-SQL 创建视图 为了创建视图,在 SQL Server 中可以使用 `CREATE VIEW` 语句。此命令允许定义基于一个或多个的选择查询的结果集作为虚拟存储其结构,但不保存实际的数据副本[^2]。 ```sql CREATE VIEW ViewName AS SELECT column1, column2, ... FROM table_name WHERE condition; ``` 例如,假设有一个名为 `Employees` 的,想要创建一个仅显示员工姓名和职位的视图: ```sql CREATE VIEW EmployeeNamesAndPositions AS SELECT FirstName, LastName, JobTitle FROM Employees; ``` 这会创建一个新视图 `EmployeeNamesAndPositions`,其中只包含来自原始格中指定字段的信息[^3]。 #### 使用 SQL Server Management Studio 图形界面创建视图 除了编写脚本外,还可以利用图形化工具来构建视图。打开 SQL Server Management Studio 后导航到数据库对象资源管理器内的 "Views" 文件夹右键点击并选择 “New View”。之后可以在弹出窗口内通过拖拽方式添加所需的以及设置过滤条件等完成视图的设计工作[^1]。 #### 增强功能:WITH CHECK OPTION 和 WITH ENCRYPTION 当希望确保对视图所做的任何修改都不会违反基础查询所施加的约束时,可以附加 `WITH CHECK OPTION` 子句;而如果需要保护视图定义免于被其他用户查看,则可以选择加上 `WITH ENCRYPTION` 参数[^4]。 #### 提升安全性和性能优化 创建带有 `INSTEAD OF` 触发器的视图能够实现更灵活的安全控制机制,因为这些触发器会在尝试执行特定类型的 DML 操作(如插入、更新)之前拦截请求,并按照自定义逻辑处理它们。另外值得注意的是,适当设计索引可以帮助提高涉及大量数据检索场景下的效率[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值