mysql创建student表并使用视图查询的相关练习

MySQL数据库操作:创建表、修改字段及构建索引
本文演示了如何在Linux环境下的MySQL数据库中创建学生表、修改表结构、为表建立主键索引以及创建视图来查询学生信息。具体步骤包括创建学生表并设置唯一约束和默认值,将年龄字段改为smallint,为SC表建立基于学号和课程号的主键索引,以及创建一个显示学生姓名、性别、课程名和成绩的视图stu_info。

一、题目

学生表: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,查询全体学生的姓名,性别,课程名,成绩。

二、代码实现以及操作步骤

Steps:

1、进入Linux下的mysql

[root@localhost mysql]# mysql -uroot -p
Enter password: 

2、用sql语句创建表及查询

1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。

mysql> create database students;//创建students数据库,将student的表放入里面
mysql> use students  //连接students数据库

//创建students表
mysql> create table students( Sno int(50) not null primary key, Sname varchar(50) unique, Ssex varchar(10) check(Ssex in ('男','女')), Sage int(11), Sdept varchar(50) default'计算机系' )charset='utf8';

mysql> desc students; //查看新建的表

在这里插入图片描述

2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。

mysql> alter table students modify Sage smallint;

在这里插入图片描述

3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。

mysql> create table Course //创建course的课程表
    -> (
    -> Cno int(20) primary key not null,
    -> Cname varchar(50)
    -> );
    
    mysql> create table SC  //创建SC表 
    -> (
    -> Sno int(20) not null,
    -> Cno int(20) not null primary key,
    -> Score varchar(50)
    -> );
    
//为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
mysql> create unique index SC_INDEX on SC(Sno ASC,Cno ASC);

在这里插入图片描述
在这里插入图片描述

4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。

mysql> create view stu_info AS SELECT Sname,Ssex,Cname,Score from students,Course,SC where students.Sno=SC.Cno and SC.Cno=CCourse.Cno;

在这里插入图片描述

三、错误日志

1、在使用数据库创建表时出出现1064的问题,不能设置默认字段
在这里插入图片描述

原因: 应该编码格式问题(我猜的)

**解决办法:在表后面加个charset=‘utf8’;就可以了

charset='utf8';
<think>好的,用户需要寻找带有中文备注的MySQL视图练习资料,提供示例。首先,我需要确认用户的需求。他们可能正在学习MySQL视图,需要实际的例子来练习且希望这些例子有中文注释,这样更容易理解。 接下来,我应该回顾用户提供的引用内容,看看是否有相关的信息可以利用。引用[2]提到了视图的定义和作用,说明视图是基于基的虚拟,可以展示部分数据。这可以作为理论基础。用户可能需要结合理论和实际例子来练习。 用户提供的其他引用中有关于数据库操作、临时、变量赋值和查询示例。虽然这些不直接涉及视图,但可能在与视图相关查询中用到。例如,在创建视图时可能需要使用SELECT语句,或者在视图使用GROUP BY或ORDER BY时可能涉及临时(引用[3])。 接下来,我需要构建一个包含中文注释的视图示例。可能需要先创建示例,然后创建视图展示如何查询视图。同时,要确保注释是中文的,符合用户的需求。 根据引用[5]中的查询示例,用户可能需要视图来简化复杂的查询,比如统计学生人数或最高分。例如,可以创建一个视图来统计每个班级的学生人数,或者显示成绩信息,包括课程名和学生名,而不是学号和课程号。 还需要考虑视图的常见应用场景,如简化复杂查询、权限控制、数据抽象等。在示例中体现这些用途会更有帮助。例如,创建一个视图将学生和成绩连接起来,显示学生姓名、课程名和分数,这样用户就不需要每次都写复杂的JOIN语句。 另外,用户可能需要练习如何修改视图、查看视图结构以及删除视图。根据引用[1],可以使用SHOW CREATE TABLE查看创语句,这可能也适用于视图。但需要注意,查看视图结构可能需要使用SHOW CREATE VIEW。 最后,确保所有的SQL语句都正确,且注释清晰。例如,在创建视图使用COMMENT关键字添加备注,或者在创建时添加中文注释。同时,提供相关问题,帮助用户进一步练习,比如如何优化视图查询视图与临时的关系。 总结步骤: 1. 创建示例(学生、课程、成绩),添加中文注释。 2. 创建视图,展示连接后的信息,添加视图的注释。 3. 演示视图查询、修改和删除操作。 4. 提供相关问题,巩固知识点。</think>### MySQL视图练习示例(含中文注释) 根据视图的定义和实践[^2],以下是三个视图练习示例: --- **示例1:创建基础视图** ```sql -- 创建学生信息基(含中文注释) CREATE TABLE student ( stu_id INT PRIMARY KEY COMMENT '学号', stu_name VARCHAR(20) COMMENT '姓名', class_id INT COMMENT '班级编号' ) COMMENT='学生信息'; -- 创建视图:显示95031班学生(含备注) CREATE VIEW v_class_95031 AS SELECT stu_id, stu_name FROM student WHERE class_id = 95031 COMMENT '筛选95031班学生的视图'; -- 视图级别注释 -- 查询视图(用法与普通一致) SELECT * FROM v_class_95031; ``` --- **示例2:多关联视图** ```sql -- 创建成绩(含中文注释) CREATE TABLE score ( stu_id INT COMMENT '学号', course_id INT COMMENT '课程编号', grade INT COMMENT '分数' ) COMMENT='成绩'; -- 创建视图:显示学生姓名+课程+分数(含连接逻辑) CREATE VIEW v_stu_score_detail AS SELECT s.stu_name AS 姓名, c.course_name AS 课程, sc.grade AS 分数 FROM student s JOIN score sc ON s.stu_id = sc.stu_id JOIN course c ON sc.course_id = c.course_id COMMENT '关联三生成成绩明细视图'; -- 查询视图最高分(类似引用[5]的问题) SELECT 姓名, MAX(分数) FROM v_stu_score_detail; ``` --- **示例3:带聚合函数的视图** ```sql -- 创建视图:统计班级人数(含GROUP BY) CREATE VIEW v_class_count AS SELECT class_id AS 班级编号, COUNT(*) AS 学生人数 FROM student GROUP BY class_id COMMENT '统计各班人数的视图'; -- 查询结果会触发临时操作[^3] SELECT * FROM v_class_count WHERE 学生人数 > 30; ``` --- ### 关键操作命令 1. **查看视图备注** ```sql SHOW CREATE VIEW v_class_95031; -- 显示视图定义及注释 ``` 2. **修改视图** ```sql ALTER VIEW v_class_95031 AS SELECT stu_id, stu_name, class_id -- 新增班级编号字段 FROM student WHERE class_id = 95031; ``` 3. **删除视图** ```sql DROP VIEW IF EXISTS v_class_count; ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值