CREATE VIEW v_stu_c(`学号`,`姓名`,`课程编号`)
AS
SELECT grade.`学号`,`姓名`,`课程编号`
FROM grade,student_info
WHERE grade.`学号`='0003' AND
grade.`学号`=student_info.`学号`;
使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx。
CREATE UNIQUE INDEX cno_idx ON curriculum(`课程编号`);
使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。
CREATE INDEX grade_idx ON grade(`分数`);
基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图包括所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的课程平均分。
创建视图:
CREATE VIEW v_stu_g(`学号`,`姓名`,`课程名称`,`分数`)
AS
SELECT grade.`学号`,`姓名`,`课程名称`,`分数`
FROM student_info,curriculum,grade
WHERE curriculum.`课程编号`=grade.`课程编号`
AND grade.`学号`=student_info.`学号`;
查询视图:
SELECT `学号`, AVG(`分数`) AS '课程平均分'
FROM v_stu_g
WHERE `学号`='0001';
使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。
ALTER VIEW v_stu_g
AS
SELECT `学号`,`姓名`,`性别`
FROM student_info
WITH CHECK OPTION;
6.利用视图v_stu_g为student_info表添加一行数据:学号为0010、姓名为陈婷婷、性别为女。
INSERT INTO v_stu_g
VALUES('0010','陈婷婷','女');
7.利用视图v_stu_g删除学号为0010的学生记录。
DELETE FROM v_stu_g
WHERE `学号`='0010';
8.利用视图v_stu_g修改姓名为张青平的学生的高等数学的分数为87。
UPDATE v_stu_g
SET `分数`='87'
WHERE `课程名称`='高等数学';
9.使用SQL语句删除视图v_stu_c和v_stu_g。
DROP VIEW v_stu_c;
DROP VIEW v_stu_g;
在本地主机创建用户账号st_01,密码为123456。
CREATE USER 'st_01'@'localhost'IDENTIFIED by '123456';
使用studentsdb数据库中的student_info表。(1)授予用户账号st_01查询表的权限。
GRANT SELECT
on student_info
to 'st_01'@'localhost';
(2)授予用户账号st_01更新家庭住址列的权限。
GRANT UPDATE(`家庭住址`)
on student_info
to 'st_01'@'localhost';
(3)授予用户账号st_01修改表结构的权限。
GRANT ALL
on *
to st_01@localhost;
撤消用户账号st_01所有权限.
REVOKE all
on student_info
FROM st_01@localhost;
使用studentsdb数据库中的student_info表。(1)创建本地机角色student。
CREATE role student;
(2)授予角色student查询student_info表的权限。
GRANT SELECT
ON TABLE student_info
to student;
(3)创建本地机用户账号st_02,密码为123。
CREATE USER 'st_02'@'localhost'IDENTIFIED by '123';
(4)授予用户账号st_02角色student的权限。
GRANT student to st_02;
(5)以用户账号st_02连接MySQL服务器,查看student_info表信息。
USE st_02 SELECT *FROM student_info;
(6)撤消用户账号st_02角色student的权限。
REVOKE ON student FROM st_02@localhost;
(7)删除角色student。
drop role 'student';
12.删除用户账号st_01、st_02。
DROP USER 'st_01'@'localhost';
DROP USER 'st_02'@'localhost';
二、实验思考
建立索引的目的。什么情况下不适于在表上建立索引。1、在经常需要搜索的列上,可以加快搜索的速度。
2、在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
3、在经常用于连接两张表的列上,这些列主要是一些外键,可以加快连接的速度。
4、在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
5、在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。
6、在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
不适合建立索引:
1、表记录太少。
2、经常增删改的表。
3、数据重复且分布平均的表字段,因此应该只为最经常查询和经常排序的数据列建立索引(如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果)。能否在视图上建立索引。
可以在视图上建立索引。想通过视图修改表中数据,视图应具备哪些条件。
视图知识单表的投影。视图的作用。
(1)提高了重用性,视图就像一个函数。
(2) 对数据库重构,却不影响程序的运行。
(3) 提高了安全性能。可以对不同的用户,设定不同的视图。
(4) 让数据更加清晰。想要什么样的数据,就创建什么样的视图。用户账号、角色和权限之间的关系是什么?没有角色能给用户授予权限吗?
1.一个用户表可以有一个角色表,一个角色表可以有多个用户
2.角色表和权限表是多对多的关系
3.查询拥有某角色的用户信息
4.查询某用户的对应的角色。
5.查询拥有某权限的角色
6.查询某角色拥有的权限。
7.查询某用户拥有的权限,先查找用户和角色的信息,在通过角色查询权限
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)