SQL编程和高级查询

article/2025/10/6 10:13:55

一、使用SQL操作表

1、SQL语言简介

 

2、数据库操纵语言

(1)INSERT命令

INSERT INTO grade VALUES (5,'五年级');--插入每一列
INSERT INTO grade VALUES (6,'六年级');
INSERT INTO grade VALUES (7,'七年级');
INSERT INTO student(stuNo,stuName,sex) VALUES (20145451,'大帅哥','男');--插入指定列

 (2)UPDATE命令

UPDATE student SET address='中国广东' WHERE stuNo='20145451';--改变单个列的值
UPDATE student SET gradeId=6,phone='110' WHERE stuNo='20145451';--改变多个列的值,逗号隔开

 (3)SELECT命令

简单查询数据操作:

SELECT * | DISTINCT column | expression alias --distinct表示不重复,expression表示列与常数组成的表达式,alias表示列的别名
FROM grade
WHERE condition
GROUP BY columns HAVING condition
ORDER BY columns ASC/DESC
CREATE TABLE stuInfo AS SELECT * FROM student;--利用现有的表创建新表,创建学生备份表
SELECT stuName "学  生" FROM student;--使用别名时,如果带有特殊字符(如空格),需要双引号
SELECT 'S:'||stuName "学  生" FROM student;
--|| 连接两个或多个字符串,或者连接字符串与数值

查询语句中运用算数运算符:(+  -  *  / ),算数表达式由number数据类型的列名、数值常量和连接它们的算数操作符组成。

查询语句中运用比较运算符:(=, !=, >,<, >=,<=, between...and...,in,like ,is null)

查询语句中运用逻辑运算符:and,  or,  not。

 (4)DELETE命令

DELETE FROM student WHERE stuNo='20145451';
DELETE FROM stuInfo;   --删除记录(可选择删除,可通过ROLLBACK回滚撤销删除)
TRUNCATE TABLE stuInfo;--删除记录(快速删除记录并释放空间,不使用事务处理,无法回滚)
DROP TABLE stuInfo;    --删除表(包括表的所有记录和表的结构)

二、使用SQL函数对表进行操作

1、SQL函数

Oracle SQL提供了用于执行特定操作的专用函数。函数接受一个或者多个参数并返回一个值。Oracle值的函数如下:

单行函数>>多行函数>>分析函数

2、单行函数

单行函数也称标量函数,对于从表中查询的每一行,该函数都返回一个值。单行函数可以出现在SELECT子句中,也可以用在WHERE子句中。单行函数大致可以划分为:字符函数、日期函数、数字函数、转换函数、其他函数等。

(1)字符函数:对字符数据类型进行操作,操作结果可能是字符数据类型,也可能是数字类型。

函数说明
lower(char)转换为小写
upper(char)转换为大写
initcap(char)首字母大写
replace (char,old_char,new_char)字符串替换
instr(char,substr)查找子串位置,从1开始
substr(char,begin_index,end_inex)截取字符串
concat(char1,char2)连接字符串
ltrim('123456','123')左裁剪    >>456
rtrim('123456','456')右裁剪    >>123

(2)数字函数:接受数字类型的数据并返回数字类型结果,可以精确到小数点后38位

(3)日期函数

(4)转换函数

(5)其他函数

3、聚合函数

聚合函数也称分组函数,基于数据库表的多行进行计算,返回一个结果,如对多行记录进行求和、求最大值运算。

sum()、avg()仅适用于数值型,而count()、max()、min()适用于任何数据类型。

在包含group by 子句的查询中,select子句中列表的项可以是分组函数,也可以是group by 子句中出现的列或表达式、常数 。Oracle为每组行使用分组函数,并为每组返回一个结果。

如果分组后还要按一定的条件对这些组进行筛选,只需要输出满足条件的组,则可以使用having子句来制定筛选条件。该子句位于group by 子句后面。

where子句和having子句的区别在于作用对象不同。where子句作用于基本表或者视图,从中选择满足条件的记录。having子句作用于组,从中选择满足条件的组。

