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数据库学习总结的更多相关文章

  1. 推荐一个Oracle数据库学习网站

    推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...

  2. Oracle数据库学习(一)

    Oracle数据库由甲骨文公司开发,是基于对象的关系型数据库:下面是简单的学习数据库操作等知识. 1.SQL单表查询(设一个表名为tab) (1)查询所有记录 select * from tab(一般 ...

  3. Oracle数据库学习笔记

    创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...

  4. Oracle数据库学习第一天

    crud 增删改查 create read update delete1--oracle数据库的安装 系统默认创建两个用户 sys和system 密码自定义 超级管理员:sys 管理员:system ...

  5. ORACLE数据库学习之备份与恢复

     oracle数据库的备份与恢复 第一部分:数据库的备份 备份的必要性 因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含 ...

  6. ORACLE数据库学习之逻辑结构

     逻辑结构 数据库逻辑结构包含表空间.段.范围(extent).数据块和模式对象. (一)表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备.(TABLES ...

  7. ORACLE数据库学习之体系结构

     Oracle体系结构 ORACLE数据库体系结构决定了oracle如何使用网络.磁盘和内存.包括实例(instance),文件(file)和进程(process不包括后台进程)三部分. 实例:每 ...

  8. oracle数据库学习

    trunc(number[,decimals])--number 待做截取处理的数值:decimals 指明需保留小数点后面的位数     CREATE PUBLIC DATABASE LINK Co ...

  9. Oracle数据库学习(一)安装和简单使用

    新公司的新项目,需要用到Oracle数据库,所以现在便来解除此数据库,不得不说,这个数据库还这是麻烦. 安装倒是简单,就是中间会遇到各种问题. 安装步骤参考:https://blog.csdn.net ...

  10. Oracle数据库学习(四):学习中的遇到的问题

    一.xhost图形化界面安装问题 问题1:运行xhost +命令,出现命令没有找到错误 原因:Linux系统没有安装xhost图形化包. 解决办法:安装xhost图形化包,命令如下: yum what ...

随机推荐

  1. 安装MacOS - 初学者系列 - 学习者系列文章

    上次安装了个VMWare Workstation 17.5.0的精简注册版,昨天打开软件,发现竟然支持了MacOS操作系统了,所以就想把安装的过程记录一下. 1. 准备虚拟机: 1) 下载精简版: 从 ...

  2. Java8新特性Optional

    Optional类的方法 1.empty private static void createNullOptional() { // 创建一个空的Optional实例 // 方式一 Optional& ...

  3. 使用Redis实现一个分布式的全局ID

    当然实现方式有很多中,这里主要是记录一下使用Redis的实现方式 import lombok.extern.slf4j.Slf4j; import org.springframework.beans. ...

  4. 经典卷积神经网络LeNet&AlexNet&VGG

    LeNet LeNet-5是一种经典的卷积神经网络结构,于1998年投入实际使用中.该网络最早应用于手写体字符识别应用中.普遍认为,卷积神经网络的出现开始于LeCun等提出的LeNet网络,可以说Le ...

  5. vue3组合式api生命周期

    生命周期钩子函数 Vue3:https://cn.vuejs.org/api/composition-api-lifecycle.html Vue2:https://v2.cn.vuejs.org/v ...

  6. 用CloudDrive将阿里云、天翼云、115挂载为电脑本地硬盘

    用CloudDrive将阿里云.天翼云.115挂载为电脑本地硬盘 写在前面 它可以把各大在线网盘,直接变成电脑本地硬盘,俗称"网盘挂载".这在一定程度上,确实能缓解存储紧张问题,瞬 ...

  7. ElasticSearch的日志配置

    ElasticSearch默认情况下使用Log4j2来记录日志,日志配置文件的路径为$ES_HOME/config/log4j2.properties,配置方法见Log4j2的官方文档. 参考path ...

  8. 文心一言大模型-function Calling的应用

    "大模型的函数调用"(Large Model Function Calling)是一个涉及到在大型人工智能模型,如 GPT-4 或类似的高级深度学习模型中使用函数调用的概念.在这种 ...

  9. JavaScript实现:如何写出漂亮的条件表达式

    摘要:就让我们看看以下几种常见的条件表达场景,如何写的漂亮! 本文分享自华为云社区<如何写出漂亮的条件表达式 - JavaScript 实现篇>,原文作者:查尔斯. 条件表达式,是我们在c ...

  10. 云图说|玩转华为HiLens之端云协同AI开发

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为HiLens ...