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子句中,用于提供额外的过滤条件。它是一个字符串,包含了行所在的数据块地址、行地址以及行在数据块中的相对位置等信息。