4、分析函数

Oracle从8.1.6开始提供分析函数。分析函数是对一组查询结果进行运算,然后获得结果,从这个意义上,分析函数非常类似于聚合函数,区别在于每个组返回多个行,聚合函数每组返回一行。

聚合函数是对一个查询结果中的每个分组进行运算,并且对每个分组产生一个运算结果。

分析函数是对一个查询结果中的每个分组进行运算,每个分组对应的结果可以有多个。

三、查询

1、查询

2、子查询

(1)子查询概念

外部查询为父查询,内部查询为子查询。 

 (2)子查询实例

使用IN关键字的子查询

通过IN(或NOT IN)引入的子查询结果是一列零值或更多值。子查询返回结果之后,外部查询将利用这些结果。

使用比较运算符的子查询

当用户能确切知道内层查询返回的是单值时,可以用(=,!=,<>,>,>=,<,<=,!>,!<)等比较运算符。

使用ANY,ALL的子查询

子查询返回单值时可以用比较运算符,但返回多值时要用ANY或ALL修饰符,具体语义如下表:

其中,

=ANY 等价于IN,

<>ALL等价于NOT IN,

>ANY 等价于>MAX,

<ANY 等价于<MAX。

SELECT * FROM emp WHERE sal>ALL (SELECT sal FROM emp WHERE deptNo=20)AND deptNO<>20;--比20部门所有人工资都高的其他部门职员信息

使用EXISTS或NOT EXISTS的子查询

(3)子查询分类

3、连接

若一个查询同时涉及到两个或两个以上表,则成为连接查询。连接查询为关系型数据库的最主要查询,包括内连接,外连接,自连接,交叉连接查询等。

(1)内连接

内连接分为等值连接,不等值连接,自然连接。

等值连接:关联条件的运算符是用等号连接的。

SELECT ename,dname FROM emp e
INNER JOIN dept d
ON e.deptNo=d.deptNo;

不等值连接:在两个表中没有列的值直接对应相等,连接条件是除等号之外的其他操作符

SELECT e.ename,e.job,e.sal,s.grade FROM emp e
INNER JOIN salgrade s
ON e.sal BETWEEN s.losal AND s.hisal;

自然连接:在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将它们连接起来,并返回所有符合条件的结果。

SELECT * FROM emp NATURAL JOIN dept;

关于自然连接,我们并没有指定连接的条件,实际上Oracle自作主张的将emp表中的deptNo字段和dept表中的deptNo字段进行了连接。

(2)外连接

左外连接是指在关联过程中,已左边表为准,即使右边表没有满足连接条件的对应记录,左边也会出现在查询结果中,右边以空值出现,而右外连接则是以右边为准。

(3)自连接

自连接也叫自身连接。自连接是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当做另一个表来对待,从而能够得到一些特殊的数据,即自连接的本意就是将一张表看作多张表来做连接。

SELECT e1.ename 雇员,e2.ename 经理
FROM emp e1 INNER JOIN emp e2
ON e1.mgr=e2.empNo;

(4)交叉连接

交叉连接返回到结果集合中的数据行数等于第一张表中符合程序条件的数据行数乘以第二张表中符合条件的数据行数。交叉连接也叫做笛卡儿积。

4、集合查询

集合查询包含UNION(并集),INTERSECT(交集),MINUS(差集)。

5、分页查询

(1)ROWNUM

ROWID与ROWNUM虽都被称为伪列,但它们的存在方式是不一样的,ROWID可以说是物理存在的,表示记录在表空间中的唯一位置id,在数据库中唯一。

对于一个查询返回的每一行,ROWNUM伪列返回一个数值代表行的次序。返回的第一行的ROWNUM值为1,第二行的ROWNUM的值为2,依次类推。通过使用ROWNUM伪列,用户可以限制查询返回的行数。如下表:

(2)ROWNUM和排序

