Oracle数据库02
EXISTS子查询
特征:将主查询中的数据带到子查询中进行验证,如果验证成功则子查询返回true,当主查询接收到true的时候被验证的数据就显示,
如果在子查询中验证失败则返回false,当主查询接收到false的时候被验证的数据就不显示。
ROWNUM伪列
查询过程中动态的生成一个列(类似于一个字段,但不属于数据表),该列必须从1开始。
分页查询
currentPage:表示当前页(cp)
lineSize:表示每页显示的数据量(ls)
m=(currentPage-1)*lineSize+1
n=currentPage*lineSize
SqlServer使用top关键字去实现的。
⑤SELECT *
①FROM 数据来源
②WHERE 过滤条件
③GROUP BY 分组字段
④HAVING 对统计函数进行过滤
⑥ORDER BY 排序字段 排序的方式
⑦LIMIT m,n 从m开始向后取n个数据
m的含义表示从数据库的第m条开始查询(mysql中的第一条数据m==0)
n的还以是从第m条数据开始往后查询n条数据
m=(cp-1)*ls
n=ls
常用的sql语句
INSERT INTO 数据表(字段1,字段2,字段3,...字段n)VALUES(值1,值2,值3,...值n)
每个字段都需要插入数据,可以省略插入的字段(注意,省略了字段,插入的值一个都不能少,否则报错)。
INSERT INTO 数据表 VALUES(值1,值2,值3,...值n)
UPDATE 表名称 SET 字段1=新的值,字段2=新的值。。。字段n=新的值 WHERE 过滤条件
DELETE FROM 数据表 WHERE 过滤条件
序列的使用(保证主键数据不能重复)
删除序列:DROP SEQUENCE 序列名称;
创建序列:CREATE SEQUENCE 序列名称;
使用序列:INSERT INTO myemp(empno,ename,job) VALUES(序列名.nextval,'张三-1','职员');
INSERT INTO myemp(empno,ename,job) VALUES(1001,'ZHANGSAN-1','职员');
INSERT INTO myemp(empno,ename,job) VALUES(序列名.nextval,'zhangsan-1','职员');
DROP SEQUENCE empno_sequence;
CREATE SEQUENCE empno_sequence START WITH 1001;
INSERT INTO myemp(empno,ename,job) VALUES(empno_sequence.nextval,'张三-1','职员');
DROP SEQUENCE empno_sequence;
CREATE SEQUENCE empno_sequence INCREMENT BY 10 START WITH 1001; --从1001开始,每次增加10
INSERT INTO myemp(empno,ename,job) VALUES(empno_sequence.nextval,'张三-1','职员');
CREATE TABLE 表名称(字段1 字段类型,字段2 字段类型,。。。);
DROP TABLE teacher PURGE; --删除数据表teacher
CREATE TABLE teacher(tno NUMBER(4) --编号,。。。); ---创建数据表teacher
INSERT INTO teacher VALUES(1001,...);
INSERT INTO teacher(tname,tage,tdate) VALUES ('z老师',100,SYSDATE);
tno NUMBER(4) NOT NULL, --表示该字段不能为空(非空约束)
1、数据表创建的基本语法要记住,先删除后创建,创建表时可对字段添加约束条件,然后再插入数据。
2、非空约束,使用NOT NULL 实现,保证了指定字段插入的值不能为null
3、唯一约束,使用UNIQUE 实现,保证指定字段的数据不能重复
4、主键约束,使用 PRIMARY KEY 实现,保证了指定字段不能为null也不会重复,是非空和唯一约束的叠加。
自定义约束的名称,要使用CONSTRAINT来创建
CREATE TABLE teacher(tno NUMBER(4),
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE,
CONSTRAINT pk_tno PRIMARY KEY(tno), --创建主键约束
CONSTRAINT uk_tname UNIQUE(tname), --创建唯一约束
CONSTRAINT ck_tage CHECK(tage BETWEEN 0 AND 250)); --创建检查约束
1、如果要指定约束的名称,那么需要使用CONSTRAINT引导创建
2、检查约束我们只是作为语法提出,在开发中不会去使用,因为很耗费性能,如果有这样的需求是交给程序去实现。
使用外键约束保证了不合逻辑的数据不能插入数据表中。
1、外键约束指的是数据表中的某个字段的数据来源依赖于其他数据表中的某个字段的数据,也就是说当前的数据表中插入的数据必须在其他数据表中有记录
2、使用了外键约束之后,表之间就存在一定的依赖关系,依赖的数据表(引用其他表中数据的表)叫做子表或者从表,被依赖的数据表叫做父表或者主表
3、外键约束的语法
CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCE student(sno);
4、删除数据表的时候要先删除子表再删除父表
5、创建数据表的时候先创建父表再创建子表
级联操作是存在于主表和从表关系之中,当操作了主表中的数据则要求子表中的数据也随之更新或者删除。
注意:Oracle不支持级联更新,但mysql支持,在Oracle中使用级联更新需要使用触发器实现。
把数据操作和查询语句组织在pl/sql代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。(pl/sql只有oracle数据库有)。
NULL; --过程代码
END; --过程结束
/ --结尾加斜杠
为变量赋值使用的不是“=”而是“:=”
CREATE OR REPLACE PROCEDURE hello_say
AS
BEGIN
DBMS_OUTPUT.put_line('Hello world');
END;
/
--调用过程
BEGIN
hello_say();
END;
/
EXEC hello_say();
如果是OUT修饰的参数则表示可以被返回,如果不写默认就是IN。
例如:a IN NUMBER:=10, --是一个输入参数 表示调用过程的时候输入
c OUT NUMBER --是一个输出参数,该参数可以被过程返回
触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。
触发器分为语句级触发器(又叫表级触发器)和行级触发器。
new只出现在insert和update时,old只出现在update和delete时。
在insert时new表示新插入的行数据,在update时new表示要替换的新数据、old表示被更改的原来的数据,
在delete时old表示要被删除的数据。
CREATE OR REPLACE TRIGGER 触发器名(例如:emp_trigger)
BEFORE INSERT OR DELETE --在增加或者删除数据的时候触发
ON 数据表 (例如:emp) --表示触发器建立在emp数据表上
CREATE OR REPLACE TRIGGER 触发器名(例如:emp_trigger)
BEFORE INSERT
ON 数据表 (例如:emp)
FOR EACH ROW --表示行级触发器
1、如果需要对每一行数据做处理,使用行级触发器
2、语句执行完成后,做该语句的后续业务处理,用语句级触发器
Oracle数据库02的更多相关文章
- Oracle数据库该如何着手优化一个SQL
这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- Oracle Recovery 02 - 常规恢复之不完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例. 二.常规恢复之不完全恢复:部分数据丢失 2.1 重做日志文件 ...
- Oracle数据库全球化
一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...
- Linux环境下Oracle数据库启动停止命令
切换root至oracle数据库账号 su – oracle 查看数据库服务状态: ps -ef |grep oracle netstat –an|grep 1521 查看数据库监听状态: [orac ...
- Oracle数据库的启动与停止
oracle linux下开启与关闭 .启动ORACLE监听 首先要登录用户oracle:su - oracle oracle@localhost bin]$ lsnrctl --启动oracle监听 ...
- 600万用户数据导入MYSQL、MSSQL、Oracle数据库方法【转】
1.导入MySql数据库 参考文献:http://zhuaxia.org/blog/post/145 1.1.LOAD DATA INFILE语法 因为获得的数据库文件是一个文本文件www.csd ...
- 修改oracle数据库密码
1.用Xshell远程连接安装数据库的服务器,切换到安装oracle数据库的用户下,(我的oracle数据库就安装在oracle用户下) 命令: su - oracle; 2.进入oracle控制台 ...
- 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1
[绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...
随机推荐
- Windows下cpu使用的监控
这里有一篇来自微软的文章,主要讲WPA如何使用,但是前面关于进程调度的介绍很给力,非常好的学习操作系统的材料: https://msdn.microsoft.com/en-us/library/jj6 ...
- leetcode475
public class Solution { public int FindRadius(int[] houses, int[] heaters) { houses = houses.Distinc ...
- django多对多数据库建立 以及数据的传输 并进行增加 删除 修改
多对多数据库的建立 class Host(models.Model): nid = models.AutoField(primary_key=True) #自增id hostname = models ...
- AndroidStudio 中怎样查看获取MD5和SHA1值(应用签名)
曾经在Eclipse中我们获取MD5和SHA1非常easy就找到了例如以下图所看到的: 就能够在Eclipse中看到所须要调试的MD5和SHA1.可是在AndroidStudio中我找了一圈也没有发现 ...
- rdd去重
a=[[1,2,3,2,3,4],[3,4,5,6,7,5,3,2]]b=sc.parallelize(a) d=b.flatMap(lambda x:x) #铺平 ,形成一个rdd e=d.dis ...
- Redis 集群二
[Redis 集群二] 集群的客户端 Redis 集群现阶段的一个问题是客户端实现很少. 以下是一些我知道的实现: redis-rb-cluster 是我(@antirez)编写的 Ruby 实现, ...
- 用Diff和Patch工具维护源码
在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具 ...
- sql时间戳转日期格式
FROM_UNIXTIME(ctime, '%Y-%m-%d %H:%i:%s')
- [Selenium] 针对下拉菜单出现之后又立马消失的问题,通过Javascript改变元素的可见属性
public void clickDateDropDownButton() { SeleniumUtil.jsClick(driver, page.getDateDropdownButtonOfInv ...
- jquery,禁止冒泡和默认行为
如果在页面中重叠了多个元素,并且重叠的这些元素都绑定了同一个事件,那么就会出现冒泡问题.//HTML 页面<div style="width:200px;height:200px;ba ...