保险业务 :

表结构 :

sql语句 : 
/*1. 根据投保人电话查询出
投保人 姓名 身份证号 所有保单 编号 险种 缴费类型*/
SELECT
t2.cust_name,
t2.idcard,
t4.pro_id,
t5.pay_type_name,
t6.protype_name
FROM
contact t1, -- 联系表
customer t2, -- 客户表
holder t3, --
product t4,
pay_type t5,
protype t6
WHERE
t1.contact_text = '15987654565'
AND t1.cust_id = t2.cust_id
AND t3.cust_id = t2.cust_id
AND t3.pro_id = t4.pro_id
AND t4.pay_type = t5.pay_type_id
AND t4.pro_type = t6.protype_id

/*
2. 根据保单号 查询 保单号 保单险种 
投保人 姓名 身份证号 被保人 姓名身份证号 和受益人的姓名身份证
*/
SELECT
t1.pro_id,
t1.pro_type,
c1.cust_name,
c1.idcard,
c2.cust_name,
c2.idcard,
c3.cust_name,
c3.idcard
FROM
product t1, 
holder t2,
insurer t3,
benefit t4,
customer c1,
customer c2,
customer c3
WHERE
t1.pro_id = '1100012313441122'
AND t1.pro_id = t2.pro_id
AND t2.cust_id = c1.cust_id
AND t1.pro_id = t3.pro_id
AND t3.cust_id = c2.cust_id
AND t1.pro_id = t4.pro_id
AND t4.bene_id = c3.cust_id

/*
4. 找到 所有 投保人 被保人 受益人都是同一个人的 保单
*/
select * from product t1 ,holder t2, insurer t3, benefit t4
where t1.pro_id = t2.pro_id
and t1.pro_id = t3.pro_id
and t1.pro_id = t4.pro_id
and t2.cust_id = t3.cust_id
and t3.cust_id = t4.bene_id

/*
6 找到 各险种中 保费最多的 前三张保单 (分组后排序)*/
select * from(
select row_number() over(partition by pro_type order by premium desc) rn ,
product.* from product 
) where rn<=3

//============================================

-- 关于时间 的比较
select * from product where pro_start_date < to_date('2017-04-10 23:12:12','yyyy-mm-dd hh24:mi:ss')
/* 关于时间和字符串的转换

mm 月份 注意不是 MM
mi 分钟

hh24 24小时的小时
hh 12小时的小时

字符串 不能超过 格式的长度 
*/
视图
一 : 什么是视图 view

视图(view),也称虚表, 数据不占用物理空间。
视图只有逻辑定义。每次使用的时候,只是重新执行SQL。
一个视图 可以插叙多张表 查询的每张表 叫做基表
修改视图的数据 基表的数据也会改变

二 : 试图的作用 
1. 简化查询
2. 规避敏感列
3. 简化权限管理 增加安全性

三: 创建视图 用户需要拥有 create view 权限 grant create view to USERNAME; 
-- 授权时 必须使用管理员权限

四 语法:
create [ or replace ] [ force ] view [schema.]view_name
[ (column1,column2,...) ]
as 
select ...
[ with check option ] [ constraint constraint_name ]
[ with read only ];
tips:
1 or replace: 如果存在同名的视图, 则使用新视图"替代"已有的视图
2 force: "强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限
3 column1,column2,...:视图的列名, 列名的个数必须与select查询中列的个数相同; 
如果select查询包含函数或表达式, 则必须为其定义列名.此时, 既可以用column1, column2指定列名, 也可以在select查询中指定列名.
4 with check option: 指定对视图执行的dml操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行"检查",
要求增删改操作的数据, 必须是select查询所能查询到的数据,否则不允许操作并返回错误提示. 默认情况下, 
在增删改之前"并不会检查"这些行是否能被select查询检索到. 
5 with read only:创建的视图只能用于查询数据, 而不能用于更改数据.

五 : 示例 : 
create view customer_contact_inner
as 
select t1.cust_name custname,
t1.cust_id custid,
t1.idcard idcard,
t1.age age,
t1.sex sex,
t1.brith birth,
t2.contact_type contacttype,
t2.contact_text text
from customer t1, contact t2
where t1.cust_id = t2.cust_id

select * from customer_contact_inner where custname = '张效民'
这样就减少了查询的逻辑语句

