Oracle数据库学习总结
SQL 笔记
ch3_cn
1.数据类型记录
char(n) 定长字符
varchar(n) 可变长字符
numeric(p,d) 定点数,总位数p,小数点后位数q
float(n) n位浮点数
2.建表
create table table_name(
id varchar(8),
dept_name varchar(30),
grade numeric(2,1),
primary key (id),
foreign key(dept_name) references department);
3.表的更新
--插入(1)
insert into course
values ('CS-437', 'Database Systems', 'Comp. Sci.');
--插入(2)
insert into course (course_id, title, dept_name, credits)
values ('CS-437', 'Database Systems', 'Comp. Sci.', null);
--更新(一般)
update instructor
set salary = salary * 1.05
where salary < 70000;
--更新(case表达式)
UPDATE instructor
SET salary =
CASE
WHEN salary <= 100000 THEN salary * 1.05
ELSE salary * 1.03
END
--删除(系统一行一行删)
delete from student (where)...
--删除(删除内容定义,释放空间)
drop table student
4.表的查询
select A1,A2,...,An
from r1,r2,...,rm
where p
Ai 属性 ri表 P逻辑谓词(sql中大小写不敏感)
5.是否去重及其他常见
--去重
select distinct name
from student
--不去重
select all name
from student
--所有属性
select * from student
--Null
--is null 和 is not null
6.字符串匹配运算like 通配符
% 若干任意字符
__ 一个任意字符
\ 转义前缀符
7.排序
(1)desc 降序 asc 升序(默认)
(2)多列排序(第一优先级,第二优先级……)
(3)可用数字指代(第几列)
8.between 比较运算(Oracle不支持)
x between a and b 相当于 x >= a and x <= b
9.集合运算
(1)并 union (或,和)
(2)交 intersect (都,且)
(3)差 except (oracle用minus代替) (a有,但b没有)
10.聚集函数
avg :平均值(只能用于数字)
min :最小值
max :最大值
sum :求和(只能用于数字)
count :计数(会忽略空值行)
11.聚集函数常见子句
(1)having 子句和 group by 子句
--查询所有平均工资超42000的院系和平均工资
select dept_name, avg (salary) as avg_salary
from instructor
group by dept_name
having avg (salary) > 42000;
Tips : where子句在分组之前过滤,having子句在分组之后过滤
12.嵌套子查询 标量子查询
(1)SQL提供嵌套子查询的机制。子查询就是在select-from-where 表达式中嵌入另外一个查询。
(2)标量子查询:返回单值的子查询。
13.集合成员 集合比较
(1)in 和 not in
(2)some(<, 小于等于, >,大于等于, =,不相等 )
(3)all (<, 小于等于, >,大于等于, =,不相等 )
14.空集测试
(1)exists r ---> r不为空
(2)not exists r ---> r为空
(3)使用not exists 替代not in , not exists 的执行效率更高
15.With子句(Mysql 不支持)
(1)with子句提供一个方法,可以定义一个临时的视图,这个关系只用于 with子句存在的这个查询中。
(2)当你需要对子查询多次引用的时,用with子句,否则没有必要。
--查询每年课程的授课人次超过本课程开设院在本年开设课程的修课总人数
--1/3的课程名,年份,修课人次,本院课程总修课人次,所占百分比
WITH ta
AS ( SELECT title,
year,
dept_name,
COUNT (*) cnt
FROM takes NATURAL JOIN course
GROUP BY title, year, dept_name),
tb
AS ( SELECT dept_name, year, SUM (cnt) total
FROM ta
GROUP BY dept_name, year)
SELECT ta.title,
ta.year,
ta.dept_name,
cnt,
total,
ROUND (cnt / total * 100, 0) || '%' ratio
FROM ta, tb
WHERE ta.dept_name = tb.dept_name
AND ta.year = tb.year
AND ta.cnt * 3 > total;
16. 交叉表查询
--Oracle特有
SELECT *
FROM scores PIVOT (MAX (score) FOR
course IN ('C', 'DB', 'English'));
--通用
select name,
max(case course when 'C' then score else null end) C,
max(case course when 'DB' then score else null end) DB,
max(case course when 'Eng' then score else null end) Eng
from scores
group by name;
(1)case表达式,oralce可以用decode函数,mysql可以用if函数替代
ch4_cn
1.联结
(1)内联 Inner join 联结 join 外联 Outer join
Oracle数据库学习总结的更多相关文章
- 推荐一个Oracle数据库学习网站
推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...
- Oracle数据库学习(一)
Oracle数据库由甲骨文公司开发,是基于对象的关系型数据库:下面是简单的学习数据库操作等知识. 1.SQL单表查询(设一个表名为tab) (1)查询所有记录 select * from tab(一般 ...
- Oracle数据库学习笔记
创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...
- Oracle数据库学习第一天
crud 增删改查 create read update delete1--oracle数据库的安装 系统默认创建两个用户 sys和system 密码自定义 超级管理员:sys 管理员:system ...
- ORACLE数据库学习之备份与恢复
oracle数据库的备份与恢复 第一部分:数据库的备份 备份的必要性 因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含 ...
- ORACLE数据库学习之逻辑结构
逻辑结构 数据库逻辑结构包含表空间.段.范围(extent).数据块和模式对象. (一)表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备.(TABLES ...
- ORACLE数据库学习之体系结构
Oracle体系结构 ORACLE数据库体系结构决定了oracle如何使用网络.磁盘和内存.包括实例(instance),文件(file)和进程(process不包括后台进程)三部分. 实例:每 ...
- oracle数据库学习
trunc(number[,decimals])--number 待做截取处理的数值:decimals 指明需保留小数点后面的位数 CREATE PUBLIC DATABASE LINK Co ...
- Oracle数据库学习(一)安装和简单使用
新公司的新项目,需要用到Oracle数据库,所以现在便来解除此数据库,不得不说,这个数据库还这是麻烦. 安装倒是简单,就是中间会遇到各种问题. 安装步骤参考:https://blog.csdn.net ...
- Oracle数据库学习(四):学习中的遇到的问题
一.xhost图形化界面安装问题 问题1:运行xhost +命令,出现命令没有找到错误 原因:Linux系统没有安装xhost图形化包. 解决办法:安装xhost图形化包,命令如下: yum what ...
随机推荐
- 【C#】【IO】【Threading】【实例】工作报表前的本地数据聚合操作
<工作记录--Report> 报表前的数据获取操作是高重复性的,今天差不多完成了脚本,下述是代码: 1 // See https://aka.ms/new-console-template ...
- Layui treeTable 使用【数据不显示、子级不显示】
//返回JSON数据类 public class LeaveMessageTreeTable { public LeaveMessageTreeTable() { this.children = ne ...
- Spring源码学习之Web数据绑定器WebDataBinder
WebDataBinder 1.描述 特殊的数据绑定器用于从web请求参数到JavaBean对象的数据绑定.专为web环境,但不依赖于Servlet API;作为更具体的DataBinder变体的基类 ...
- vulnhub - Aragog - writeup
信息收集 目标开放了80.22端口. root@Lockly temp/tmp » arp-scan -I eth1 -l Interface: eth1, type: EN10MB, MAC: 00 ...
- 设置CentOS7使用代理服务器上网
用三种方法设置CentOS7使用代理服务器上网 https://zhangyujia.cn/?p=1206 https://www.cnblogs.com/a-du/p/8964048.html 一. ...
- java框架Mybatis的第一个程序
1:什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配 ...
- Git使用经验总结2-配置用户名邮箱
可以使用git config指令来配置一些设置,比如配置用户名邮箱.在开发团队要求成员配置用户名和邮箱是很有用的,可以配合工具区分成员的代码,以及将代码中的问题发送给成员的邮箱中. 查看当前Git的用 ...
- 海量监控数据处理如何做,看华为云SRE案例分享
摘要:openGemini的设计和优化都是根据时序数据特点而来,在面对海量运维监控数据处理需求时,openGemini显然更加有针对性. IT运维诞生于最早的信息化时代.在信息化时代,企业的信息化系统 ...
- 开抢| 华为开发者大会2021(Cloud)早鸟票来了!
他们,是技术的引领者 他们,是科学的追随者 他们用代码守护蓝色星球的生态 破解宇宙深处的密码 化解城市生活的不畅 捉摸自然气候的脾性 ...... 这些改变世界的成果背后 每一个开发者都了不起 --那 ...
- 如何使用参数化查询提高Cypher查询的性能
摘要:在DBMS中,参数化查询被视为一种有效预防SQL注入攻击的手段. 本文分享自华为云社区<使用参数化查询提高Cypher查询的性能:以华为云图引擎GES为例>,作者: 蜉蝣与海. 在D ...