南京邮电大学数据库实验二

1. 用create database命令创建电影数据库(MovieDB)。

create database MovieDB;

在创建表之前需调用一下指定的数据库:

use MovieDB;

2.在电影数据库中用create table 命令创建如下5个关系模式:

创建movies表:

create table Movies(
title char(20),
year int,
length int,
genre char(10),
studioName char(30),
producerC int,
PRIMARY KEY(title,year));

创建MovieStar表:

 create table MovieStar(name char(12),address char(30),gender char(2),birthdate date,PRIMARY KEY(name));

创建StarsIn表:

create table StarsIn(
movieTitle char(20),
movieYear int,
starName char(12),
PRIMARY KEY(movieTitle, movieYear, starName));

创建MovieExec表:

CREATE TABLE MovieExec(
NAME CHAR(12),
address CHAR(30),
cert INT,
netWorth INT,
PRIMARY KEY(cert));

创建Studio表:

CREATE TABLE Studio(
NAME CHAR(30),
address CHAR(30),
presC INT,
PRIMARY KEY(NAME));

 导入文件:

 LOAD DATA INFILE '/data2/MovieExec.txt' INTO TABLE MovieExec fields terminated by ',' lines terminated by '\n';
LOAD DATA INFILE '/data2/movies.txt' INTO TABLE movies fields terminated by ',' lines terminated by '\n';
LOAD DATA INFILE '/data2/starsin.txt' INTO TABLE StarsIn fields terminated by ',' lines terminated by '\n';
LOAD DATA INFILE '/data2/movieStar.txt' INTO TABLE movieStar fields terminated by ',' lines terminated by '\n';
LOAD DATA INFILE '/data2/Studio.txt' INTO TABLE Studio fields terminated by ',' lines terminated by '\n';

提示:这里的fields by ',' 这里单引号内的符号是看你文件中是按什么来分割数据的,根据实际情况来自己修改符号。

3. 用alter table命令修改MovieExec关系模式,为字段name增加唯一值约束cexec (unique)。

alter table MovieExec
add constraint cexec unique(name);

4. 用alter table命令修改movies关系模式,增加引用完整性约束cpc,要求movies表中的producerC必须是在MovieExec表中已有的制片人。若违反了此约束,则拒绝更新操作。

alter table moviesadd constraint cpcforeign  key (producerc) references MovieExec (cert)
on update restrict
on delete restrict;

5. 用alter table命令修改movies关系模式,增加完整性约束cyear,要求电影年份不能是1915年以前的。

 alter table movies add constraint cyear check(year >= 1915);

6. 用alter table命令修改movies关系模式,增加完整性约束clength,要求电影长度不能小于60也不能多于250。

alter table movies add constraint clength check(length>60 and length <=250);

7. 设计数据对3~6的内容进行验证。

对3:

错误示范:

insert into movies values('小王',2000,149,'华为','计算机工程学院',003);
insert into movies values('小王',2000,149,'华为','计算机工程学院',002);

第一段代码会报错,错误为:Cannot update or add..........................;

对4:

错误示范:

insert into MovieExec values('姜文','上海',1000000,30000000);

该数据不能添加进表中,错误信息应该是“姜文”; 

对5:

错误示范:

insert into movies values('小强',1910,147,'abc','abcd',001);

错误信息:Check constraint 'cyear' is violated. 

insert into movies values('小强',1999,147,'abc','abcd',001);

对6:

错误示范:

insert into movies values('小强',1999,260,'abc','abcd',001);

错误信息: Check constraint 'clength' is violated.

insert into movies values('小强',1940,147,'abc','abcd',001);

提示:check约束,数据库版本5.7以及5.7以下的会有check的定义但是check语句是无效的,即不能对添加的数据进行判断,需要使用触发器来进行处理,5.7版本以上,就可以使用check语句。

8. 用create view命令创建如下视图:

a) 视图RichExec给出了所有资产在80000000以上的制片人的姓名、地址、证书号和资产;

 

create view RichExec as
select * from MovieExec
where netWorth > 80000000;
select * from RichExec;

b) 视图ExecutiveStar给出了既是演员又是制片人的那些人的名字、地址、性别、生日、证书号和资产总值。

create view Executivestar as
select t1.name, t1.address, t1.gender, t1.birthdate, t2.cert, t2.netWorth
from Moviestar t1, MovieExec t2
where t1.name = t2.name;
select * from Executivestar;

9. 用create index命令在StarsIn的StarName属性上创建索引aindex。

create index aindex on starsin(starname);

10. 使用SQL中的授权、收回的基本语句。

(1)创建三个用户U1、U2、U3,并分别对他们设置登录账号和密码。

 

create user 'u1'@'localhost'identified by 'lzy123';
create user 'u2'@'localhost'identified by 'lzy456';
create user 'u3'@'localhost'identified by 'lzy789';

(2)对U1、U2、U3三个用户进行如下授权:

①将MovieDB数据库下的Movies表的查询权授予用户U1;

