sql:Mysql create view,function,procedure

2023-11-10

use test;

create database Liber;

use Liber;

#顯示數据庫 20150210 Geovin Du 涂聚文
SHOW DATABASES;

drop table BookKindList;
#书目录
create table BookKindList
(
	BookKindID INT NOT NULL AUTO_INCREMENT, #自动增加
	BookKindName nvarchar(500) not null,
	BookKindParent int null,
   PRIMARY KEY(BookKindID)  #主键
);

#这样也可以
create table BookKindList
(
	BookKindID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, #自动增加#主键
	BookKindName nvarchar(500) not null,
	BookKindParent int null    
);

#书位置
create table BookPlaceList
(
	BookPlaceID INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,
	BookPlaceName nvarchar(500) not null,	
	BookPlaceParent int null
	
);

#书系列Series或套名称(一本的0.无,有分上下本)
drop table BookSeriesList;

create table BookSeriesList
(
	BookSeriesID INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,
	BookSeriesName nvarchar(500) not null
);
#職位Position
create table PositionList
(
	PositionID INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,
	PositionName nvarchar(500) not null
);

#部門Department  ShortPY
create table DepartmentList
(
	DepartmentID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	DepartmentName nvarchar(500) not null
);

insert into DepartmentList(DepartmentName) values ('行政部');
insert into DepartmentList(DepartmentName) values ('资讯部');

select * from DepartmentList;

#語种 Language
create table LanguageList
(
	LanguageID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	LanguageName nvarchar(500) not null
);

#出版社Press #拼音索引
create table PressList
(
	PressID INT  NOT NULL PRIMARY KEY AUTO_INCREMENT,
	PressName nvarchar(500) not null
	
);

#作家Author
create table AuthorList
(
	AuthorID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	AuthorName nvarchar(500) not null
);

#BookStatus 书藉存在状态(1,在用,2,报废,3。转移)
create table BookStatusList
(
	BookStatusID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	BookStatusName nvarchar(500) not null
);

#借阅状态:借出,续借,归还,预借Lend, Renewal, Restitution,Reservations
create table LendStatusList
(
	LendStatusID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	LendStatusName nvarchar(500) not null
);



#书信息
create table BookInfoList
(
	BookInfoID  INT NOT NULL PRIMARY KEY AUTO_INCREMENT,#自动增加#主键
	BookInfoKind int not null,  					                #书籍类型外键
	BookInfoPlace int not null,						            #放置位置外键
  BookInfoISBN varchar(50) not null,				#书籍ISBN编码
	BookInfoBarCode varchar(60) not null,			#管理条码(barcode) 
	BookInfoName nvarchar(500) not null,		    #书名
	BookInfoSeries	int default 1,		            #书系列 ,0為無係列
	BookInfoAuthor int null,	 					        #作者
	BookInfoPress int null,							        #出版社
	BookInfoLanguage int null,						        #语种
	BookInfoPublish datetime ,	                #出版时间
	BookInfoImage text null,						        #封面图片
	BookInfoStatus int default 1 not null,			#书藉状态(1,在用(在库),2,报废,3。转移)
	BookInfoRemarks text null,						        #备注
	BookInfoOperatorId int null,					    #操作人员ID
	BookInfoAddDate datetime not null,	    #添加時間 可不以默认时间DEFAULT CURDATE()
	BookInfoPrice float default 1.00,					#书价格
  BookUseCode varchar(100)
	
);

desc BookKindList;#查询表结构

show tables;#查询所有表


select * from BookKindList; #查询

insert into BookKindList(BookKindName,BookKindParent)values('六福书目录',0);

insert into BookKindList(BookKindName,BookKindParent)values('文学',1);

insert into BookKindList(BookKindName,BookKindParent)values('科学技术',1);

/*自定义函数*/
#部门函数
DELIMITER $$
DROP FUNCTION IF EXISTS `geovindu`.`f_GetDepartmentName` $$
CREATE FUNCTION `geovindu`.`f_GetDepartmentName` (did int) RETURNS varchar(100)
BEGIN
declare str varchar(100);
return(select DepartmentName from DepartmentList where DepartmentID=did);
END $$
DELIMITER ;

#使用函数
select f_GetDepartmentName(1);

select * from BookInfoList;
#作家函数

DELIMITER $$
DROP FUNCTION IF EXISTS `geovindu`.`f_GetAuthorName` $$
CREATE FUNCTION `geovindu`.`f_GetAuthorName` (did int) RETURNS varchar(400)
BEGIN
   declare str varchar(100);
return(select AuthorName from AuthorList where AuthorID=did);
END $$
DELIMITER ;

/*视图*/
select * from geovindu.views;

desc View_BookInfoList;

show create view View_BookInfoList;


select * from View_BookInfoList;