SELECT * FROM (SELECT * FROM emp ORDER BY sal DESC ) WHERE ROWNUM<6 ;--工资排序1~5条记录SELECT e2.* FROM (SELECT e1.*,rownum rn FROM (SELECT * FROM emp e1 ORDER BY sal DESC )e1)e2  WHERE rn<6;--工资排序1~5条记录SELECT e2.* FROM (SELECT e1.*,rownum rn FROM (SELECT * FROM emp e1 ORDER BY sal DESC )e1)e2  WHERE rn BETWEEN 6 AND 10 ;工资排序6~9条记录

 


http://chatgpt.dhexx.cn/article/okiOmHYa.shtml

相关文章

数据库系统SQL编程-02

目录 一、查询平均分高于60分的课程&#xff08;MSSQL&#xff09; 表结构: 表样例 输出样例: 编译程序: 二、查询成绩最高的前三名同学(MSSQL) 表结构: 表样例 输出样例: 编译程序: 三、查询所授每门课程平均成绩均在70分以上的教师(MSSQL) 表结构: 表样例 …

嵌入式SQL编程快速上手教程

嵌入式SQL编程快速上手教程 声明&#xff1a;我这里标题虽是《嵌入式SQL编程快速上手教程》&#xff0c;但只是嵌入式SQL编程的冰山一角罢了&#xff0c;我会通过举一道简单例题来教小白快速上手嵌入式SQL编程 第一&#xff1a;题目描述 其模式描述分别是&#xff1a; S (s…

数据库系统SQL编程-01

