MySQL---视图索引

表定义:

学生表:Student (Sno, Sname, Ssex , Sage, Sdept)

学号,姓名,性别,年龄,所在系 Sno为主键

课程表:Course (Cno, Cname,)

课程号,课程名 Cno为主键

学生选课表:SC (Sno, Cno, Score)

学号,课程号,成绩 Sno,Cno为主键

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

创建Student表

mysql> create table Student(

-> Sno int primary key,

-> Sname varchar(20) unique,

-> Ssex enum('男','女'),

-> Sage int,

-> Sdept varchar(30) default '计算机'

-> );

Query OK, 0 rows affected (0.01 sec)

#注意:在MySQL中,你可以使用枚举类型(ENUM)来限制字段的值只能是特定的选项。

Student表插入数据

mysql> insert into Student values(1,'张三','男',20,'计算机');

mysql> insert intoStudent values(2,'李四','男',23,'英语'); mysql> insert into Student values(3,'王五','女',22,'数学'); mysql> insert into Student values(4,'小明','女',18,'数学');

mysql> insert into Student values(5,'哈利姆','男',19,'计算机');

#查看表结构

mysql> desc Student;

#查看Student表数据

mysql> select * from Student;

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

#在MySQL中,alter table 语句可以用于修改表的结构,包括添加、删除或修改列,以及重命名表。其中, modify关键字可以用于修改现有列的定义。

mysql> alter table Student modify Sage smallint;

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

#创建学生选课表SC

mysql> create table SC(

-> Sno int,

-> Cno int,

-> Score int,

-> primary key (Sno,Cno)

-> );

Query OK, 0 rows affected (0.01 sec)

#学生选课表SC中插入数据

mysql> insert into SC values(1,1,90);

mysql> insert into SC values(2,2,80);

mysql> insert into SC values(3,3,85);

mysql> insert into SC values(4,3,95);

mysql> insert into SC values(5,1,87);

#查询学生选课表SC中的内容

mysql> select * from SC;

#在MySQL中,可以使用 create index 语句来创建索引。在默认情况下,MySQL会对索引进行升序排序。

#创建索引的用法:create index on index_name on table_name ( column_list );

#在这个格式中,index_name是我们想要创建的索引的名称,table_name 是我们想要在其上创建索引的表的名称,column_list是我们想要索引的列的列表。
mysql> create index SC_INDEX on SC(Sno,Cno);

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

#创建课程表Course

mysql> create table Course(

-> Cno int primary key,

-> Cname varchar(30)

-> );

Query OK, 0 rows affected (0.01 sec)

#课程表Course中插入数据

mysql> insert into Course values(01,'计算机');

mysql> insert into Course values(02,'英语'); mysql> insert into Course values(03,'数学');

#查询课程表的数据

mysql> select * from Course;

#在MySQL中,可以使用create view...as 语句来创建视图。视图是一种虚拟表,基于SQL语句的结果集。视图包含行和列,就像真实的表一样。视图中的字段来自数据库中的一个或多个真实表。
mysql> create view v_Stu_SC_C as (select Sname 姓名,Ssex 性别,Cname 课程号,Score 成绩 from Student Stu inner join SC on Stu.Sno=SC.Sno inner join Course C on SC.Cno=C.Cno);

SQL语句分析:涉及三张表的连接,因为选课表SC中的Sno与学生表Sno数据一致,SC表中的Cno与课程表Cno数据一致,所以选课表SC表当作中间参数,连接另外两张表

mysql> select Sname 姓名,Ssex 性别,Cname 课程号,Score 成绩 from Student Stu inner join SC on Stu.Sno=SC.Sno inner join Course C on SC.Cno=C.Cno;

#描述视图表v_Stu_SC_C的结构

mysql> desc v_Stu_SC_C;

#查询视图表v_Stu_SC_C中的内容

mysql> select * from v_Stu_SC_C;

相关推荐
步步为营DotNet35 分钟前
5-2EFCore性能优化
数据库·性能优化·.net
2501_920047031 小时前
Redis-集群
数据库·redis·bootstrap
半夏陌离2 小时前
SQL 拓展指南:不同数据库差异对比(MySQL/Oracle/SQL Server 基础区别)
大数据·数据库·sql·mysql·oracle·数据库架构
旋转的油纸伞2 小时前
SQL表一共有几种写入方式
数据库·sql
半夏陌离2 小时前
SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
java·前端·数据库
isyoungboy2 小时前
SQL高效处理海量GPS轨迹数据:人员gps轨迹数据抽稀实战指南
数据库·sql
敬业小码哥3 小时前
记一次:mysql的json及json数组使用组合使用
数据库·mysql·json
练小杰3 小时前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库
陈陈爱java4 小时前
Spring八股文
开发语言·javascript·数据库
拾忆,想起5 小时前
Redis复制延迟全解析:从毫秒到秒级的优化实战指南
java·开发语言·数据库·redis·后端·缓存·性能优化