CREATE VIEW `geovindu`.`View_BookInfoList` AS
  select BookInfoID , BookInfoKind , BookInfoPlace ,BookInfoSeries , BookInfoAuthor , BookInfoPress , BookInfoLanguage , BookInfoStatus , BookInfoOperatorId ,  BookInfoISBN , BookInfoBarCode , BookInfoName ,    BookInfoRemarks ,BookInfoAddDate,BookInfoPublish ,BookInfoPrice,
BookKindList.BookKindName,BookPlaceList.BookPlaceName,f_GetAuthorName(BookInfoAuthor)
from BookInfoList,BookKindList,BookPlaceList
where BookInfoList.BookInfoKind=BookKindList.BookKindID  and BookInfoList.BookInfoPlace=BookPlaceList.BookPlaceID;



/*储存过程 解决方案的思维模式基本相同,只是一些指令不同*/

#IN 表示输入参数
#OUT表示输出参数
#INOUT:表示即可以输入参数也可以输出参数
#存储过程 利用mysql-query-browser创建存储过程和函数

#删除
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`DeleteBookKind` $$
CREATE PROCEDURE `geovindu`.`DeleteBookKind` (IN param1 INT)
BEGIN
         Delete From bookkindlist WHERE BookKindID  = param1;
END $$
DELIMITER ;

#查询所有
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindListAll()` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindListAll()` ()
BEGIN
    SELECT * FROM bookkindlist;
END $$
DELIMITER ;


select * from  `geovindu`.`bookkindlist`;
SELECT * FROM bookkindlist;

#统计
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`BookKindCount` $$
CREATE PROCEDURE `geovindu`.`BookKindCount` (OUT param1ID INT)
BEGIN
        select COUNT(*) into param1ID  From bookkindlist;
END $$
DELIMITER ;

#更新 
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Update_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Update_BookKindList` (IN param1ID Int,IN param1Name NVarChar(1000),IN param1Parent Int)
BEGIN
IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then #如果存在相同的记录,不更新名称
UPDATE BookKindList
	SET
		BookKindName=param1Name ,
		BookKindParent=param1Parent
	where
		BookKindID=param1ID;
ELSE
    UPDATE BookKindList
	SET BookKindParent=param1Parent
	where
		BookKindID=param1ID;
END IF;
END $$
DELIMITER ;


#查询一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindList` (IN param1 INT)
BEGIN
        SELECT * FROM BookKindList WHERE BookKindID = param1;
END $$
DELIMITER ;

#插入一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindList` (IN param1Name NVarChar(1000),IN param1Parent Int)
BEGIN
        insert into BookKindList(BookKindName,BookKindParent) values(param1Name,param1Parent);
END $$
DELIMITER ;

#插入一条返回值
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindOut` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindOut` (IN param1Name NVarChar(1000),IN param1Parent Int,OUT ID INT)
BEGIN
     IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then   #如果存在相同的记录,不添加
        INSERT INTO BookKindList (BookKindName,BookKindParent)VALUES(param1Name ,param1Parent);
        #set ID=Last_insert_id()
        SELECT LAST_INSERT_ID() into ID;
      end if;
END $$
DELIMITER ;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql:Mysql create view,function,procedure 的相关文章

  • 如何在 phpmyadmin 中创建 MySQL 触发器

    我想在 MySQL 中创建一个触发器 我运行以下命令 mysql gt delimiter mysql gt CREATE TRIGGER before insert money BEFORE INSERT ON money gt FOR
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • 使用 MS Access 获取行的第一个实例

    EDITED 我有这个查询 我想SELECT表中记录的第一个实例petTable SELECT id pet ID FIRST petName First Description FROM petTable GROUP BY pet ID
  • 如何在SSRS中的表上创建热图?

    如何在 SSRS 中创建这样的内容 颜色将根据行中的值 承销商 从红色变为绿色 所有这些都在一个组中 您可以通过右键单击各个单元格并根据表达式设置填充颜色来完成此操作 In the Image below I ve mistakingly
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 连接两个表的查询的 SQL Server“FOR XML”输出

    我是 SQL Server 中 FOR XML 功能的新手 我正在使用 SQL Server 2012 我有两个表 Word 和 Word Expansion 样本数据 表 字 WordOID Word 1 PIPE 2 WIRE 表 Wo
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N