SQL强化(一)保险业务的更多相关文章

  1. SQL强化练习(面试与学习必备)

    一.经典选课题A 1.1.请同时使用GUI手动与SQL指令的形式创建数据库.表并添加数据. 题目:设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教 ...

  2. SQL强化(三) 自定义函数

    ---恢复内容开始--- Oracle中我们可以通过自定义函数去做一些逻辑判断,这样可以减少查询语句,提高开发效率 create  -- 创建自定义函数 or replace -- 有同名函数就替换, ...

  3. SQL强化(二) 在Oracle 中写代码

    一  : 关于查询中的转换 -- 字符串转换 一 : decode 函数 转换 SELECT DECODE ( PROTYPE.PRO_TYPE_DATE, 'L', '长', 'm', '短', ' ...

  4. 基本的sql 语句

    1,登陆数据库:mysql -u root -p2,退出数据库:exit quit ctr+d3,创建数据库:create database 数据库名 charset=utf84,使用数据库:use ...

  5. 数据库语言sql

    数据库语言SQL SQL的形式 交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释 嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使 ...

  6. 一个小时学会MySQL数据库

    随着移动互联网的结束与人工智能的到来大数据变成越来越重要,下一个成功者应该是拥有海量数据的,数据与数据库你应该知道. 一.数据库概要 数据库(Database)是存储与管理数据的软件系统,就像一个存入 ...

  7. [工具]K8tools github/K8工具合集/K8网盘

    K8tools 20190428 声明: 工具仅供安全研究或授权渗透,非法用途后果自负. 博客: https://www.cnblogs.com/k8gege 下载: https://github.c ...

  8. 【转载】一个小时学会MySQL数据库

    一个小时学会MySQL数据库   目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数 ...

  9. 3sql

    -------------------- 三范式-- 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列. -- 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个 ...

随机推荐

  1. geoserver集成以及部署arcgis server瓦片数据

    关注重点: 一般来说,geoserver是不支持arcgis server格式瓦片数据部署的,至少我本机的geoserver版本(2.8.5)以及之前的版本并没有集成进来,不知道目前官网的最新版是否支 ...

  2. 论文笔记-Squeeze-and-Excitation Networks

    作者提出为了增强网络的表达能力,现有的工作显示了加强空间编码的作用.在这篇论文里面,作者重点关注channel上的信息,提出了"Squeeze-and-Excitation"(SE ...

  3. 【开源】AspnetCore 2.0 自动API文档生成组件,支持protobuffer

    本文地址 http://www.cnblogs.com/likeli/p/8204054.html 关于 API文档自动生成,用于对APP端的开发帮助文档生成,默认ProtoBuffer传输格式. 本 ...

  4. c# 去除字符串中重复字符

    String.Join 和 Distinct 方法 https://www.cnblogs.com/louby/p/6224960.html 1.在写程序中经常操作字符串,需要去重,以前我的用方式利用 ...

  5. 笔记-CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况

    //CGRectInset 将原来的矩形放大或者缩小,正表示缩小,-表示放大. CGRect rect= CGRectMake(20, 50, 100, 80); CGRect rect1=CGRec ...

  6. C#语言和SQL Server第十三 十四章笔记

    十三章  使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章:                                                       ...

  7. 自己做一台3D打印机到底有多难?(附教程)

    •    微博: 小样儿老师2015 初识 3D打印技术,即快速成形技术,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术,3D打印机则出现在上世纪9 ...

  8. C#面向插件级别的软件开发 - 开源研究系列文章

    在现在的面向对象的分析与设计软件开发过程中,最开始就是面向对象的软件开发.但是,在实际的软件开发过程中,很多都是面向接口的开发方式,这种是一种面向对象开发的模式.但是,今天笔者给大家带来的是面向插件的 ...

  9. Presto集群部署

    前言: 随着大数据的普及,大部分企业的大数据查询与统计渐渐出现瓶颈.虽说存储方面有分布式的HDFS,HBSE,MongoDB等可以应对,但是面对千万级别(1x10^7)界别的数据量查询时,以上组件也不 ...

  10. checkbox对齐-复选框图标

    checkbox对齐-复选框图标 一般开发过程中,我们直接使用<input type="checkbox"/>这样出现的复选框,设计师一般都说不好看 而让我们按照设计稿 ...