Oracle基础操作手册内容分享
oracle基础操作手册
oracle基础操作手册 查询当前时间 显示当前用户 查看表结构或列出函数、存储过程等的信息 oracle中行称为记录,列称为字段。 注释 查找数据文件的存放位置、大小和状态。 distinct 去重 select用法 schame方案/用户名 as是为字段起别名的关键字 可以使用各种运算符和函数对字段的值进行计算 <>或!=(不等于) 字符串匹配 使用关键字in进行查询。其语法格式如下: order by 子句 统计函数 group by 多个选项 having子句 dual虚拟表 union集合查询 使用集合的交运算 表的创建需要create table系统权限,表的基本创建语法如下: as子查询创建表 五种约束条件 主键约束primary key 主键约束primary 包含两种约束:非空和唯一 约束的实例 外键 constraint关键字 drop删除表 alter更改表结构 修改表名 synonym create user grant授权
查询系统当前时间
select sysdate from dual
显示当前用户
show user
select user from dual
1. ###存储一段命令到指定文件
2. 例3.4 使用spool命令记录操作内容。
3. 步骤1:执行命令:
4. spool c:\test
5. 步骤2:执行命令:
6. select*from emp;
7. 步骤3:执行命令:
8. select*from dept;
9. 步骤4:执行命令:
10. spool off
查看表结构或列出函数、存储过程等的信息
sql>desc emp;
oracle中行称为记录,列称为字段。
注释
在一行中插入“–”,将其后的内容注释掉。
使用/……/,可以用来注释任何一段的内容。
查找数据文件的存放位置、大小和状态。
sql> set linesize 600
sql> select status,bytes,name from v$datafile;
distinct 去重
select[ all | distinct ] select_list
select用法
select[ all | distinct ] select_list
from [schema.] table_name | [schema.] view_name
[ where search_condition ]
[ group by group_by_expression [ having search_condition ] ]
[order by order_expression [ asc | desc ] ]
schame方案/用户名
[schema.] table_name:指定要查询的数据源的表名称和它的方案名,如果表是当前连接用户方案下的表,则方案名可以省略。
as是为字段起别名的关键字
select column_name1 [as] alias,column_name2 [as] alias,········
from [ schema.] table_name | [schema.] view_name
可以使用各种运算符和函数对字段的值进行计算
算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模( % )运算。
select ename || ‘的工作是’|| job as 雇员,sal +300 as 新工资 from scott.emp;
<>或!=(不等于)
字符串匹配
匹配字符串可以是一个完整的字符串,也可以使用%和_两种匹配符。
%代表字符串中包含零个或多个任意字符;
_代表字符串中包含一个任意字符。
not关键字是对like运算符的否定,表示可以查询那些不匹配的记录。
select * from scott .emp
where ename like ‘a%’ ;
使用关键字in进行查询。其语法格式如下:
select select_list from [schema.] table_name | [schema.] view_name
where column_name [ not ] in (value1,value2,………)
order by 子句
asc:表示按升序排列,可省略。
desc:表示按降序排列。
select * from scott.emp
where job=’salesman’
order by sal desc
统计函数
avg(字段)
max
min
count(*/字段)
sum(dictinct)字段))
group by 多个选项
统计scott方案下的emp表中各个部门中的各种工作的雇员人数。
select deptno,job,count(*) as 人数
from scott.emp
group by deptno,job;
having子句
在select语句中,当同时存在group by子句、having子句和where子句时, 其执行顺序为:先where子句,后group by 子句,再having子句。 即先用where子句从数据源中筛选出符合条件的记录, 接着再用group by子句对筛选的记录按指定的字段分组、汇总, 最后再用having子句筛选出符合条件的组。 例6.23 统计scott方案下的emp表中平均工资大于2500的工作。 select job,avg(sal) as 平均工资 from scott.emp group by job having avg (sal)>2500;dual虚拟表
dual表主要用来选择系统变量或求一个表达式的值
引入dual表的原因:
select sysdate from dual
而oracle的select语法的限制为:
select * | [column1 [as alias1], column2 [as alias2]] from table
所以,没有表名就没有办法查询,而时间日期并不存放在任何表中,于是这个dual虚拟表的概念就被引入了。
union集合查询
并集,合并两个操作的结果,去掉重复的部分
例7.16:查询部门10和部门20的所有职务。
执行以下查询:
select job from emp where deptno=10
union
select job from emp where deptno=20;
使用集合的交运算
例7.17:查询部门10和20中是否有相同的职位和工资。
执行以下查询:
select job,sal from emp where deptno=10
intersect
select job,sal from emp where deptno=20;
表的创建需要create table系统权限,表的基本创建语法如下:
create table 表名 (列名 数据类型(宽度)[default 表达式][column constraint], … [table constraint] [table_partition_clause] ); /* default 表达式:用来定义列的默认值。 column constraint:用来定义列级的约束条件。 table constraint:用来定义表级的约束条件。 table_partition_clause:定义表的分区子句。*/ 创建学生表(student) create table student (sno char(6), sname varchar2(8), sex char(2), birthday date, sdept char(20) );as子查询创建表
create table emp_30(ename,job,sal)
as
select ename,job,sal from emp where deptno=30;
五种约束条件
表共有五种约束,它们是主键、非空、唯一、检查和外键。
数据完整性由主键(primary key)、非空(not null)、唯一(unique)和检查(check)约束条件定义,参照完整性由外键(foreign key)约束条件定义。
主键约束primary key
主键约束primary 包含两种约束:非空和唯一
create table student
(sno char(6) primary key,
sname varchar2(8),
sex char(2),
birthday date,
sdept char(20)
);
约束的实例
create table student
(sno char(6) primary key,主键
sname varchar2(8) not null,非空
sex char(2) constraint ch_sex check(sex=’男’ or sex=’女’),检查
birthday date unique,唯一
sdept char(20)
外键
constraint fk_sc foreign key(cno) references course(cno)###将course中的cno作为外键,本表可以没有主键
constraint关键字
在以上5种约束的语法中,constrant关键字用来定义约束名,如果省略,则系统自动生成以sys_开头的惟一约束名。
drop删除表
drop table student;
alter更改表结构
alter table 表名 [add (列名 数据类型[default 表达式 ][column constraint]……)] [modify(列名 数据类型[default 表达式 ][column constraint]……)] [drop column 列名] 例8.10给student表增加一个memo字段,类型为varchar2(20)。 alter table student add memo varchar2(20); 例8.11 修改student表中所在系sdept字段的长度改为30。 alter table student modify sdept varchar2(30); 3.修改列名 使用alter table … rename column语句实现修改列的名称。 例8.12 修改student表中所在系sdept字段的字段名为new_sdept。 alter table student rename column sdept to new_sdept; 4.删除列名 使用alter table … drop column语句实现直接删除列。 例8.13 删除student表中的性别字段。 alter table student drop column sex;修改表名
表名的修改可以使用使用alter table … rename to语句实现,也可直接执行rename … to语句。
例8.14 将student表改名为new_student表。
alter table student
rename to new_student;
synonym
create [or replace] [public] synonym [schema .]synonym_name
for [schema .] object_name
其中各参数的意义如下:
public:表示创建一个公有同义词,允许对原对象具有权限的所有用户使用。
synonym_name:新建的同义词名称。
object_name:原对象的名称。
create user
create user 用户名 indentified by 口令 [default tablespace 表空间名] [temporary tablespace 表空间名] [quota {正整数[k|m] |unlimited } on表空间名…] [password expire] [acc0unt {lockl|unlock}] [pr0file 环境文件名|default];quota 如果没有指定了默认表空间之后,一般需使用quota子句来为用户在默认表空间中分配空间配额。 [password expire] 设置用户初次登录后密码失效,必须重新设置。 [pr0file 环境文件名|default]; 显式的配置概要文件