随机推荐

  • 『曼哈顿距离转切比雪夫距离·树状数组·扫描线』航空基地Airbase

    P r o b l e m mathrm Problem Problem S o l u t i o n mathrm Solution Solution 我们考虑将曼哈顿距离转化为切比雪夫具体 p x y p x y x y p x y
  • 01-SA8155P QNX Fastboot更新固件

    1 背景 在基于Android系统做开发时 Fastboot是一个非常实用的工具 能解决快速及便捷的更新开发者所需的分析数据 同样 SA8155P Hypervisor 也支持fastboot 如何使用fastboot呢 详情实操步骤如下第
  • LQFP100封装尺寸图

    下图是LQFP100封装规格的参数 根据下图的参数 即可制作LQFP100的PCB封装
  • Windows API程序设计一

    文章目录 实验目的 实验过程 实验结果 实验目的 了解 windows操作系统应用程序开发的基本概念 win32 API函数 消息与事件驱动 掌握WinMain函数的基本框架 窗口定义 窗口创建 消息循环及窗口过程函数 实验过程 设计一个窗
  • Certificates + APP IDS + Devices + Provisioning Profiles笔记(一)

    一 添加证书 在https developer apple com登陆到后台 打开Certificates 选择一下 是开发证书 需要创建CSR文件了 下面的操作在mac下进行 前往 gt 实用工具 gt 钥匙串访问 gt 证书助理 gt
  • 网页拉起其他app

  • c++调用tensorflow

    目前深度学习越来越火 学习 使用tensorflow的相关工作者也越来越多 但是目前绝大部分的python都是拥有着丰富的python的API 而c 的API不够完善 这就导致绝大多是使用tensorflow的项目都是基于python 如果
  • Web 的攻击技术

    互联网上的攻击大都将 Web 站点作为目标 本章讲解具体有哪些攻击 Web 站点的手段 以及攻击会造成怎样的影响 简单的 HTTP 协议本身并不存在安全性问题 因此协议本身几乎不会成为攻击的对象 应用 HTTP 协议的服务器和客户端 以及运
  • 二进制包安装mysql5.7.36

    二进制包安装mysql 5 7 36 一 下载二进制软件件包 http mirrors 163 com mysql Downloads MySQL 5 7 mysql 5 7 36 linux glibc2 12 x86 64 tar gz
  • Python服务docker file 的两种方式

    方法1 简单方式 FROM python 3 6 8 slim stretch ENV LANG en US UTF 8 LC ALL en US UTF 8 COPY home code label recongnize RUN cp f
  • C#去掉字符串最后一个字符

    可以直接去掉 C 字符串的最后一个字符 有几种方法可以实现这个功能 方法1 使用 Substring 方法 string str Hello World string result str Substring 0 str Length 1
  • STM32单片机初学7-USART串口通信

    USART是Universal Synchronous Asynchronous Receiver Transmitter的英文缩写 意为通用同步 异步串行接收 发送器 它也是单片机中最常用通信方式之一 常用于单片机与上位机 蓝牙模块 GP
  • tomcat_jdbc配置

    tomcat jdbc配置 背景 最近在导入数据时经常出现connection has been closed的异常 排除了数据库8小时问题后 将wait timeout值设置了一个比较大的值 然并卯 最后捣腾到时数据库连接池上 最终通过增
  • 新星计划->线性表_定义+初始化->学习笔记~

    作者 芝士小熊饼干 系列专栏 数据结构 gt 线性表 支持我 点赞 收藏 留言 新星计划参与者 创作不易 十年运道龙困井 一朝得势入青云 金鲤岂是池中物 一遇风雨变化龙 线性表的机构特点 官方解释 线性表的顺序储存是指 在内存中用一组地址连
  • GLSL(着色器语言)

    GLSL 着色器语言 简介 OpenGLES的着色器语言GLSL是一种高级的图形化编程语言 其源自应用广泛的C语言 与传统的c语言不同的是 它提供了更加丰富的针对于图像处理的原生类型 诸如向量 矩阵之类 OpenGLES 主要包含以下特性
  • 【WebGL初学系列之一】WebGl基础知识

    一 WebGL简单介绍 在今年中 Web技术已经得到了巨大的发展 它们支持服务器和客户端之间的双向通讯 允许用户注册登录等等 而且Web应用程序提供丰富的用户界面 如图形图像 音频和视频等 与原生的应用程序相比 Web应用程序也存在着一定的
  • Springboot启动配置原理

    1Springboot启动配置原理 几个重要的事件回调机制 配置在META INF spring factories ApplicationContextInitializer SpringApplicationRunListener 只需
  • react 一些基础知识面试题

    1 props和state相同点和不同点 render方法在哪些情况下会执行 不同点 1 props不可以在组件内部修改 但state可以在组件内部修改 2 可以从父组件修改自组件的props 而不能从父组件修改自组件的state 相同点
  • 软件测试的目的与原则

    软件测试的目的 基于Glen Myers和Hetzel两位学者的著名测试论点 将测试的目的分为两派 Glen Myers认为测试时为了发现错误而执行软件程序的过程 Hetzel认为软件测试是对软件建立信心的一个过程 对软件进行的测试越多 越
  • sql:Mysql create view,function,procedure

    use test create database Liber use Liber 顯示數据庫 20150210 Geovin Du 涂聚文 SHOW DATABASES drop table BookKindList 书目录 create