3月17日,第二天的日子....

本文介绍了SQL的基础知识,包括多表查询、左连接与右连接的使用方法,以及分组统计等高级查询技巧。此外,还讲解了子查询的应用场景和数据库更新操作的基本语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天所讲的知识点(如果表格不够,可在备注中继续填写)
A 多表查询
B 左、右连接
C SQL:1999语法
D 组函数
E 分组统计与分组函数
F 子查询
G 数据库的更新操作
H 事物处理
I ROWNUM




我对知识点的分析
A 多表查询的语法格式:
SELECT [DISTINC] * | [列1 别名1,列2 别名2,...]
FROM 表名称1 别名1,表名称2 别名2,...
WHERE 条件(s)
ORDER BY 排序的字段1 [ASC|DESC] , 排序的字段2 [ASC|DESC];
说明:
多个表之间通过相同的字段进行关联;
在使用多表查询的时候一般情况下都会写一个别名,这样使用会比较方便;
自己与自己关联,采用别名进行区别;
多表查询的时产生的笛卡尔积,通过关联字段进行条件的过滤;
如果使用“SELECT *”则关联字段列会显示两次,如果避免,就需要一一列出需要显示的字段;
B (1)在多表查询的时候,根据关联字段的条件过滤会比较严格的筛选数据,然而有的时候需要以其中一个表的该关联字段为准,显示其所有取值,这个时候就需要用到左、右连接;
(2)• 如果使用“(+)”出现在了等号的左边,则表示的是右连接
• 如果使用“(+)”出现在了等号的右边,则表示的是左连接
(3)(+)此用法只在oracle中有效
C SELECT table1.column,table2.column
FROM table1 [CROSS JOIN table2]|
[NATURAL JOIN table2]|
[JOIN table2 USING(column_name)]|
[JOIN table2 ON(table1.column_name=table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2 ON(table1.column_name=table2.column_name)];
D COUNT() 求出一共有多少条记录
SUM() 求出一列的数据总和,基本上在数字列上使用
MAX() 求出最大值
MIN() 求出最小值
AVG() 求出平均值
E 分组统计:
SELECT 分组函数 | 分组条件
FROM 表名称1 别名1,表名称2 别名2,...
[WHERE 条件(s)]
[GROUP BY 分组条件 [HAVING 条件]]
[ORDER BY 排序的字段1 [ASC|DESC] , 排序的字段2 [ASC|DESC]];
说明:
(1)在使用分组的时候,SELECT语句后面只能跟上两种数据:分组函数、分组条件;
(2)分组的过滤条件如果需要使用分组函数,则必须写在HAVING后面,而HAVING必须出现在GROUP BY语句之后,否则无法使用;
(3)分组函数可以嵌套使用,但是嵌套之后的分组函数查询的结果中是不能包含分组条件的;
F 子查询即在select语句中嵌套了另一个select语句;
子查询在操作中分为以下三类:
• 单列子查询:查询的结果是一个内容,一行一列
• 单行子查询:查询的结果将返回多个查询的列
• 多行子查询:查询结果返回多行多列的内容
在子查询中还存在以下三种查询的操作符号:
• IN:表示在一个指定的范围中取值
• ANY:与查询结果中的每一个内容进行匹配,使用起来有三种形式:=ANY、>ANY(大于最小的)、<ANY(小于最大的)
• ALL:分为两种:>ALL(大于最大的)、<ALL(小于最小的)
G 数据库的更新操作:INSERT(增加)、UPDATE(修改、更新)、DELETE(删除)
INSERT INTO 表名称 [ (字段名称1,字段名称2,….) ] VALUES (值1,值2,…) ;
UPDATE 表名称 SET 字段1=值1,字段2=值2,… [WHERE 修改条件];
DELETE FROM 表名称 [WHERE 删除条件];
H 在Oracle中事务处理有两个核心的命令:
• ROLLBACK:回退、回滚
• COMMIT:提交
在事务的处理中也会出现一种称为死锁的情况。等待另外一个session更新数据库的提交操作执行。
I ROWNUM是一个隐藏的伪列,可为记录自动编号;
ROWNUM的作用可以完成部分的信息读取;
例如:现在就要求读取emp表中的前5条记录,
SELECT ROWNUM,empno,ename,job,sal,deptno FROM emp WHERE ROWNUM<=5 ;
如果现在假设要想取出的是6~10条?则只能通过子查询完成,在子查询中取出前10条记录,之后再从这10条记录中取出后5条。
SELECT temp.* FROM (SELECT ROWNUM rn,empno,ename,job,sal,deptno FROM emp WHERE ROWNUM<=10) temp WHERE temp.rn>5;


列出今天收获
A 多表查询
B 子查询
C 事务处理
D 数据库的更新操作:增加、修改、删除
E 分组统计


今天上课有些疲倦,在遇到难点的时候出现了脑子空白的现象,希望以后学习可以提高效率,尽量保证充足的休息时间。
和老师比起来我的敲代码的速度太慢,主要原因在于各种符号的输入总是需要看键盘,否则按键不准,以后需要努力多多练习。
今天回来找了一些oracle的学习资料,希望明天可以自学一些内容,然后把这两天做过的练习再练习一下,能够达到熟练的程度,特别在思路上能够清晰。
每天进步一点点,就是成功!(*^__^*) ……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值