ORACLE数据库教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 各数据库厂家对SQL-92标准均有扩充,扩充部 分不能完全保证数据库之间的兼容性。
简介
SQL可以分为: (基础篇只介绍前两种)
• DML:数据操作语言(Data Manipulation Language): select, insert, update, delete, (其他:truncate) • DDL:数据定义语言 (Data Definition Languages): create, drop , alter,(其他:rename) • DCL数据控制语言:grant、revoke、set role • 事务控制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction) • 审计控制:audit、noaudit • 系统控制:alter system • 会话控制:alter session • 其他语句:comment(添加注释)、explain plan、 analyze、validate、call
ORACLE数据库教程
SQL-001
2007年5月
简介
• SQL(Structured Query Language)结构化查询 语言是IBM公司San Jose实验室为System R而设 计的查询语言,后被国际标准化组织(ISO)批 准作为关系数据库语言的国际标准。
• SQL目前遵循的是1992年标准,即SQL-92。
修改table_name表的old_name字段名为new_name。
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column_list);
建立table_name表的主键,主键名pk_name,主键字段column_list。
•
删除index_name索引。 删除主键(强制限制的一种),使用ALTER TABLE
table_name DROP CONSTRAINT pk_name;
DML小结
• • 从ALTER和CREATE及DROP语法数量再一次证明需 求是易变的。 如果增加表字段,并要求字段的排列位置,可以使用:
1. 2. 3. 4. 5. CREATE TABLE temp_table_name AS SELECT * FROM table_name; DROP TABLE table_name; CREATE TABLE table_name(column…); INSERT INTO table_name VALUES(column_list) (SELECT column_list1 FROM temp_table_name); DROP TABLE table_name;
修改table_name表字段属性,长度或精度不能小于原长度或精度。
• ALTER TABLE table_name DROP COLUMN column_name;
删除table_name表中的column_name字段。
•
•
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
DDL数据定义语言
ALTER--修改表
• • ALTER TABLE table_name RENAME TO new_table_name;
将table_name表名修改为new_table_name。
ALTER TABLE table_name ADD(column1 datatype [default ] [not null],column2 datatype [default ] [not null], ….. );
• ALTER TABLE table_name DROP CONSTRAINT pk_name;
删除table_name表的pk_name主键。一个表只能有一个主键
DDL数据定义语言
DROP --删除
• • DROP TABLE table_name;
删除table_name表。
DROP INDEX index_name;
DDL数据操作语言
SELECT--多表查询
• 在FROM中列举表名,WHERE中写表关联
SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO = 20;
DDL数据操作语言
SELECT--查询
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT [ ALL ] } select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF class_name [, ...] ] ] [ LIMIT { count | ALL } [ { OFFSET | , } start ]]
Datatype 是数据类型:varchar2(x), number(x,x), date, integer等。 Not null非空限制,如果不写表示可为空。 Primary key主键,可以紧跟在字段后,或在最后使用constraint。 未指名表空间,数据表建立在用户默认的表空间中。
DDL数据定义语言
SELECT * FROM DEPT WHERE DEPTNO = 20;
--返回部门编码为20的部门数据
SELECT * FROM DEPT WHERE DEPTNO BETWEEN 20 AND 30;
--返回部门编码在20到30之间的部门数据(包括20和30)
DDL数据操作语言
SELECT--单表查询
--字段和表名可以使用别名,方法为 AS 别名,或直接写别名,表如 果指定别名,原表名在该查询中不能再被使用。
DΒιβλιοθήκη BaiduL数据操作语言
SELECT--Joins(连接)
• 语法
{ T1 } [ NATURAL ] [ INNER | { LEFT | RIGHT | FULL } [ OUTER ] ] JOIN { T2 } { ON search condition | USING ( join column list ) }
SELECT * FROM DEPT;
查询表中所有字段和所有记录,select后跟* 表示所有字段 查询指定字段,在select后跟查询的字段名列表,字段间 用’,’隔开
SELECT DEPTNO, DNAME FROM DEPT;
•
条件查询,FROM后面使用WHERE,在WHERE中可以使 用=, <>, >,<,>=,<=,BETWEEN,LIKE,IN,返回WHERE条件 为true的数据
CREATE--创建索引
• CREATE [UNIQUE] INDEX index_name ON table_name(column_list)[tablespace tablespace_name];
在table_name表上按照column_list建立索引,索引名为 index_name,索引保存在tablespace_name表空间中。 UNIQUE:唯一性索引。
--字段名前使用表名.指定表字段,在WHERE中先写表关联关系,从 FROM的内侧(即左侧)向外侧写(即右侧),表关联写完后 再写查询条件,不要把表管理和查询条件混在一起写,这虽然 不是必须的,但却是规范推荐的。
SELECT E.EMPNO AS 职工编码, E.ENAME 姓名, E.JOB, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.DEPTNO = 20;
•
后续查询范例均以oracle中的SCOTT/TIGER用户表为例
DDL数据操作语言
SCOTT/TIGER表介绍
•
DEPT部门定义表,DEPTNO是主键
•
EMP职工表,EMPNO主键,DEPTNO外键关联DEPT
•
其他表没有数据或没有关系,不在这里介绍
DDL数据操作语言
SELECT--单表查询
• •
DDL数据定义语言
CREATE--创建数据表
• CREATE TABLE table_name( Column1 datatype [default][not null] [primary key], [………,] [constraint key_name primary key(column_list) [using index tablespace tablespace_name]] )[tablespace tablespace_name];
•
一个条件 JOIN 必须通过提供一个(并且只能有一个) NATURAL,ON,或者 USING 这样的关键字来声明它的 连接条件. ON 子句 接受一个 search condition, 它与一 个 WHERE 子句相同.USING 子句接受一个用逗号分隔的 字段名列表,连接表中必须都有这些字段, 并且用那些字 段连接这些表。 NATURAL 是 USING 子句的缩写,它列出两个表中所有公 共 的字段名字。
需要注意的是,删除表后,表中的索引也被删除,所以,在执行上述 操作前要保留好表的索引脚本。
•
这里没有写DROP DATABASE的语法,如果大家想 要尝试删除数据库的话,最好在专家的指导下进行!
DDL数据操作语言
• • • • SELECT(查询) INSERT(插入) UPDATE(更新) DELETE(删除)
在table_name表中增加column1,column2..字段,追加到字段最后。
• ALTER TABLE table_name MODIFY(column1 datatype [default ] [{not null|nullable}],column2 datatype [default ] [{not null|nullable}], …..
DDL数据定义语言
• CREATE(建立) • ALTER(修改) • DROP(删除)
语言描述约定
• [ ]:表示可选项 • { | }:表示选择项 • CREATE:粗体表示关键字或必输项 • Table_name:斜体表示用户输入项
•
创建 :蓝色表示说明
DDL数据定义语言
CREATE--创建用户
SELECT * FROM DEPT WHERE DNAME LIKE ‘ACCOUNT%’; --返回部门名称以ACCOUNT开始的部门数据 SELECT * FROM DEPT WHERE DNAME LIKE ‘%UNT%’; --返回部门名称含UNT的部门数据,%全匹配符,?单匹配符 SELECT * FROM DEPT WHERE DEPTNO IN (20, 30) AND (DNAME LIKE ‘%UNT%’ OR DNAME = ‘SALES’); --返回部门编码等于20和30并且部门名称含UNT或等于SALES的部 门数据,AND与,OR或,IN和(等同OR)
• CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE tablespace_name];
创建user_name用户,密码为password,使用 tablespace_name表空间,如果没有指定表空间,默认表 空间为system表空间。Oracle10g有用户默认表空间设置。 建议在创建用户时一定要指名表空间。
简介
SQL可以分为: (基础篇只介绍前两种)
• DML:数据操作语言(Data Manipulation Language): select, insert, update, delete, (其他:truncate) • DDL:数据定义语言 (Data Definition Languages): create, drop , alter,(其他:rename) • DCL数据控制语言:grant、revoke、set role • 事务控制:commit、rollback、savepoint(其他:lock table、set constraint(s)、set transaction) • 审计控制:audit、noaudit • 系统控制:alter system • 会话控制:alter session • 其他语句:comment(添加注释)、explain plan、 analyze、validate、call
ORACLE数据库教程
SQL-001
2007年5月
简介
• SQL(Structured Query Language)结构化查询 语言是IBM公司San Jose实验室为System R而设 计的查询语言,后被国际标准化组织(ISO)批 准作为关系数据库语言的国际标准。
• SQL目前遵循的是1992年标准,即SQL-92。
修改table_name表的old_name字段名为new_name。
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column_list);
建立table_name表的主键,主键名pk_name,主键字段column_list。
•
删除index_name索引。 删除主键(强制限制的一种),使用ALTER TABLE
table_name DROP CONSTRAINT pk_name;
DML小结
• • 从ALTER和CREATE及DROP语法数量再一次证明需 求是易变的。 如果增加表字段,并要求字段的排列位置,可以使用:
1. 2. 3. 4. 5. CREATE TABLE temp_table_name AS SELECT * FROM table_name; DROP TABLE table_name; CREATE TABLE table_name(column…); INSERT INTO table_name VALUES(column_list) (SELECT column_list1 FROM temp_table_name); DROP TABLE table_name;
修改table_name表字段属性,长度或精度不能小于原长度或精度。
• ALTER TABLE table_name DROP COLUMN column_name;
删除table_name表中的column_name字段。
•
•
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
DDL数据定义语言
ALTER--修改表
• • ALTER TABLE table_name RENAME TO new_table_name;
将table_name表名修改为new_table_name。
ALTER TABLE table_name ADD(column1 datatype [default ] [not null],column2 datatype [default ] [not null], ….. );
• ALTER TABLE table_name DROP CONSTRAINT pk_name;
删除table_name表的pk_name主键。一个表只能有一个主键
DDL数据定义语言
DROP --删除
• • DROP TABLE table_name;
删除table_name表。
DROP INDEX index_name;
DDL数据操作语言
SELECT--多表查询
• 在FROM中列举表名,WHERE中写表关联
SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND DEPT.DEPTNO = 20;
DDL数据操作语言
SELECT--查询
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT [ ALL ] } select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF class_name [, ...] ] ] [ LIMIT { count | ALL } [ { OFFSET | , } start ]]
Datatype 是数据类型:varchar2(x), number(x,x), date, integer等。 Not null非空限制,如果不写表示可为空。 Primary key主键,可以紧跟在字段后,或在最后使用constraint。 未指名表空间,数据表建立在用户默认的表空间中。
DDL数据定义语言
SELECT * FROM DEPT WHERE DEPTNO = 20;
--返回部门编码为20的部门数据
SELECT * FROM DEPT WHERE DEPTNO BETWEEN 20 AND 30;
--返回部门编码在20到30之间的部门数据(包括20和30)
DDL数据操作语言
SELECT--单表查询
--字段和表名可以使用别名,方法为 AS 别名,或直接写别名,表如 果指定别名,原表名在该查询中不能再被使用。
DΒιβλιοθήκη BaiduL数据操作语言
SELECT--Joins(连接)
• 语法
{ T1 } [ NATURAL ] [ INNER | { LEFT | RIGHT | FULL } [ OUTER ] ] JOIN { T2 } { ON search condition | USING ( join column list ) }
SELECT * FROM DEPT;
查询表中所有字段和所有记录,select后跟* 表示所有字段 查询指定字段,在select后跟查询的字段名列表,字段间 用’,’隔开
SELECT DEPTNO, DNAME FROM DEPT;
•
条件查询,FROM后面使用WHERE,在WHERE中可以使 用=, <>, >,<,>=,<=,BETWEEN,LIKE,IN,返回WHERE条件 为true的数据
CREATE--创建索引
• CREATE [UNIQUE] INDEX index_name ON table_name(column_list)[tablespace tablespace_name];
在table_name表上按照column_list建立索引,索引名为 index_name,索引保存在tablespace_name表空间中。 UNIQUE:唯一性索引。
--字段名前使用表名.指定表字段,在WHERE中先写表关联关系,从 FROM的内侧(即左侧)向外侧写(即右侧),表关联写完后 再写查询条件,不要把表管理和查询条件混在一起写,这虽然 不是必须的,但却是规范推荐的。
SELECT E.EMPNO AS 职工编码, E.ENAME 姓名, E.JOB, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND D.DEPTNO = 20;
•
后续查询范例均以oracle中的SCOTT/TIGER用户表为例
DDL数据操作语言
SCOTT/TIGER表介绍
•
DEPT部门定义表,DEPTNO是主键
•
EMP职工表,EMPNO主键,DEPTNO外键关联DEPT
•
其他表没有数据或没有关系,不在这里介绍
DDL数据操作语言
SELECT--单表查询
• •
DDL数据定义语言
CREATE--创建数据表
• CREATE TABLE table_name( Column1 datatype [default][not null] [primary key], [………,] [constraint key_name primary key(column_list) [using index tablespace tablespace_name]] )[tablespace tablespace_name];
•
一个条件 JOIN 必须通过提供一个(并且只能有一个) NATURAL,ON,或者 USING 这样的关键字来声明它的 连接条件. ON 子句 接受一个 search condition, 它与一 个 WHERE 子句相同.USING 子句接受一个用逗号分隔的 字段名列表,连接表中必须都有这些字段, 并且用那些字 段连接这些表。 NATURAL 是 USING 子句的缩写,它列出两个表中所有公 共 的字段名字。
需要注意的是,删除表后,表中的索引也被删除,所以,在执行上述 操作前要保留好表的索引脚本。
•
这里没有写DROP DATABASE的语法,如果大家想 要尝试删除数据库的话,最好在专家的指导下进行!
DDL数据操作语言
• • • • SELECT(查询) INSERT(插入) UPDATE(更新) DELETE(删除)
在table_name表中增加column1,column2..字段,追加到字段最后。
• ALTER TABLE table_name MODIFY(column1 datatype [default ] [{not null|nullable}],column2 datatype [default ] [{not null|nullable}], …..
DDL数据定义语言
• CREATE(建立) • ALTER(修改) • DROP(删除)
语言描述约定
• [ ]:表示可选项 • { | }:表示选择项 • CREATE:粗体表示关键字或必输项 • Table_name:斜体表示用户输入项
•
创建 :蓝色表示说明
DDL数据定义语言
CREATE--创建用户
SELECT * FROM DEPT WHERE DNAME LIKE ‘ACCOUNT%’; --返回部门名称以ACCOUNT开始的部门数据 SELECT * FROM DEPT WHERE DNAME LIKE ‘%UNT%’; --返回部门名称含UNT的部门数据,%全匹配符,?单匹配符 SELECT * FROM DEPT WHERE DEPTNO IN (20, 30) AND (DNAME LIKE ‘%UNT%’ OR DNAME = ‘SALES’); --返回部门编码等于20和30并且部门名称含UNT或等于SALES的部 门数据,AND与,OR或,IN和(等同OR)
• CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE tablespace_name];
创建user_name用户,密码为password,使用 tablespace_name表空间,如果没有指定表空间,默认表 空间为system表空间。Oracle10g有用户默认表空间设置。 建议在创建用户时一定要指名表空间。