sqlserver23.创建一个名为V_Stu_cj的学生成绩视图,内容包括学号、姓名、课程名和成绩,其中学号后两位用两个“*”代替,姓名的第2个字也用“*”代替。隐藏个人信息,即数据脱敏。
时间: 2024-06-08 08:12:28 浏览: 129
可以使用以下SQL语句创建V_Stu_cj视图:
```sql
CREATE VIEW V_Stu_cj
AS
SELECT SUBSTRING(s.ID, 1, LEN(s.ID) - 2) + '**' AS 学号,
LEFT(s.Name, 1) + '*' + SUBSTRING(s.Name, 3, LEN(s.Name)) AS 姓名,
c.CourseName AS 课程名,
CONVERT(VARCHAR(10), c.Score) AS 成绩
FROM Stu s
INNER JOIN Score c ON s.ID = c.ID
```
其中,`Stu`表为学生表,`Score`表为成绩表,`ID`、`Name`、`CourseName`和`Score`分别为这两个表中对应的字段名。
该视图中,使用`SUBSTRING`函数和`LEFT`函数对学号和姓名进行数据脱敏,使用`CONVERT`函数将成绩转换为字符串类型。
相关问题
SQLsever11.使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。
这里提供两种方法,一种是在原有视图上进行修改,另一种是创建一个新的视图。
方法一:在原有视图上进行修改
修改视图语句如下:
```sql
ALTER VIEW v_stu_g
AS
SELECT 学号, 姓名, 性别 FROM 学生表
```
方法二:创建一个新的视图
创建新视图语句如下:
```sql
CREATE VIEW v_stu_new AS
SELECT 学号, 姓名, 性别 FROM 学生表
```
使用新视图:
```sql
SELECT * FROM v_stu_new
```
基于 student_info 表、curriculum 表和 grade 表,建立一个名为 v_stu_g 的视图,视图包括所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g 查询学号为 0001 的学生的课程平均分
首先,我们需要连接三个表,然后选取学号、姓名、课程名称和分数四个字段,命名为 v_stu_g 视图:
```
CREATE VIEW v_stu_g AS
SELECT student_info.student_id, student_info.name, curriculum.course_name, grade.score
FROM student_info
JOIN grade ON student_info.student_id = grade.student_id
JOIN curriculum ON grade.course_id = curriculum.course_id;
```
接下来,我们可以使用下面的 SQL 查询语句来查询学号为 0001 的学生的课程平均分:
```
SELECT AVG(score)
FROM v_stu_g
WHERE student_id = '0001';
```
这条 SQL 查询语句会从 v_stu_g 视图中选取学号为 0001 的学生的所有分数,然后计算平均分。
阅读全文