目录 一、查询各专业学生的平均成绩(MSSQL&#xff09; 表结构: 表样例 输出样例: 编译代码&#xff1a; 二、查询平均成绩最高的前3名同学 表结构: 表样例 输出样例: 编译代码&#xff1a; 三、 查询同专业的学生&#xff08;MSSQL&#xff09; 表结构: 表样…

pl/sql编程语言

–pl/sql编程语言 –pl/sql编程语言是对sql语言的扩展&#xff0c;是的sql语言具有过程化编程的特性 –pl/sql编程语言比一般的过程化编程语言&#xff0c;更加灵活高效 –pl/sql编程语言主要用来编写存储过程和存储函数等。 --声明方法,定义变量 --赋值操作可以用 : 也可以使…

SQL编程开发

文章目录 SQL概述SQL分类SQL语言规范 基本查询语句查询全部列查询特定列过滤操作模糊查询排序操作多表查询单行函数组函数group by和having 子查询库和表的操作库的操作表的操作数据类型列的操作 数据处理之增删改事务、约束和分页事务约束分页 安装好MySQL下步就是使用MySQL&a…

SQL编程

10-1 查询学生表所有学生记录 (5 分) 本题目要求编写SQL语句&#xff0c; 检索出stu表中所有学生记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: 定义表结构的SQL语句。如&#xff1a; CREATE TABLE stu(sno char(4) NOT NULL,sname char(8) NOT NULL,sex tinyin…

SQL 编程

SQL Server中存在两种变量局部变量和成员变量&#xff0c;两种变量的特点和其他语言变量特点一样 全局变量&#xff1a;由系统定义和维护由系统定义和维护 变量名前加“” 例 name 就定义了一个全局变量“name” 局部变量&#xff1a;由用户定义和使用&#xff0c;变量…

可编程的SQL是什么样的?

背景 如果你使用传统编程语言&#xff0c;比如Python&#xff0c;那么恭喜你&#xff0c;你可能需要解决大部分你不需要解决的问题&#xff0c;用Python你相当于拿到了零部件&#xff0c;而不是一辆能跑的汽车。你花了大量时间去组装汽车&#xff0c;而不是去操控汽车去抵达自…

SQL编程语言1

1 SQL简介 SQL是一门操作关系型数据库的编程语言 SQL通用语法 SQL语句可以以单行或多行书写&#xff0c;以分号结尾。只有在读取到分号后系统才会默认你已经输入执行语句MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写注释 单行注释&#xff1a;-- 注释内…

sql数据库高级编程总结(一)

1、数学函数&#xff1a;操作一个数据&#xff0c;返回一个结果 &#xff08;1&#xff09;取上限 ceiling 如果有一个小数就取大于它的一个最小整数 列如9.5 就会取到 10 select code,name,ceiling(price) from car &#xff08;2&#xff09;取下限 floor 如果有一个小数就…

SQL基础编程

文章目录 一.SQL的环境搭载单机离线环境在线环境 二.SQL的单表操作1.sql基础三步2.sql四则运算3.limit (限制查询结果个数)4.order by&#xff08;排序&#xff09;5.where 综合条件筛选6.SQL常量7.distinct (把结果中重复的行删除)8.函数(1) 聚合函数&#xff1a;sum() ——求…

君正X1000芯片性能和处理器介绍

君正X1000芯片是针对语音识别功能做了专门定制的芯片&#xff0c;可以支持4个MIC&#xff0c;支持远场唤醒&#xff0c;功耗很低&#xff0c;适用于物联网、智能家居、智能音频、智能玩具等产品 。 X1000 芯片功能&#xff1a; 穿戴处理器级低功耗&#xff0c;待机功耗0.2mW&am…

IBM storwize V5000存储基础配置

初始帐号密码 Superuser / passw0rd 设备和系统的基本状态 首先添加配置主机&#xff0c;前提是已经连接好光纤线&#xff0c;配置好光纤交换机 这里我们使用光纤通道 系统应该可以自动识别到端口&#xff0c;主机名可以设置为主机型号或者主机应用名 两个端口完成 配置内部存…

《计算机系统概论》-第5章-习题答案

给定指令ADD、JMP、LEA、NOT&#xff0c;请判断它们分别是操作&#xff08;或运算&#xff09;指令&#xff0c;还是数据搬移指令或控制指令&#xff1f;对每一条指令&#xff0c;进一步列出该指令可以采用的寻址模式。 指令类型寻址模式ADD操作立即数、寄存器2种寻址模式JMP控…

X1000之LCD部分的翻译

1.显示大小可达640x48060Hz&#xff0c;24BBP RGB 8 8 8 RGB(256^3) 2的24次方16777216 2.支持的颜色就是我们上面计算的 3. 8080并行接口 MCU接口方式&#xff08;8080&#xff0c;6800接口&#xff09;与RGB接口主要的区别 4.支持内部DMA操作和寄存器操作&#xff08;可以…

uboot - 配置过程1(分析国产君正的ingenic-linux-kernel3.10.14-x1000-v8.2-20181116\u-boot\mkconfig脚本)

分析uboot的配置过程&#xff08;mkconfig脚本&#xff09; uboot怎么配置&#xff1f;我们在终端上执行make NAME_config时的运行过程解析&#xff01; STEP1: %_config:: unconfig$(MKCONFIG) -A $(:_config)我们执行make *_config时会运行makefile的这两行程序&#xff0c…

Opencv 以指定格式保存图片

将图像保存至本地&#xff0c;以指定的格式&#xff0c;需要用到cv::imwrite()函数 函数原型&#xff1a; bool imwrite(const string& filename, InputArray img, const vector<int>& paramsvector<int>() )参数解释&#xff1a;filename:图像保存路径&…

【OpenCV-Python】教程:1-1 图像读取显示保存

文章目录 目标代码imread接口原型参数 支持的格式 imwrite接口原型参数 imshow接口原型参数 目标 读图片显示图片保存图片 代码 ## 导入库 import cv2 import sys## 读入图片 img cv2.imread("lena.jpg")## 读入失败退出 if img is None:sys.exit("Could not…

44.Linux君正X1000-添加st7789v显示

由于板子LCD旧屏是ili9335型号的,旧屏有时候会断货,如果断货则使用一个st7789v型号的LCD 它们两个屏的区别在于初始化屏的参数不同,引脚都一样,也就是说需要使板子同时支持ili9335型号和st7789v型号 思路: 1.uboot在显示LOG(初始化屏参数)之前,通过命令来读LCD型号,来检测LCD型…