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
相关推荐
泡泡以安2 小时前
【Android逆向工程】第3章:Java 字节码与 Smali 语法基础
android·java·安卓逆向
一笑的小酒馆8 小时前
Android launcher3实现简单的负一屏功能
android
xuyin12049 小时前
【Android】Flow基础知识和使用
android
李新_10 小时前
基于Markwon封装Markdown组件
android·aigc·markdown
梁萌11 小时前
MySQL数据库分库分表介绍
数据库·mysql·shardingsphere·分库分表
Non-existent98712 小时前
Flutter + FastAPI 30天速成计划自用并实践-第10天-组件化开发实践
android·flutter·fastapi
Cat God 00713 小时前
SQL使用及注意事项
数据库·sql·mysql
华仔啊14 小时前
如何避免MySQL死锁?资深DBA的9条黄金法则
后端·mysql
@老蝴14 小时前
MySQL数据库 - 约束和联合查询
android·数据库·mysql
程序猿202314 小时前
MySQL索引使用--最左前缀法则
数据库·mysql