MySQL(视图,存储函数,存储过程)

news2024/11/17 15:31:16

作业1:

 作业实现:

首先创建学生表,课程表,以及学生选课表。

CREATE TABLE Student (
    Sno INT PRIMARY KEY,
    Sname VARCHAR(20) NOT NULL,
    Ssex CHAR(1) CHECK (Ssex IN ('男', '女')),
    Sage INT,
    SDept VARCHAR(20) DEFAULT '计算机'
);

CREATE TABLE Course (
    Cno INT PRIMARY KEY,
    Cname VARCHAR(20) NOT NULL
);

CREATE TABLE SC (
    Sno INT,
    Cno INT,
    Score INT,
    PRIMARY KEY (Sno, Cno),
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
    FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

 1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。

CREATE TABLE Student (
    Sno INT PRIMARY KEY,
    Sname VARCHAR(20) NOT NULL,
    Ssex CHAR(1) CHECK (Ssex IN ('男', '女')),
    Sage INT,
    SDept VARCHAR(20) DEFAULT '计算机'
);

2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。

ALTER TABLE Student MODIFY Sage SMALLINT;


3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。

CREATE INDEX SC_INDEX ON SC (Sno, Cno);


4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。

CREATE VIEW stu_info AS
SELECT Sname, Ssex, Cname, Score
FROM Student
JOIN SC ON Student.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno;
desc stu_info;

 作业2:

 作业实现:

首先创建sch表并写入数据

CREATE TABLE sch (
    id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    glass VARCHAR(50) NOT NULL
);

insert into sch (id, name, glass) values (NULL, 'xiaommg', 'glass 1');
insert into sch (id, name, glass) values (NULL, 'xiaojun', 'glass 2');
insert into sch (id, name, glass) values (NULL, 'xiaoshuai', 'glass 1');
insert into sch (id, name, glass) values (NULL, 'xiaoliu', 'glass 2');
insert into sch (id, name, glass) values (NULL, 'xiaohui', 'glass 1');
insert into sch (id, name, glass) values (NULL, 'xiaoxi', 'glass 2');

 1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch()

DELIMITER //
create function count_sch() returns int
begin
	declare total_count int;
    select count(*) into total_count from sch;
    return total_count;
end //

这里创建存储函数时出现报错,“you *might* want to use the less safe log_bin_trust_function_creators variable”

这里用到的解决方法为“SET GLOBAL log_bin_trust_function_creators = 1;”。

2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资,功能查询emp表dept为30,job为销售员的平均工资。

        这里首先需要先创建emp表并填入相关数据:

CREATE TABLE `emp`  (
  `empno` int(4) NOT NULL,
  `deptno` int(2) NOT NULL,
  `ename` varchar(255),
  `job` varchar(255),
  PRIMARY KEY (`empno`) USING BTREE
);

INSERT INTO `emp` VALUES (1001, 30, 'asd', '前台');
INSERT INTO `emp` VALUES (1002, 30, 'qwe', '部门经理');
INSERT INTO `emp` VALUES (1003, 30, 'qaz', '销售员');

接下来创建存储过程avg_sai,功能查询emp表dept为30,job为销售员的平均工资。

DELIMITER //
create procedure avg_sai(in deptno int, in job varchar(50), out avg_salary decimal(10, 2))
begin
	select avg(salary) into avg_salary from emp where dept = deptno and job = job;
end //

call avg_sai(30,'销售员',@avg_salary);

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

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

相关文章

AI小程序添加深度合成类目解决办法

基于文言一心和gpt等大模型做了一个ai助理小程序,在提交“一点AI助理”小程序时,审核如下: 失败原因1 审核失败原因 你好,你的小程序涉及提供提供文本深度合成技术 (如: AI问答) 等相关服务,请补充选择:深度…

骨传导蓝牙耳机怎么使用?使用骨传导耳机对人体有没有伤害?

骨传导蓝牙耳机的使用方法和传统的入耳式蓝牙耳机使用方法相差无几,都是通过蓝牙来进行连接使用,但骨传导耳机会自带内存,所以在此前提上可以存储音乐独立使用,比传统的入耳式蓝牙耳机使用更方便一些。 那么使用骨传导耳机会不会对…

【方案】世微AP51656 电流采样降压恒流驱动 60V3A LED灯 SOT89-5

1,方案应用:3A输出 LED灯BOM表 2,方案应用:3A输出 LED灯线路图 3,产品描述 AP51656是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V,输出电流 可…

17.自主练习

一、建表 1、建库、建表 # 创建数据库 create database mysql_exampleTest; use mysql_exampleTest; # 学生表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(20) NOT NULL DEFAULT , s_birth VARCHAR(20) NOT NULL DEFAULT , s_sex VARCHAR(10) NOT NULL…

油猴脚本注入js获取DY作品数据

油猴脚本的执行时机: 元素还未生成 https://bbs.tampermonkey.net.cn/thread-3843-1-1.html 而在控制台执行时, 通常元素已经生成 逻辑就是在网页每次发送请求时, 拦截它请求的响应数据作操作; 所以当用户作品很多时, 也需要一直滚动到全部作品请求加载完成, 触发下载 &#…

数据库经典面试题

习题一 1.1 创建表 ①创建Student表 mysql> create table Student ( -> Sno int primary key, -> Sname varchar(255), -> Ssex varchar(10), -> Sdept varchar(50) -> ); Query OK, 0 rows affected (0.01 sec) ②创建Course表 mysql…

树莓派4B +Ubuntu20.04+ROS1的使用(2)

首先确定一下主机与从机的ip地址(非常重要) 在这次实验中,主机是一台Ubuntu20.04.03系统的台式机,我们间通过这台准备来远程遥控树莓派上的ros1系统,它的ip地址是192.168.230.181 从机是一台搭载Ubuntu20.04桌面版ro…

项目管理十大知识领域之项目人力资源管理

一、项目人力资源管理的概述 作为项目管理的重要组成部分,项目人力资源管理旨在有效管理和利用项目团队的人力资源,以实现项目目标。它涵盖了对人员的招聘、培训、激励和绩效管理等方面,旨在确保项目团队的高效运转和成员的专业发展。项目人…

录课视频太大怎么办?3种方法一键瘦身~

录制视频是现代人常用的一种记录生活的方式,但是视频文件大小往往会很大,不利于存储和分享。为了解决这个问题,我们需要使用视频压缩软件来压缩视频文件大小,以便更方便地存储和分享。 方法一:嗨格式压缩大师 嗨格式压…

el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将getCheckedK…

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址:【新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 四、vue组件 uni-app官网 …

【面试】测试/测开(ING3)

190. 栈和堆在内存管理上的区别 栈 1) 栈是由系统自动分配和回收的内存。 2)栈的存储地址是由高地址向低地址扩展的。 3)栈是一个先进后出的结构。 4)栈的空间大小是一个在编译时确定常数,即栈的大小是有限制的&#x…

