Oracle操作手册

Oracle基础操作手册

查询系统当前时间

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子句

  1. 在SELECT语句中,当同时存在GROUP BY子句、HAVING子句和WHERE子句时,
  2. 其执行顺序为:先WHERE子句,后GROUP BY 子句,再HAVING子句。
  3. 即先用WHERE子句从数据源中筛选出符合条件的记录,
  4. 接着再用GROUP BY子句对筛选的记录按指定的字段分组、汇总,
  5. 最后再用HAVING子句筛选出符合条件的组。
  6. 例6.23 统计scott方案下的emp表中平均工资大于2500的工作。
  7. SELECT job,AVG(sal) AS 平均工资
  8. FROM scott.emp
  9. GROUP BY job
  10. 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系统权限,表的基本创建语法如下:

  1. CREATE TABLE 表名
  2. (列名 数据类型(宽度)[DEFAULT 表达式][COLUMN CONSTRAINT],
  3. [TABLE CONSTRAINT]
  4. [TABLE_PARTITION_CLAUSE]
  5. );
  6. /*
  7. DEFAULT 表达式:用来定义列的默认值。
  8. COLUMN CONSTRAINT:用来定义列级的约束条件。
  9. TABLE CONSTRAINT:用来定义表级的约束条件。
  10. TABLE_PARTITION_CLAUSE:定义表的分区子句。*/
  11. 创建学生表(student)
  12. CREATE TABLE student
  13. (Sno char(6),
  14. Sname varchar2(8),
  15. Sex char(2),
  16. Birthday date,
  17. Sdept char(20)
  18. );

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更改表结构

  1. ALTER TABLE 表名
  2. [ADD (列名 数据类型[DEFAULT 表达式 ][COLUMN CONSTRAINT]……)]
  3. [MODIFY(列名 数据类型[DEFAULT 表达式 ][COLUMN CONSTRAINT]……)]
  4. [DROP COLUMN 列名]
  5. 例8.10给student表增加一个memo字段,类型为varchar2(20)。
  6. ALTER TABLE student
  7. ADD memo VARCHAR2(20);
  8. 例8.11 修改student表中所在系sdept字段的长度改为30。
  9. ALTER TABLE student
  10. MODIFY sdept VARCHAR2(30);
  11. 3.修改列名
  12. 使用ALTER TABLE … RENAME COLUMN语句实现修改列的名称。
  13. 例8.12 修改student表中所在系sdept字段的字段名为new_sdept。
  14. ALTER TABLE student
  15. RENAME COLUMN sdept to new_sdept;
  16. 4.删除列名
  17. 使用ALTER TABLE … DROP COLUMN语句实现直接删除列。
  18. 例8.13 删除student表中的性别字段。
  19. ALTER TABLE student
  20. 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

  1. CREATE USER 用户名 INDENTIFIED BY 口令
  2. [DEFAULT TABLESPACE 表空间名]
  3. [TEMPORARY TABLESPACE 表空间名]
  4. [QUOTA {正整数[K|M] |UNLIMITED } ON表空间名…]
  5. [PASSWORD EXPIRE]
  6. [ACC0UNT {LOCKL|UNLOCK}]
  7. [PR0FILE 环境文件名|DEFAULT];

    1. QUOTA
  8. 如果没有指定了默认表空间之后,一般需使用QUOTA子句来为用户在默认表空间中分配空间配额。
  9. [PASSWORD EXPIRE]
  10. 设置用户初次登录后密码失效,必须重新设置。
  11. [PR0FILE 环境文件名|DEFAULT];
  12. 显式的配置概要文件

Grant授权

  1. Grant授权
  2. GRANT SYSTEM_PRIV[,SYSTEM_PRIV,…]
  3. TO {PUBLIC|ROLE|USER}[,PUBLIC|ROLE|USER}]…
  4. [WITH ADMIN OPTION]
  5. SYSTEM_PRIV:表示要授予的系统权限的名称,该选项允许为用户同时授予多个系统权限,之间用逗号隔开。
  6. USER:表示获得该系统权限的用户名称,该选项允许同时为多个用户授予相同的权限,之间用逗号隔开。
  7. ROLE:表示被授予的角色。
  8. PUBLIC:表示对系统中所用用户授权,可以使用它为系统中的每个用户快速设定权限。
  9. WITH ADMIN OPTION:它是可选项,表示将系统权限授予某个用户后,该用户不仅获得该权限的使用权,还获得该权限的管理权,包括可以将该权限继续授予其它用户,或从其它用户处回收该权限。该选项的影响力较大,要慎重使用。

猜你喜欢

转载自blog.csdn.net/storyteller321/article/details/81105940