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
相关推荐
哈里谢顿4 小时前
记录一次sql优化记录
mysql
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Chasing Aurora4 小时前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
诸神黄昏EX5 小时前
Android Build系列专题【篇六:VINTF机制】
android
浪客川6 小时前
安卓日志工具类
android
萧曵 丶6 小时前
Next-Key Lock、记录锁、间隙锁浅谈
数据库·sql·mysql·mvcc·可重复读·幻读
csj506 小时前
安卓基础之《(14)—数据存储(4)应用组件Application》
android
李坤林7 小时前
Android Binder 详解(6) Binder 客户端的创建
android·binder
北京自在科技7 小时前
苹果iOS 26.3实现跨安卓数据无缝迁移
android·ios·findmy
_道隐_7 小时前
Android里面的layer、DisplayList和hardwarebuffer之间是什么关系
android