发布时间:2025-06-24 20:37:54  作者:北方职教升学中心  阅读量:964


SELECT t1.column1, t2.column2FROM ( SELECT column1, column3 FROM table1 WHERE condition) t1INNER JOIN table2 t2 ON t1.column1 = t2.column1;--3. 子查询作为SELECT子句的列--子查询可以嵌套在SELECT子句中,用于计算额外的列或值。如果右边表中没有匹配的行,则返回NULLSELECT t1.column1, t2.column2FROM table1 t1LEFT JOIN table2 t2 ON t1.key_column = t2.key_column;-- 右连接(RIGHT JOIN)--右连接返回右边表中的所有行,以及左边表中符合连接条件的行。在查询中,可以使用ROWID来定位和操作特定的行,例如,删除特定的行或更新特定的行。SELECT t1.column1, t2.column2FROM table1 t1RIGHT JOIN table2 t2 ON t1.key_column = t2.key_column;--全连接(FULL OUTER JOIN)--全连接返回左右两个表中的所有行,如果某个表中没有匹配的行,则返回NULL。

ROWID

        ROWID是Oracle中的一个伪列,用于唯一标识数据库中的每一行。如果左边表中没有匹配的行,则返回NULL。INSERT INTO table_name (column1, column2)SELECT column1, column2FROM another_tableWHERE condition;

SELECT t1.column1, t2.column2FROM table1 t1FULL OUTER JOIN table2 t2 ON t1.key_column = t2.key_column;

09-子查询

        在Oracle中,子查询是指嵌套在另一个查询内部的查询语句,它可以作为主查询的一部分,用于提供额外的过滤条件、计算或数据源。以下是使用ROWNUM的一些示例:

--1-限制结果集的大小SELECT column1, column2FROM table_nameWHERE ROWNUM <= 10;--2-分页查询SELECT column1, column2FROM (    SELECT column1, column2, ROWNUM AS rn    FROM table_name    WHERE condition)WHERE rn BETWEEN 11 AND 20;

07-聚合函数

--COUNT函数用于计算查询结果集中行的数量SELECT COUNT(column_name) AS countFROM table_name;--SUM函数用于计算数值列的总和SELECT SUM(column_name) AS total_sumFROM table_name;--AVG函数用于计算数值列的平均值SELECT AVG(column_name) AS averageFROM table_name;--MAX函数用于找到数值列的最大值SELECT MAX(column_name) AS max_valueFROM table_name;--MIN函数用于找到数值列的最小值SELECT MIN(column_name) AS min_valueFROM table_name;--GROUP BY 和聚合函数的结合使用SELECT department, AVG(salary) AS avg_salaryFROM employeesGROUP BY department;

08-连接查询

        在Oracle中,连接查询是通过使用JOIN子句将两个或多个表中的数据合并在一起,以获取满足特定条件的结果集。以下是使用ROWID的一些示例:

-- 伪列 并不真实存在于表中 他是根据orcale在读取插入数据的时候 根据物理地址信息编码形成的信息--1-查找指定行的ROWIDSELECT ROWID, column1, column2FROM table_nameWHERE condition;--2-根据ROWID删除行DELETE FROM table_nameWHERE ROWID = 'AAAR8pAABAAALPwAAA';--3-根据ROWID更新行UPDATE table_nameSET column1 = 'new_value'WHERE ROWID = 'AAAR8pAABAAALPwAAA';

ROWNUM

        ROWNUM是Oracle中的另一个伪列,用于给查询结果集中的行分配一个行号。SELECT t1.column1, t2.column2FROM table1 t1INNER JOIN table2 t2 ON t1.key_column = t2.key_column;-- 左连接(LEFT JOIN)--左连接返回左边表中的所有行,以及右边表中符合连接条件的行。它在查询中的应用通常是为了限制结果集的大小或进行分页查询。SELECT column1, column2FROM table_nameWHERE column1 IN ( SELECT column1 FROM another_table WHERE condition);--2. 子查询作为FROM子句的数据源--子查询可以嵌套在FROM子句中,作为查询的数据源。

01-表空间_用户创建

