MySQL视图索引操作

创建学生表;

sql 复制代码
mysql> create table Student(
    -> Sno int primary key auto_increment,
    -> Sname varchar(30) not null unique,
    -> Ssex char(2) check (Ssex='男' or Ssex='女') not null,
    -> Sage int not null,
    -> Sdept varchar(10) default '计算机' not null
    -> );
Query OK, 0 rows affected (0.04 sec)

创建课程表;

sql 复制代码
mysql> create table Course(
    -> Cno int primary key not null,
    -> Cname varchar(20) not null
    -> );
Query OK, 0 rows affected (0.03 sec)

创建选课表;

sql 复制代码
mysql> create table SC(
    -> Sno int not null,
    -> Cno varchar(10) primary key not null,
    -> Score int not null
    -> );
Query OK, 0 rows affected (0.02 sec)

1、修改 Student 表中年龄(Sage)字段属性

sql 复制代码
mysql> alter table Student modify column Sage smallint;
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

2、为 Course 表中 Cno 课程号字段设置索引并查看索引

sql 复制代码
mysql> create index course_cno_index on Course(Cno);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from Course;
+--------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table  | Non_unique | Key_name         | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+--------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| course |          0 | PRIMARY          |            1 | Cno         | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| course |          1 | course_cno_index |            1 | Cno         | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+--------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
2 rows in set (0.01 sec)

3、为 SC 表建立按学号(Sno)和课程号(Cno)组合的升序的主键索引,需要先删除可能存在的主键索引。

sql 复制代码
mysql> alter table SC drop primary key;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table SC add primary key (Sno,Cno);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

4、创建视图 stu_info

sql 复制代码
mysql> create view stu_info as
    -> select S.Sname, S.Ssex, C.Cname, SC.Score
    -> from Student S
    -> join SC on S.Sno = SC.Sno
    -> join Course C on SC.Cno = C.Cno;
Query OK, 0 rows affected (0.01 sec)

5、删除所有索引:

对于 Student 表,由于没有显式创建索引,无需删除索引操作。

对于 Course 表:

sql 复制代码
mysql> drop index course_cno_index on Course;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

对于 SC 表,通过alter table添加的主键索引:

sql 复制代码
mysql> alter table SC drop primary key;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
相关推荐
cui_ruicheng2 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
DIY源码阁5 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
黄林晴6 小时前
Google Play 发版链路全面重构:合规前置、审核自动化、生态全面收紧
android·google
流星白龙8 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
通玄8 小时前
Jetpack Compose 入门系列(四):动画基本使用
android
杉氧8 小时前
Kotlin 协程深度解析②:生存指南——掌握结构化并发的生命线
android·kotlin
故渊at8 小时前
第四板块:Android 输入系统与触控事件 | 第十五篇:InputReader 与 InputDispatcher 的触控流水线
android·anr·输入系统·inputdispatcher·inputreader·触控事件·inputevent
方白羽8 小时前
Vibe Coding 四个核心阶段
android·前端·app
这个DBA有点耶9 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
用户3074596982079 小时前
EXPLAIN 执行计划 完全精通指南
mysql