sql查询技巧指南
2024-09-01 06:10:45
sql定义:
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
概述
作为一个非DBA,我们日常中用到sql最多得到是查询,比说内连,外联,交并补之类的,再多一些就是插入,更新,删除很少用,一般都是逻辑查询。像存储过程,触发器很少用的,这里点到为止,不深究。
备注:本人一年经验,超级小菜鸟,一点小建议,若有错误欣然悔改,若是喷子。。。(大哥我错啦!!!)
学习方法
重复练习就不赘述啦。
第一:练习之前语法一定要掌握清楚,这里需要注意的是不同数据库有自己的方言、或者特殊的函数。
举个例子:oracle的rank,mysql就没有这个。
第二:练习的时候要理解你写的sql要做什么,要学会解析成sql,具体做法按照以下步骤。
举个例子:看下面这道题
查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
题目:查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
步骤一:解析这个需求,提炼出查询条件;
目的:查找(也可以理解成查询后要显示的字段)(领导当前薪水详情),(对应的部门编号)
提取筛选条件:1:各个部门(假定主表是salaries),意味着我们需要关联部门表,让部门和人员薪水信息是 1:1,关联条件就是人员no一致;
2:当前(to_date='9999-01-01'),一个where条件
3:隐含一个条件,salaries中也有一个to_date,也要限定一下,一个where条件 步骤二:组合成sql语句,如下
select s.*,d.dept_no
from salaries s
--左连接
left join dept_manager d
--连接体哦阿健
on s.emp_no = d.emp_no
--筛选条件
where s.to_date = '9999-01-01'
and d.to_date = '9999-01-01'
第三步:学习优化,在这个过程中学习一下测试的方法
declare
i number := 1;
j number := 1;
cout number := 1;
begin
for i in 1..10 --循环开始
loop
for j in 1..2500000
loop
cout := cout +1;
insert into sc values(cout,cout,cout,dbms_random.value(100,0));--这个随机函数
end loop;
end loop;
commit; --最后一起提交
end;
刷题顺序建议
也没什么顺序啦,就是按照 查询->增/删/改->触发器(听着牛逼,其实用到很少,可能是我太菜,目前没遇到过)
每道题目详细解析地址
截图留念 11:30:06
最新文章
- Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压
- 连接sql server的语句
- SQL UNION 操作符
- CSS2伪类选择器要点
- POJ 2689
- 新开窗口不被拦截的方法-window.open和表单提交form
- 防范DDOS攻击脚本
- 表单数据验证方法(二)——ASP.NET后台验证
- so beautiful so white
- UML作业第一次:UML用例图绘制
- python检查URL是否能正常访问
- SpringMVC(二四) 视图解析流程
- template-web.js 引用变量、函数
- JavaScript 是如何工作的: 事件循环和异步编程的崛起 + 5个如何更好的使用 async/await 编码的技巧 - 学习笔记
- UI设计教程分享:banner设计
- Delphi 的多线程使用已经很简单了
- TensorFlow新版与旧版易出错的地方
- 【转】python中的对象拷贝
- bs的过滤器功能例子
- BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3) (转)