MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能,而视图用于提供一个逻辑上的表结构,方便用户查询和操作数据。
索引是一种数据结构,可以加速对数据库表中的数据进行查询的速度。通过创建索引,可以在查询时快速定位到需要的数据,而不是遍历整个表。索引可以根据一个或多个列的值来创建,常见的索引类型包括B-tree索引、哈希索引和全文索引等。
视图是一个虚拟的表,是从一个或多个表中查询出来的结果集。视图可以简化复杂的查询操作,将查询结果以表的形式呈现给用户,用户可以像查询表一样对视图进行操作。视图可以包含计算列、过滤条件等,方便用户进行数据的逻辑操作和数据的复用。
命令提示符启动MySQL
学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键
1、用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。
CREATE TABLE Student (
Sno INT PRIMARY KEY,
Sname VARCHAR(50) NOT NULL UNIQUE,
Ssex ENUM('男', '女') NOT NULL,
Sage SMALLINT,
Sdept VARCHAR(50) DEFAULT '计算机'
);
2、修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
ALTER TABLE Student MODIFY COLUMN Sage SMALLINT;
3、为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
创建SC表,然后为其添加主键索引。
-- 创建SC表
CREATE TABLE SC (
Sno INT,
Cno INT,
Score INT,
PRIMARY KEY (Sno, Cno)
);
建立按学号(sno)和课程号(cno)
添加主键索引
CREATE INDEX SC_INDEX ON SC (Sno, Cno);
4、创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
创建Course表
-- 创建Course表
CREATE TABLE Course (
Cno INT PRIMARY KEY,
Cname VARCHAR(50)
);
为SC表添加外键约束
ALTER TABLE SC ADD CONSTRAINT FK_Course_Cno FOREIGN KEY (Cno) REFERENCES Course(Cno);
创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
CREATE VIEW stu_info AS
SELECT S.Sname, S.Ssex, C.Cname
FROM Student S
JOIN SC ON S.Sno = SC.Sno
JOIN Course C ON SC.Cno = C.Cno;