SQL强化

保险业务 :

表结构 :

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 = ‘张效民‘
这样就减少了查询的逻辑语句

时间: 2024-10-16 08:05:49

SQL强化的相关文章

SQL强化练习

SQL语句强化练习题及答案 一.简单查询 1.列出全部学生的信息. SELECT * FROM 学生 2.列出软件专业全部学生的学号及姓名. SELECT 学号,姓名 FROM 学生 WHERE 专业="软件" 3.列出所有必修课的课号. SELECT DISTINCT 课号 FROM 必修课 4.求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出. SELECT 学号,成绩 FROM 选课 WHERE 课号="1" AND 成绩>80 ORDER

SQL强化(一)保险业务

保险业务 : 表结构 : sql语句 : /*1. 根据投保人电话查询出投保人 姓名 身份证号 所有保单 编号 险种 缴费类型*/SELECTt2.cust_name,t2.idcard,t4.pro_id,t5.pay_type_name,t6.protype_nameFROMcontact t1, -- 联系表customer t2, -- 客户表holder t3, --product t4,pay_type t5,protype t6WHEREt1.contact_text = '159

SQL 强化练习 (一)

当然, 说明一下, 所有的内容都是网上搬砖的, 也是用作自己练习用的. 我觉得如何去写 sql 这个思考的过程, 远比最终写出来更重要, 毕竟, 我最近有在公司看到了 2000多行的一个 sql. 我觉的, 这样神级的存在, 也是, 九层之台,起于垒土. 而最为重要的是理清楚逻辑. 我最真实的情况是, 一般在做一些数据处理的时候, 我用 pandas 几乎能完成任何的数据操作. 根本原因在于,我头脑中, 始终有一个 DataFrame 的影像. 我始终能知道我当前的对象, 会是怎样的 DataF

SQL 强化练习 (二)

继续 sql 搞起来, 面向过程来弄, 重点是分析的思路, 涉及的的 left join, inner join, group by +_ having, case when ... 等场景, 也是比较详细地记录整个分析的过程, 虽然实现并不难. 数据关系 这个是都次都要重复提及的. 只有熟练知晓表结构, 才能做各种查询呀. 需求 第 02 题 查询平均成绩大于80分的学生的学号和平均成绩. 分析 只用使用一个 score 表就搞定了. mysql> select * from score; +

SQL 强化练习(三)

继续来练习 sql 查询, 似乎也没有什么窍门, 跟着写多了, 自然就记住了, 这个帖子, 来记录一波, 模糊查询 like; 四表关联查询: 老师名 -> 老师id -> 课程id -. 学生 id -> 学生表 表关系 需求01 查询姓 "王" 的学生个数; 查询姓名中包含 "王" 的学生信息; 查询姓名为 3个字的学生姓名和性别; 查询姓张的老师中, 不重名的老师个数; 分析 主要是关于模糊查询这块, 在 mysql 中, 即关于关键字 &q

SQL 强化练习 (五)

果然日常练练这些 sql 是非常有必要的, 这几日的报表开发, 用一款过程软件 fineReport, 相对于我之前用 Tableau 来做报表, 这个帆软, 确实更加适合中国人哦, 而Tableau只是专门用来展示而已. 我感觉 FR, 还是有一定门槛的, 首先就是 SQL, 大量的操作都是需要写 sql 来完成的, 我还蛮喜欢的其实, 很灵活的嘛. 其实是要理解 WEB, 比如做填报, 就是要先弄个页面, 然后设计数据库, 单元格值回写数据库, 数据库查询报表展示... 这个就是 WEB 呀

sql 强化练习 (七)

继续 sql 练习, 不能停下来的哦, 通过这一系列的搬砖操作, 相信在日常业务的sql 应该是能达到相对清楚地写出来的, 尤其是我做数据分析这块, 感觉真的每天都要写才行, 之前都是用 Python 来轻松搞定, 但仔细一想, sql 才是最通用的哦, sql 熟练了, 我感觉, 数据分析的基础工作就已经完成一半了, 剩下的指标计算, 这些不就是简单的 加减乘除而已, 分分钟脚本批量处理它. 表关系 需求 查询 和 0001 号同学, 所学课程 完全相同的 其他同学的学号. 分析 先查出 00

SQL 强化练习 (十)

原文地址:https://www.cnblogs.com/chenjieyouge/p/12681282.html

基本的sql 语句

1,登陆数据库:mysql -u root -p2,退出数据库:exit quit ctr+d3,创建数据库:create database 数据库名 charset=utf84,使用数据库:use 数据库名5,删除数据库:drop database 数据库名 6,创建表:create table 表名(字段名,字段类型,约束条件)7,添加字段:alter table 表名 add 字段名 字段类型 约束条件8,修改字段类型:alter table 表名 modify 字段名 字段类型 约束条件