-- 查看当前用户select user FROM dual;--创建表空间--datefile '地址'--size--autoextend on--nextcreate tablespace testdatafile 'c:/data/test.dbf'size 100mautoextend onnext 10m;--创建用户 default tablespace 默认表空间create user c##useridentified by itcastdefault tablespace waterboss;--给新用户授权 grant dba to c##user;grant dba to c##user;--查看用户select user FROM dual;

02-数据类型

-- 字符串类型-- char(10)-- varchar(10)-- long-- string-- 数字类型-- number(5)-- number(5,2)-- 时间类型-- data ==> current_date-- timestamp ==> current_timestamp-- 把unix类型的时间戳 转化为data时间类型-- SELECT date '1970-01-01' + NUMTODSINTERVAL(1711361758, 'SECOND')  from dual;

03-表操作

-- 如果想要主键自增长 需要设置 自增序列-- create sequence seq_userinfo--     increment by 1--     start with 1--     nomaxvalue--     nominvalue--     cache 20;-- 查看表结构-- 在命令窗口 desc 表名-- 在pl/sql中 SELECT DBMS_METADATA.GET_DDL('TABLE','XXX') FROM DUAL;-- 注意: 表名必须大写-- 1. 创建表(主键 没有自增长)create table test(    id   number primary key,    name varchar2(100),    age  number);-- 修改表结构-- 2. 增加一个字段-- ALTER TABLE 表名称  ADD(列名  1  类型  [DEFAULT  默认值],列名   1  类型 [DEFAULT  默认值]...)alter table test    add (        height number(5, 2)        );-- 增加多个字段alter table test    add (        height1 number(5, 2),        height2 number(5, 2)        );-- 3. 修改字段-- ALTER TABLE 表名称 MODIFY(列名 1  类型  [DEFAULT  默认值],列名 1  类型 [DEFAULT  默认值]...)alter table test    modify (        height1 number(10),        height2 number(10)        );-- 4. 修改字段名-- ALTER TABLE 表名称 RENAME COLUMN 原列名 TO  新列名alter table test rename column height1 to ht;-- 5. 删除一个字段-- ALTER TABLE 表名称 DROP COLUMN 列名alter table test drop column height;-- 6. 删除多个字段-- ALTER TABLE 表名称 DROP (列名 1,列名 2...)alter table test drop (ht,height2);-- 7. 删除表drop table test;

04-数据增删改

-- 创建表create table test(    id   number primary key,    name varchar2(100),    age  number);-- 插入一条数据insert into test values(1,'老王',18);commit;-- 插入多条数据insert into test values(2,'老李',28);insert into test values(3,'老谢',38);-- 查看数据select * from test;-- 回滚rollback;-- 查看数据select * from test;-- 数据修改和mysql一样-- 数据删除和mysql一样-- delete可以回滚delete from test;select * from test;rollback;-- truncate table 不可以回滚truncate table test;select * from test;rollback;

05-条件查询语句

--1-使用DISTINCT关键字是最简单和直接的去重方法之一,它可以在SELECT语句中去重查询结果集。SELECT column1,       (SELECT COUNT(*) FROM another_table WHERE column2 = table_name.column1) AS countFROM table_name;--4. 子查询作为INSERT语句的VALUES子句--子查询可以作为INSERT语句的VALUES子句的一部分,用于将查询结果插入到目标表中。以下是一些常见的连接查询示例:

--内连接(INNER JOIN)--内连接返回两个表中符合连接条件的行,这是最常见的连接类型。SELECT DISTINCT column1, column2FROM table_name;--2-使用ROW_NUMBER()函数和CTE(公共表表达式)WITH CTE AS (    SELECT column1, column2,           ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column1, column2) AS rn    FROM table_name)SELECT column1, column2FROM CTEWHERE rn = 1;--3-使用GROUP BY子句可以对查询结果进行分组,结合聚合函数可以实现去重。SELECT column1, column2FROM table_nameGROUP BY column1, column2;

06-伪列rowid和rownum的使用

        在Oracle数据库中,ROWID和ROWNUM都是用于对行进行标识和定位的伪列,它们在查询中的使用有一些不同之处。以下是一些常见的Oracle子查询的示例:

--1. 子查询作为WHERE子句的条件--子查询可以嵌套在WHERE子句中,用于提供额外的过滤条件。它是一个字符串,包含了行所在的数据块地址、行地址以及行在数据块中的相对位置等信息。