oracle数据库开发与应用 数据库编程 16PL/SQL编程PL/SQL编程的作用123也学过一些函数,如DECODE,具有简单的逻辑判断功能,但是,距离真正的结构化程序设计还相去甚远。于是提出这样一个问题:SQL语言是否像基本的高级程序语言一样,具有变量、运算、判断、循环等基本功能呢?本章学习的PL/SQL就解决这个问题。PL/SQL是一种程序语言,支持SQL语句的程序语言(ProgramLanguage)。PL/SQL在普通SQL语句的使用上增加了编程语言的特点,通过逻辑判断、循环等操作实现复杂的功能或者计算。
12PL/SQL是Oracle数据库独有的一种程序语言,是Oracle 数据库对 SQL语言的扩展。数据库不同,自有的PL/SQL语言语法可能有较大不同
PL/SQL 编程的优点123很明显,使用了PL/SQL编程之后,具有以下优点:能够使一组 SQL语句的功能更具模块化,便于维护,可以对程序中的错误进行自动处理,保证安全性。集成在数据库中,调用更快。通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,占用了大量的网络带宽, ...
oracle数据库开发与应用 游标和异常 19游标
oracle数据库开发与应用 触发器 181以前对数据进行操作,都是直接对数据表进行操作,只需要遵守数据表自身的约束条件就可以了。但是,实际工程中的数据操作,其对数据完整性要求的复杂度远远不止于此。
1234567例如,在数据库中,课程表内要插入一门课程,但是要求这门课程的任课教师不是符传谊。课程信息表结构如图18-1所示。按照常理,首先要在TTEACHER中查询符传谊的教师编号然后,使用约束来限制插入课程的任课教师编号。但是,查询得到结果来对数据表进行约束,需要手工去控制,非常麻烦,并且易出现错误。在之前的讲解中,介绍了表的约束CHECK。可以看出,在课程信息表中存储了教师编号,但是没有存储教师的姓名,而CHECK只能对本表中的列进行判断,无法到别的表中进行判断。于是,可以用到触发器
使用触发器12345触发器(TRIGGER),能够对数据操作、数据定义、系统事件进行校验、监控、记录,从而保证数据的完整性、提高数据库安全性。触发器的概念中,最重要的原理是“触发”,即,当发生指定的事件时,系统就会自动运行相应的程序块。以上概念的潜台词是触发器不能手工调用,只能在某件事情(如添加、删 ...
数据库系统-常用用法积累Delete注意1删除重复邮件,保留最小的id email 来自leecode
1234567891011# Write your MySQL query statement belowdelete from Person where Person.id not in (select t.id from (select p2.id from Person p2where p2.email in (select p1.emailfrom Person p1group by p1.emailhaving count(*)=1)) t)
123如果不要貌似多余的select t.id from ( 会报错--MySQL 不允许在 DELETE 语句的 WHERE 子句中直接使用正在被更新的表。
12345delete from Person where id not in ( select a.id from ( select min(id) from Person group by email a ))
1234DELETE p1 FROM Person ...
数据库系统-完整性约束参考csdn
列级约束和表级约束1234(1)对一个数据列建立的约束,称为列级约束(2)对多个数据列建立的约束,称为表级约束(3)列级约束既可以在列定义时声明,也可以在列定以后声明(4)表级约束只能在列定义后声明
1域完整性,实体完整性,参照完整性是关系模型中必须满足的完整性约束条件
实体完整性12345主键约束(PRIMARY KEY):确保每条记录的唯一性,主键字段必须是唯一的且不为空。可以是单个字段,也可以是多个字段的组合。唯一约束(UNIQUE):确保某个字段的值在整个表中是唯一的。自动增长约束(AUTO_INCREMENT):通常与主键一起使用,确保主键字段在新记录插入时自动增加。
主键约束1234唯一且不为空主键可以由一个字段组成,也可以由多个字段组成如果主键可以由一个字段组成既可以添加到列级也可以添加到表级如果由多个字段组成只能添加到表级
1234567891011121314151617181920create table 表名( 字段名 字段类型 primary key ); create table 表名( 字段名1 字段类 ...
数据库系统数据库系统概述123DB:按照数据结构来组织,存放和管理数据的仓库DBMS:是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库DBS:应用程序、数据库、数据管理员构成
关系数据库1234567数据模型:层次,网状,关系关系:主键,候选码,主属性,非主属性,外键主键只能有一个,属于候选码中的一个候选码:能够唯一标识一个元组主属性:任意候选码中的属性都是非主属性:不属于任意候选码属性中的一个
123NULLis null is not null
12域完整性、实体完整性、参照完整性是关系模型中必须满足的完整性约束条件用户自定义完整性:值唯一,[男,女],[1-50]
1234并,交,差,广义笛卡尔积,连接,选择,投影,除连接就是有条件的广义笛卡尔积投影就是只要某些列
1等值链接,自然链接,左外连接,右外连接,外连接
函数依赖参考
123函数依赖:在一个表里面,属性X可以映射到属性Y,也就是说知道了X就能确定Y,称X为决定因素平凡函数依赖:(SNO,CNO)->SNO,(SNO,CNO)->CNO非平凡函数依赖:
1234直接举栗子🌰:有一个 ...
黑马MySQL数据库从入门到精通-基础篇数据库相关概念数据库1Database,简称DB。按照一定的数据结构来组织、存储和管理数据的仓库。
数据库管理系统1Database Management System,一种操纵和管理数据库的大型软件,用于创建、使用和维护数据库,简称DBMS。
关系型数据库(RDBMS)1234概念: 关系型数据库,是建立在关系模型基础上,由多张相互连接的二维表组成的数据库。特点:1. 使用表存储数据,格式统一,便于维护2. 使用SQL语句操作,标准统一,使用方便
非关系型数据库(NoSQL)1234概念:Not-Only SQL,泛指非关系型数据库,是对关系型数据库的补充。特点:1. 数据结构灵活2. 伸缩性强
SQL12结构化查询语言(Structured Query Language),简称SQL。是一种操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
mysql数据库安装1大数据开发工程师那个课程的hive篇讲的很详细
启动
1234net start mysql80; --mysql80是安装时设置的mysql serv ...
游标1游标(CURSOR)是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、OPEN、FETCH和 CLOSE,其语法分别如下。
用法1234567891011声明游标DECLARE 游标名称 CURSOR FOR 查询语句;打开游标OPEN 游标名称;获取游标记录FETCH 游标名称 INTO 变量[,变量];关闭游标CLOSE 游标名称
案例1
1执行创建存储过程命令报错,声明变量和声明游标的顺序有要求
1上面的报错是因为执行存储过程后,当游标里的数据遍历完成后,由于是死循环当无数据时也执行,导致报错
异常处理程序
1上图是对前面的案例的改进
案例2123456789101112131415创建存储过程,里面使用游标,对每一行进行数据修改create procedure a()begin declare cno int; declare sno int; declare my_cursor cursor for select cno,sno from t; open my_cursor; fetc ...
黑马MySQL数据库从入门到精通-基础篇 事务事务1事务是一组操作的集合,这组操作,要么全部执行成功,要么全部执行失败。
事务操作12START TRANSACTION;--开启事务COMMIT/ROLLBACK;--提交/回滚事务
并发事务问题123脏读:一个事务可以读取另一个事务未提交的数据不可重复读:一个事务两次相同操作得到不同的结果(两次时间间隙有另一个事务进行数据操作)幻读:例如一个事务查询没有对应数据(此时另一个事务进行数据插入),然后进行数据插入,提醒已有对应数据,但是查询也还是没有(可重复读实现)
隔离级别1234read uncommitread commitrepeatable readserializable
12345 脏读 不可重复读 幻读read uncommit v v vread commit x v vrepeatable read x x vserializable x x x
123456789MySQL的默认事务隔离级别是 REPEATABLE READ。这意味着,在一个 ...
黑马MySQL数据库从入门到精通-运维篇 1日志主从复制概述12使得从库和主库的数据保持同步主从复制是指将主数据库的DDL和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
1MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
优点1234MySQL主从复制的优点主要包含以下三个方面:主库出现问题,可以快速切换到从库提供服务。实现读写分离,降低主库的访问压力。(主库执行DDL、DML,从库执行DQL)可以在从库中执行备份,以避免备份期间影响主库服务。(从库加全局锁之后还是可以读)
原理
123从上图来看,主从复制分成三步:1.Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。2.从库读取主库的二进制日志文件Binlog ,写入到从库的中继日志Relay Log。3.slave重做中继日志中的事件,将改变反映它自己的数据
搭建
1学习建议使用直接关闭防火墙,生产中使用开放端口
12systemctl stop firewal ...






