南京邮电大学数据库实验二
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' ;
相关文章:
南京邮电大学数据库实验二
1. 用create database命令创建电影数据库(MovieDB)。 create database MovieDB; 在创建表之前需调用一下指定的数据库: use MovieDB; 2.在电影数据库中用create table 命令创建如下5个关系模式: 创建movies表: create table Movies( ti…...

数据库 02-03 补充 SQL的子查询(where,from),子查询作为集合来比较some,exists,all(某一个,存在,所有)
子查询: where字句的子查询: 通常用in关键字: 举个例子: in关键字: not in 关键字: in 也可以用于枚举集合: where中可以用子查询来作为集合来筛选元祖。 some,all的运算符号…...

提升英语学习效率,尽在Eudic欧路词典 for Mac
Eudic欧路词典 for Mac是一款专为英语学习者打造的强大工具。无论您是初学者还是高级学习者,这款词典都能满足您的需求。 首先,Eudic欧路词典 for Mac具备丰富的词库,涵盖了各个领域的单词和释义。您可以轻松查询并学习单词的意思、用法和例…...
计算机网络英文总结
物理层 数据链路层 循环冗余校验(Cyclic Redundancy Check) 点对点协议PPP(Point-to-Point Protocol) 链路控制协议(Link Control Protocol) 网络控制协议(Network Control Protocol) 网络层(network layer) IP(Internet Protocol) 网际协议 ARP(Address…...

Spring上下文之注解模块ConfigurationMethod
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…...

【深度学习】强化学习(三)强化学习的目标函数
文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略(Policy)4、马尔可夫决策过程5、强化学习的目标函数1. 总回报(Return)2. 折扣回报(Discounted Return)a. 折扣率b. 折扣回报的定义 3.…...
Python高级算法——人工神经网络(Artificial Neural Network)
Python中的人工神经网络(Artificial Neural Network):深入学习与实践 人工神经网络是一种模拟生物神经网络结构和功能的计算模型,近年来在机器学习和深度学习领域取得了巨大成功。本文将深入讲解Python中的人工神经网络ÿ…...

深入理解JVM设计的精髓与独特之处
这是Java代码的执行过程 从软件工程的视角去深入拆解,无疑极具吸引力:首个阶段仅依赖于源高级语言的细微之处,而第二阶段则仅仅专注于目标机器语言的特质。 不可否认,在这两个编译阶段之间的衔接(具体指明中间处理步…...
fastjson序列化与反序列化的忽略
一.场景 做了一个基于springbootfastjson的小应用。A对象与B对象是OneToMany关系。A对象新增时也希望一起传递B的信息到后台进行Many端数据的新增。直接使用A对象来接收前台传递的信息,springboot会帮我们组装好对象。查询A对象时,又不希望其中的List<…...

【TB作品】基于单片机的实验室管理系统,STM32,GM65二维码扫描模块
硬件: (1)STM32F103C8T6最小板() (2)GM65二维码扫描模块 (3)DS1302实时时钟模块 (4)AT24C02 存储设备 (5)蜂鸣器 …...

超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击
在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击,这些漏洞如果链接起来,可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件,允许广泛的定制和部署灵活性。 它是一种经济高效…...
react面试总结2
redux中sages和thunk中间件的区别,优缺点 Redux 中的 redux-saga 和 redux-thunk 都是中间件,用于处理异步操作,但它们有一些区别。 Redux Thunk: 简单易用:redux-thunk 是比较简单直观的中间件,它允许 …...
hive 常见存储格式和应用场景
1.存储格式 textfile、sequencefile、orc、parquet sequencefile很少使用(不介绍了),常见的主要就是orc 和 parquet 建表声明语句是:stored as textfile/orc/parquet行存储:同一条数据的不同字段都在相邻位置ÿ…...
PyPDF2库对PDF实现读取的应用
目录 一、PyPDF2 库的使用 1. 文档打开和页面读取 2. 文本提取功能 3. 示例代码...

C++ stack用法详解
stack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。 图 1 stack 适配器示意图 如图 1 所示,stack 适配器…...

QT案例 使用WMI获取win_32类的属性值,包括Win32提供程序类中的属性
最近涉及到读取WINDOWS 系统电脑设备的各种信息,在一些特殊的PE或者简化系统中是没有WMI查询工具的,所以就自己写了个查询大部分WMI属性值的工具,免去了查网站的功夫。涉及到的方法内容就汇总做个总结。 PS:因为工作中软件基本都是我一个人开…...
TCP/UDP 的特点、区别及优缺点
1.TCP协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过建立连接、数据确认(编段号和确认号)和数据重传等机制,保证了数据的可靠性…...

使用 Python 使用贝叶斯神经网络从理论到实践
一、说明 在本文中,我们了解了如何构建一个机器学习模型,该模型结合了神经网络的强大功能,并且仍然保持概率方法进行预测。为了做到这一点,我们可以构建所谓的贝叶斯神经网络。 这个想法不是优化神经网络的损失࿰…...

Linux 中的网站服务管理
目录 1.安装服务 2.启动服务 3.停止服务 4.重启服务 5.开机自启 6.案例 1.安装服务 网址服务程序 yum insatll httpd -y 查看所有服务 systemctl list-unit-files 2.启动服务 systemctl start httpd 查看服务进程,确认是否启动 ps -ef|grep httpd 3.停止…...

阿里云cdn设置相同的域名路径访问不同的oss目录
1.设置回源配置,添加回源URL改写 2.设置跨域,cdn的跨域优先oss 3.回源设置...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...