Windows连接Ubuntu桌面

平时Windows连接Ubuntu服务器都是使用Xshell、FinalShell等工具,但这些连接之后只能通过终端进行操作,无法用桌面方式与服务器交互。 本文介绍如何通过工具,实现Window连接远程Ubuntu服务器,并使用桌面方式交互。 系统版本&#x…

C/C++ BM5 合并K个已排序的链表

文章目录 前言题目1 解决方案一1.1 思路阐述1.2 源码 2 解决方案二2.1 思路阐述2.2 源码 总结 前言 在接触了BM4的两个链表合并的情况,对于k个已排序列表,其实可以用合并的方法来看待问题。 这里第一种方法就是借用BM4的操作,只不过是多个合…

Redis内部数据结构ziplist详解

什么是ziplist Redis官方对于ziplist的定义是(出自ziplist.c的文件头部注释): The ziplist is a specially encoded dually linked list that is designed to be very memory efficient. It stores both strings and integer values, where …

three.js 缓动算法.easing(渐入相机动画)

效果&#xff1a;淡入&#xff0c;靠近物体 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

go实现判断20000数据范围内哪些是素数(只能被1和它本身整除的数),采用多协程和管道实现

实现一个并发程序&#xff0c;用于寻找 20000 以内的所有素数。使用了 Goroutines 和 Channels 来分发和处理任务&#xff0c;并通过 WaitGroup&#xff08;实现为 exitChan&#xff09;来同步 Goroutines 的退出。 一.GO代码 package mainimport ("fmt""time…

docker安装confluence全套流程

docker安装confluence全套流程 1.安装mysql2.创建mysql容器3.拉取confluence7容器4.拷贝mysql驱动到confluence中:1195ef11d768为容器id(需要修改为你自己的)5.创建confluence容器6.激活confluence到数据连接可能需报数据库编码和环境隔离错误 1.安装mysql docker pull mysql/…

保姆版Vps安装灯塔(ARL)

因为灯塔的默认端口为5003&#xff0c;所以我们在安装之前就在防火墙里把我们的5003端口打开 打开端口步骤如下&#xff1a; 1.我们打开控制面板&#xff0c;在控制面板里点击 系统和安全 。如下图&#xff1a; 2.接着点击 Windows Defender防火墙,如下图&#xff1a; 3.再…

好用的流程图工具

分享工作中常用的装逼工具 目前市面上的流程图或者思维导图工具挺多的&#xff0c;但是有的会限制使用数量或者收费&#xff0c;典型的有processon、Xmind&#xff0c;推荐今天Mermaid(官网)。 快速上手 中文教程&#xff1a;Mermaid 初学者用户指南 | Mermaid 中文网。我们选择…