grant select on MovieDB.movies to 'u1'@'localhost';

②将Movies表的查询和插入权限授予U2;

grant select, insert on MovieDB.movies to 'u2'@'localhost';

③将Movies表的查询和插入权限授予U3,并设置允许U3将此权限再授予其他用户。

grant select, insert on MovieDB.movies to 'u3'@'localhost' with grant option;

 (3)对已设置权限的用户分别进行如下操作,记录结果,验证授权是否成功:

①U1用户对Movies表进行select和insert操作;

首先我们需要输入exit;退出当前账户,如何进行以下操作:

mysql -uu1 -p

输入之前的设定的密码进入系统(密码最好设的复杂点,要不然容易发生警告)

use MovieDb;

 

 select * from movies;
insert into movies values('小王',2001,149,'华为','计算机工程学院',003);

该行代码会发生报错:

INSERT command denied to user 'u1'@'localhost' for table 'movies'

②U2用户对Movies表进行select和insert操作;

先输入exit;退出u1用户,输入u2用户信息:

mysql -uu2 -p
use MovieDb;
select * from movies;
insert into movies values('小王',2001,149,'华为','计算机工程学院',002);

③U1用户将Movies表的查询权限授权给U2:

首先使用exit;退出u3用户然后输入下面的代码进行

mysql -uu1 -p
use MovieDB;
grant select on Movies to 'u2'@'localhost';

④U3用户将Movies表的插入权限授权给U1,并再次测试U1对Movies表的insert操作。

 首先需要进入u3用户,使用前面的方法即可;

在u3用户的界面输入

use MovieDB;
grant insert on movies to 'u1'@'localhost';

然后切换到u1用户

输入:

use MovieDB;
insert into movies values('小王',2002,149,'华为','计算机工程学院',002);

验证是否有添加权限,结果应该是显示可以的。

(4)将U1用户对Movies表的查询权限收回。

进入管理员界面:

use MovieDB;
revoke select on movies from 'u1'@'localhost';

(5)再次测试U1用户对Movies表的select操作。 

进入u1界面:

use MovieDB;
select * from movies;

错误信息:

SELECT command denied to user 'u1'@'localhost' for table 'movies' ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

城市货车通行码二维码解析

目录 说明 界面 下载 城市货车通行码二维码解析 说明 二维码扫描信息为&#xff1a; tmri://12123?ywlx1041&ewmeyJ0eHpiaCI6IjUxMDcwMDAwMDE0MyIsInR4em1jIjoiQeivgSIsImhwemwiOiIwMiIsImhwaG0iOiLlt51CMkwzMjYiLCJrc3JxIjoiMjAyMS0xMS0yOCIsImpzcnEiOiIyMDIyLTEyL…

虚幻学习笔记12—C++类的实例化

一、前言 本系列如无特殊说明使用的虚幻版本都是5.2.1&#xff0c;VS为2022版本。在Unity中通常创建的脚本都默认继承了MonoBehavior&#xff0c;都是不能再用代码New而实例化的&#xff0c;虚幻也是一样不能直接New来实例化。在Unity中是通过Instantiate方法来实例化一个游戏对…

C++ lambda表达式

写法格式 lambda表达式的写法格式如下&#xff1a; [capture-list] (parameters) mutable -> ret { statement } 各部分的说明为&#xff1a;[capture-list] : 捕获列表&#xff0c;编译器根据[]来判断接下来的代码是否为lambda函数&#xff0c;捕捉列表能够捕捉上下文中…

【ArcGIS Pro微课1000例】0055:Pro中如何处理个人数据库(.mdb)

文章目录 原因分析解决方案使用ArcGIS Pro的用户应该已经发现个人地理数据库(.mdb)不能使用了。随着ESRI的软件技术革新,在ArcGIS Pro中不再支持且将来也不会支持个人地理数据库(.mdb)。这个确实很烦人,很多项目还是在使用mdb数据库的。不过ESRI也给出了一些解决办法,不…

二叉搜索树的简单C++类实现

二叉搜索树&#xff08;BST&#xff09;是一种重要的数据结构&#xff0c;它对于理解树的操作和算法至关重要。本文将通过一个C示例来展示如何实现一个BST&#xff0c;并在插入和删除节点时提供清晰的输出&#xff0c;以帮助可视化这些操作的过程。 二叉搜索树的节点结构 首先…

Elasticsearch 8.9 search命令执行查询源码

一、相关的API的handler1、接收HTTP请求的handler2、往数据节点发送查询请求的action(TransportSearchAction)3、通过transportService把查询请求发送到指定的数据节点 二、数据节点收到请求的处理逻辑1、尝试从缓存中加载查询结果2、不通过缓存查询&#xff0c;直接执行查询(1…

Elasitcsearch--解决CPU使用率升高

原文网址&#xff1a;Elasitcsearch--解决CPU使用率升高_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决ES导致的CPU使用率升高的问题。 问题描述 线上环境 Elasticsearch CPU 使用率飙升常见问题如下&#xff1a; Elasticsearch 使用线程池来管理并发操作的 CPU 资源。…

