赞
踩
- -- 查看当前用户
- select user FROM dual;
-
- --创建表空间
- --datefile '地址'
- --size
- --autoextend on
- --next
- create tablespace test
- datafile 'c:/data/test.dbf'
- size 100m
- autoextend on
- next 10m;
-
- --创建用户 default tablespace 默认表空间
- create user c##user
- identified by itcast
- default tablespace waterboss;
-
- --给新用户授权 grant dba to c##user;
- grant dba to c##user;
-
- --查看用户
- select user FROM dual;
- -- 字符串类型
- -- 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;
- -- 如果想要主键自增长 需要设置 自增序列
- -- 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;
- -- 创建表
- 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;
- --1-使用DISTINCT关键字是最简单和直接的去重方法之一,它可以在SELECT语句中去重查询结果集。
-
- SELECT DISTINCT column1, column2
- FROM 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, column2
- FROM CTE
- WHERE rn = 1;
-
- --3-使用GROUP BY子句可以对查询结果进行分组,结合聚合函数可以实现去重。
-
- SELECT column1, column2
- FROM table_name
- GROUP BY column1, column2;
在Oracle数据库中,ROWID和ROWNUM都是用于对行进行标识和定位的伪列,它们在查询中的使用有一些不同之处。
ROWID是Oracle中的一个伪列,用于唯一标识数据库中的每一行。它是一个字符串,包含了行所在的数据块地址、行地址以及行在数据块中的相对位置等信息。在查询中,可以使用ROWID来定位和操作特定的行,例如,删除特定的行或更新特定的行。以下是使用ROWID的一些示例:
- -- 伪列 并不真实存在于表中 他是根据orcale在读取插入数据的时候 根据物理地址信息编码形成的信息
- --1-查找指定行的ROWID
-
- SELECT ROWID, column1, column2
- FROM table_name
- WHERE condition;
-
- --2-根据ROWID删除行
-
- DELETE FROM table_name
- WHERE ROWID = 'AAAR8pAABAAALPwAAA';
-
- --3-根据ROWID更新行
- UPDATE table_name
- SET column1 = 'new_value'
- WHERE ROWID = 'AAAR8pAABAAALPwAAA';
ROWNUM是Oracle中的另一个伪列,用于给查询结果集中的行分配一个行号。它在查询中的应用通常是为了限制结果集的大小或进行分页查询。以下是使用ROWNUM的一些示例:
- --1-限制结果集的大小
-
- SELECT column1, column2
- FROM table_name
- WHERE ROWNUM <= 10;
-
-
- --2-分页查询
-
- SELECT column1, column2
- FROM (
- SELECT column1, column2, ROWNUM AS rn
- FROM table_name
- WHERE condition
- )
- WHERE rn BETWEEN 11 AND 20;
- --COUNT函数用于计算查询结果集中行的数量
- SELECT COUNT(column_name) AS count
- FROM table_name;
-
- --SUM函数用于计算数值列的总和
- SELECT SUM(column_name) AS total_sum
- FROM table_name;
-
- --AVG函数用于计算数值列的平均值
- SELECT AVG(column_name) AS average
- FROM table_name;
-
- --MAX函数用于找到数值列的最大值
- SELECT MAX(column_name) AS max_value
- FROM table_name;
-
- --MIN函数用于找到数值列的最小值
- SELECT MIN(column_name) AS min_value
- FROM table_name;
-
- --GROUP BY 和聚合函数的结合使用
- SELECT department, AVG(salary) AS avg_salary
- FROM employees
- GROUP BY department;
在Oracle中,连接查询是通过使用JOIN子句将两个或多个表中的数据合并在一起,以获取满足特定条件的结果集。以下是一些常见的连接查询示例:
- --内连接(INNER JOIN)
- --内连接返回两个表中符合连接条件的行,这是最常见的连接类型。
- SELECT t1.column1, t2.column2
- FROM table1 t1
- INNER JOIN table2 t2 ON t1.key_column = t2.key_column;
-
- -- 左连接(LEFT JOIN)
- --左连接返回左边表中的所有行,以及右边表中符合连接条件的行。如果右边表中没有匹配的行,则返回NULL
- SELECT t1.column1, t2.column2
- FROM table1 t1
- LEFT JOIN table2 t2 ON t1.key_column = t2.key_column;
-
- -- 右连接(RIGHT JOIN)
- --右连接返回右边表中的所有行,以及左边表中符合连接条件的行。如果左边表中没有匹配的行,则返回NULL。
- SELECT t1.column1, t2.column2
- FROM table1 t1
- RIGHT JOIN table2 t2 ON t1.key_column = t2.key_column;
-
- --全连接(FULL OUTER JOIN)
- --全连接返回左右两个表中的所有行,如果某个表中没有匹配的行,则返回NULL。
- SELECT t1.column1, t2.column2
- FROM table1 t1
- FULL OUTER JOIN table2 t2 ON t1.key_column = t2.key_column;
在Oracle中,子查询是指嵌套在另一个查询内部的查询语句,它可以作为主查询的一部分,用于提供额外的过滤条件、计算或数据源。以下是一些常见的Oracle子查询的示例:
- --1. 子查询作为WHERE子句的条件
- --子查询可以嵌套在WHERE子句中,用于提供额外的过滤条件。
- SELECT column1, column2
- FROM table_name
- WHERE column1 IN (
- SELECT column1
- FROM another_table
- WHERE condition
- );
-
-
- --2. 子查询作为FROM子句的数据源
- --子查询可以嵌套在FROM子句中,作为查询的数据源。
- SELECT t1.column1, t2.column2
- FROM (
- SELECT column1, column3
- FROM table1
- WHERE condition
- ) t1
- INNER JOIN table2 t2 ON t1.column1 = t2.column1;
-
- --3. 子查询作为SELECT子句的列
- --子查询可以嵌套在SELECT子句中,用于计算额外的列或值。
- SELECT column1,
- (SELECT COUNT(*) FROM another_table WHERE column2 = table_name.column1) AS count
- FROM table_name;
-
- --4. 子查询作为INSERT语句的VALUES子句
- --子查询可以作为INSERT语句的VALUES子句的一部分,用于将查询结果插入到目标表中。
- INSERT INTO table_name (column1, column2)
- SELECT column1, column2
- FROM another_table
- WHERE condition;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。