创建一个名为VStu male的男生视图,内容包括学号、姓名、性别、出生日期、专业和年级。要求对视图添加记录时,只能添加男生。
时间: 2024-05-01 14:23:37 浏览: 9
可以使用以下 SQL 语句创建一个名为 VStu_male 的男生视图:
```sql
CREATE VIEW VStu_male AS
SELECT Sno, Sname, Ssex, Sbirthday, Smajor, Sgrade
FROM Student
WHERE Ssex = '男';
```
这个视图只会包含性别为男的学生信息,因此在向视图中添加记录时,只能添加男生。例如,下面的 SQL 语句可以向视图中添加一条男生记录:
```sql
INSERT INTO VStu_male(Sno, Sname, Ssex, Sbirthday, Smajor, Sgrade)
VALUES('20210001', '张三', '男', '2000-01-01', '计算机科学与技术', '大一');
```
如果尝试添加一个女生记录,就会提示错误信息,因为视图只包含男生信息:
```sql
INSERT INTO VStu_male(Sno, Sname, Ssex, Sbirthday, Smajor, Sgrade)
VALUES('20210002', '李四', '女', '2000-02-02', '软件工程', '大一');
-- 提示错误:Cannot insert the value NULL into column 'Sno', table 'test.dbo.VStu_male'; column does not allow nulls. INSERT fails.
```
相关问题
(6)创建一个电子商务系学生的选课情况视图,包括学号、姓名、课程名、平时成绩和卷面成绩。
可以使用以下 SQL 语句创建该视图:
```
CREATE VIEW ecommerce_student_course_view AS
SELECT s.student_id, s.student_name, c.course_name, sc.daily_score, sc.exam_score
FROM student AS s
JOIN student_course AS sc ON s.student_id = sc.student_id
JOIN course AS c ON sc.course_id = c.course_id
WHERE c.course_type = 'ecommerce';
```
假设我们有以下表:
**student**
| student_id | student_name | gender |
|------------|--------------|--------|
| 1 | Alice | Female |
| 2 | Bob | Male |
| 3 | Charlie | Male |
**course**
| course_id | course_name | course_type |
|-----------|-------------|-------------|
| 1 | Math | science |
| 2 | English | language |
| 3 | Ecommerce | ecommerce |
**student_course**
| student_id | course_id | daily_score | exam_score |
|------------|-----------|-------------|-------------|
| 1 | 1 | 80 | 90 |
| 1 | 2 | 85 | 92 |
| 1 | 3 | 87 | 95 |
| 2 | 1 | 70 | 80 |
| 2 | 3 | 88 | 92 |
| 3 | 2 | 75 | 85 |
| 3 | 3 | 90 | 96 |
该视图将返回以下结果:
| student_id | student_name | course_name | daily_score | exam_score |
|------------|--------------|--------------|-------------|-------------|
| 1 | Alice | Ecommerce | 87 | 95 |
| 2 | Bob | Ecommerce | 88 | 92 |
| 3 | Charlie | Ecommerce | NULL | NULL |
注意,这个视图只包含了课程类型为 “ecommerce” 的学生选课信息。如果需要查看其他类型的课程,需要修改 WHERE 子句中的条件。
建立一个名为student的类,该类有以下私有数据成员:学生姓名、学号、性别和年龄。
建立一个名为student的类,该类有以下私有数据成员:学生姓名、学号、性别和年龄。学生姓名和学号是字符串类型,性别是枚举类型(男或女),年龄是整数类型。除了私有数据成员,该类还包含有如下的公有成员函数:
1. student( ):无参构造函数,用于实例化一个student类对象,该对象的学生姓名、学号、性别和年龄都默认设为空或0。
2. student(string name, string id, int age, Gender gender):带参构造函数,用于实例化一个student类对象,该对象的学生姓名、学号、性别和年龄分别由传入的参数指定。
3. void setName(string name):设置学生姓名,参数为要设置的姓名。
4. string getName():获取学生姓名,返回学生姓名。
5. void setId(string id):设置学生学号,参数为要设置的学号。
6. string getId():获取学生学号,返回学号。
7. void setAge(int age):设置学生年龄,参数为要设置的年龄。
8. int getAge():获取学生年龄,返回年龄。
9. void setGender(Gender gender):设置学生性别,参数为要设置的性别。
10. Gender getGender():获取学生性别,返回性别。
以上的公有成员函数提供了对该类的私有数据成员的访问和设置的方法。
使用这个student类,我们可以方便地实例化一个学生对象,并可以设置和获取学生的姓名、学号、性别和年龄等信息。例如:
// 实例化一个学生对象
student stu1 = student("小明", "001", 18, Gender::male);
// 获取学生姓名
string name = stu1.getName();
// 设置学生年龄
stu1.setAge(19);
// 获取学生年龄
int age = stu1.getAge();
在应用程序中,我们可以通过访问student类对象的公有成员函数来获取或修改该对象的私有数据成员,从而实现对学生信息的管理。