智慧农业大数据可视化UI,数据展示平台(免费可视化大屏模版PS资料)

大屏幕展示方式可以实现信息的直观呈现与交互操作&#xff0c;使农业生产者能够一目了然地掌握有关农情、天气、土壤等数据信息&#xff0c;从而科学决策。智慧农业大数据可视化大屏是提升农业生产效益的一种重要工具。 现分享亩产效益指标、农业大数据可视化、农业数据展示平…

QEMU源码全解析 —— virtio(11)

接前一篇文章&#xff1a; 上一回对于virtio_balloon_pci_realize函数进行了详细解析。最后讲到在virtio_balloon_pci_realize函数的最后一步调用了object_property_set函数&#xff0c;从而导致了virtio_device_realize函数的执行。本回就来对于virtio_device_realize函数进行…

Flutter工具安装与环境搭建

1、下载 Flutter SDK&#xff0c;下载完成后&#xff0c;在需要放置SDK的地方解压即可。 注意&#xff1a; 请勿将 Flutter 有特殊字符或空格的路径下。请勿将 Flutter 安装在需要高权限的文件夹内&#xff0c;例如 C:\Program Files\。 2、配置环境变量 例如&#xff1a; …

NO-IOT翻频,什么是翻频,电信为什么翻频

1.1 翻频迁移最终的目的就是减少网络的相互干扰&#xff0c;提供使用质量. 1.2 随着与日俱增的网络规模的扩大&#xff0c;网内干扰已成了影响网络的质量标准之一&#xff0c;为了保障电信上网体验&#xff0c;满足用户日益增长的网速需求,更好的服务客户&#xff0c;电信针对…

【迅搜09】索引管理(二)增删改操作

索引管理&#xff08;二&#xff09;增删改操作 今天我们来学习真正的&#xff0c;最核心的索引管理相关的操作。但其实今天的内容还更简单一些&#xff0c;为啥呢&#xff1f;因为索引管理中&#xff0c;最核心的就是对于数据的增、删、改呀。其实要往大了说&#xff0c;查询也…

缓存的定义及重要知识点

文章目录 缓存的意义缓存的定义缓存原理缓存的基本思想缓存的优势缓存的代价 缓存的重要知识点 缓存的意义 在互联网高访问量的前提下&#xff0c;缓存的使用&#xff0c;是提升系统性能、改善用户体验的唯一解决之道。 缓存的定义 缓存最初的含义&#xff0c;是指用于加速 …

宝塔PostgreSQL设置数据库远程访问

宝塔PostgreSQL设置数据库远程访问 宝塔的PostgreSQL1. 添加数据库2. 打开PostgreSQL设置界面3. 修改配置4. 重载配置/重启数据库 Docker的PostgreSQL1. postgresql.conf2. pg_hba.conf3. 重启数据库 注意其他问题 宝塔PostgreSQL设置数据库远程访问&#xff1f;docker容器Post…

CleanMyMac X2024(Mac优化清理工具)v4.14.5中文版

CleanMyMac X是一款颇受欢迎的专业清理软件&#xff0c;拥有十多项强大的功能&#xff0c;可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等&#xff0c;并且这款清理软件操作简易&#xff0c;非常好上手&#xff0c;特别适用于那些刚入手苹…

《每天一个Linux命令》 -- (15) mkdir命令

欢迎阅读《每天一个Linux命令》系列 &#xff01;在本篇文章中&#xff0c;将说明mkdir命令用法。 概念 mkdir命令是Linux系统下的目录创建命令&#xff0c;用于创建指定的目录。 英文原意&#xff1a;make directories&#xff0c;所在路径&#xff1a;/bin/mkdir&#xff0…

【AI】YOLO学习笔记

作为经典的图像识别网络模型&#xff0c;学习YOLO的过程也是了解图像识别的发展过程&#xff0c;对于初学者来说&#xff0c;也可以了解所采用算法的来龙去脉&#xff0c;构建解决问题的思路。 1.YOLO V1 论文地址&#xff1a;https://arxiv.org/abs/1506.02640 YOLO&#x…

软件设计师——计算机网络(三)

&#x1f4d1;前言 本文主要是【计算机网络】——软件设计师——计算机网络的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1…

混淆相加和拼接(js的问题)

JavaScript 中的加号 "()" 有两个功能&#xff1a;相加和拼接。也就是数字的相加和字符串的拼接。一些开发者经常会误用这个操作符。 比如&#xff1a; const num1 30; ​​const num2 "20"; ​​const num3 30; ​​const word1 "Java" ​…

成本管理常用的ChatGPT通用提示词模板

成本分析&#xff1a;如何进行成本分析&#xff1f; 成本核算&#xff1a;如何进行成本核算&#xff1f; 成本控制&#xff1a;如何控制成本&#xff1f; 成本效益分析&#xff1a;如何进行成本效益分析&#xff1f; 成本预测&#xff1a;如何预测成本&#xff1f; 成本决…