oracle入门
- 格式:docx
- 大小:34.46 KB
- 文档页数:21
【最新整理,下载后即可编辑】韩顺平—玩转oracle视频教程笔记一:Oracle认证,与其它数据库比较,安装Oracle安装会自动的生成sys用户和system用户:(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install(2)system用户是管理操作员,权限也很大。
具有sysoper角色,没有create database的权限,默认的密码是manager(3)一般讲,对数据库维护,使用system用户登录就可以拉也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
二:Oracle的基本使用--基本命令sql*plus的常用命令连接命令1.conn[ect]用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper2.disc[onnect]说明: 该命令用来断开与当前数据库的连接3.psssw[ord]说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
4.show user说明: 显示当前用户名5.exit说明: 该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令1.start和@说明: 运行sql脚本案例: sql>@ d:\a.sql或是sql>start d:\a.sql2.edit说明: 该命令可以编辑指定的sql脚本案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开3.spool说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\b.sql 并输入sql>spool off交互式命令1.&说明:可以替代变量,而该变量在执行时,需要用户输入。
数据库oracle基础知识数据库Oracle是一款企业级关系数据库管理系统,被广泛应用于大型企业和政府机构。
为了从事Oracle数据库开发工作,需要掌握以下基础知识。
1. SQL语言SQL语言是Oracle数据库最常用的查询和管理语言。
它可以用于创建、修改和删除表格、存储过程和函数等对象。
SQL语言可以通过命令行工具或GUI工具(如Oracle SQL Developer)使用。
2. 数据类型Oracle数据库支持多种数据类型,包括字符型、数值型、日期型和布尔型等。
掌握各种数据类型的特点和使用方法对于正确存储数据非常重要。
3. 约束在Oracle数据库中,约束是定义表列或表之间关系的规则。
包括主键、外键、唯一约束和检查约束等。
理解和正确使用约束可以有效维护数据完整性。
4. 触发器触发器是一种在表上执行的操作,例如在插入、更新和删除时。
掌握触发器的创建和使用可以帮助开发者增强数据的一致性和完整性。
5. 存储过程和函数存储过程和函数是一些预定义的SQL语句,封装起来方便被调用。
存储过程和函数类似,但存储过程是没有返回值的,而函数则需要返回一个值。
掌握存储过程和函数的使用可以提高数据库的性能和效率。
6. 高可用性Oracle数据库提供了许多机制,确保在故障时保持数据库高可用性。
这包括了备份和恢复、灾备等方案。
掌握这些机制可以帮助开发者保障数据可靠性和业务连续性。
通过学习以上基础知识,可以使Oracle数据库开发者理解Oracle数据库的基本原理和概念。
并且可以使用这些知识来开发高效、高可用性、可扩展的Oracle数据库应用程序。
超详细oracle教程菜鸟入门手册1. 什么是Oracle数据库Oracle数据库是全球领先的关系型数据库管理系统之一,被广泛应用于数据存储、数据处理和数据分析领域。
Oracle数据库可以在多种操作系统上运行,包括Windows、Linux、UNIX等。
Oracle数据库提供了丰富的功能和工具,支持高并发、高可用、高安全的数据存储和处理。
2. Oracle数据库的安装## 2.1 下载Oracle数据库安装包在Oracle官网下载对应版本的Oracle数据库安装包,根据操作系统选择对应的版本。
## 2.2 安装Oracle数据库双击安装包,按照提示进行安装。
需要注意的是,在安装过程中需要设置管理员账号和密码,以及数据库实例名称等信息。
## 2.3 配置Oracle数据库安装完成后,需要进行一些配置工作,包括设置环境变量、创建监听器等。
具体步骤可以参考Oracle官方文档。
3. Oracle数据库的基本操作## 3.1 登录Oracle数据库使用SQL*Plus或其他数据库管理工具登录Oracle数据库,输入管理员账号和密码即可。
## 3.2 创建表使用CREATE TABLE语句创建表,指定表名、字段名、数据类型等信息。
## 3.3 插入数据使用INSERT INTO语句插入数据,指定表名和插入的数据内容。
## 3.4 查询数据使用SELECT语句查询数据,可以指定查询条件、排序方式等。
## 3.5 更新数据使用UPDATE语句更新数据,可以指定更新条件和更新的数据内容。
## 3.6 删除数据使用DELETE语句删除数据,可以指定删除条件。
4. Oracle数据库的高级功能## 4.1 数据库备份和恢复Oracle数据库支持多种备份和恢复方式,包括数据文件备份、在线备份、冷备份等。
在数据库出现故障或数据丢失的情况下,可以通过备份文件进行恢复。
## 4.2 数据库性能优化Oracle数据库提供了多种性能优化工具,包括AWR报告、SQL调优等。
oracle数据库入门教程Oracle数据库入门教程Oracle数据库是当今世界上最受欢迎和广泛使用的关系数据库管理系统之一。
它提供了高度可靠性、可扩展性和安全性,使得它成为许多企业和组织的首选数据库解决方案。
本教程将介绍如何入门使用Oracle数据库,从安装到基本的数据操作和查询。
第一部分:安装和配置Oracle数据库1. 下载和安装Oracle数据库首先,您需要从Oracle官方网站上下载并安装Oracle数据库软件。
根据您的操作系统选择合适的版本,并按照官方安装指南进行操作。
2. 配置Oracle数据库安装完成后,您需要进行一些基本的配置。
这包括设置管理员密码、配置监听器和网络连接,以及创建初始化参数文件。
详细的配置步骤可以在官方文档中找到。
3. 启动和停止Oracle数据库一旦配置完成,您可以使用Oracle提供的工具启动和停止数据库。
通常,您需要先启动监听器,然后启动数据库实例。
同样,停止的顺序也是先停止数据库实例,再停止监听器。
第二部分:Oracle数据库基础知识1. 数据库和实例在Oracle概念中,数据库是物理文件的集合,用于存储数据。
而实例则是数据库的运行环境,包括内存结构和进程。
一个数据库可以对应多个实例,每个实例可以在不同的计算机上运行。
2. 数据表和字段在Oracle数据库中,数据以表的形式组织。
表由列(字段)和行组成,每个列定义了一种数据类型。
您可以使用SQL语句或图形界面工具创建和管理表,为每个字段指定适当的数据类型、长度和约束。
3. 数据类型Oracle数据库支持多种数据类型,包括数值、字符、日期、布尔、LOB(二进制大对象)等。
了解每种数据类型的特性和用法对于有效存储和检索数据至关重要。
第三部分:Oracle SQLSQL是结构化查询语言(Structured Query Language)的缩写,是Oracle数据库的标准查询语言。
它允许用户执行各种操作,如插入、更新和删除数据,以及查询和排序数据。
oracle数据库菜鸟教程Oracle数据库是一种关系型数据库管理系统,被广泛应用于企业级数据管理和处理领域。
对于初学者而言,了解Oracle数据库以及如何使用它可能会感到有些困惑。
因此,本文将为初学者提供一个简明扼要的Oracle数据库菜鸟教程,旨在帮助他们快速入门。
第一部分:Oracle数据库概述首先,让我们来了解一下Oracle数据库的基本概念。
Oracle数据库是一种关系数据库管理系统(RDBMS),它基于集中式数据模型,其中数据存储在多个表中,并通过关系连接进行检索和操作。
Oracle数据库具有高度的可扩展性、可靠性和安全性,并可适用于各种规模的应用程序。
Oracle数据库使用结构化查询语言(SQL)作为其主要查询和操纵语言。
SQL是一种标准化的语言,用于在关系数据库中完成各种操作,包括数据检索、插入、更新和删除。
Oracle数据库还提供了一个图形用户界面(GUI)工具,称为Oracle SQL开发人员。
该工具可用于编写、执行SQL语句以及管理数据库对象,如表、视图、索引等。
第二部分:Oracle数据库安装和配置在使用Oracle数据库之前,首先需要安装和配置它。
下面是一些简单的步骤,可以帮助您完成这个过程:1. 下载Oracle数据库软件:您可以从Oracle官方网站上下载适合您操作系统的Oracle数据库软件。
2. 安装Oracle数据库软件:打开下载的软件包,并按照向导中的说明进行安装。
在安装过程中,您需要选择一些配置选项,如数据库实例名称、监听器端口等。
3. 创建Oracle数据库实例:在安装完成后,您需要创建一个数据库实例来存储和管理您的数据。
通过运行配置助手或使用命令行实用程序可以进行此操作。
4. 配置网络连接:如果您希望从远程计算机连接到Oracle数据库,需要配置网络连接设置。
这包括设置监听器以侦听来自客户端的连接请求。
5. 测试连接:最后,您可以使用Oracle SQL开发人员或其他SQL客户端工具来测试您的数据库连接是否正常工作。
Oracle数据库入门教程Oracle数据库是目前世界上广泛应用的一种关系型数据库管理系统。
它具有高性能、高稳定性和高安全性的特点,在各种规模的企业和组织中被广泛使用。
本文将介绍Oracle数据库的基本概念、安装和配置、SQL语句以及常用管理工具等内容,帮助读者快速入门Oracle数据库。
一、Oracle数据库基本概念1. 数据库:数据库是一个有组织的数据集合,通过数据库管理系统(DBMS)进行管理和访问。
Oracle数据库是一种关系型数据库管理系统,使用表格来存储数据。
2. 实例:实例是Oracle数据库在内存中运行的副本。
每个实例对应一个特定的数据库,负责连接管理、内存管理、进程管理和数据缓存等。
3. 表空间:表空间是Oracle数据库中用来管理存储空间的逻辑结构,用于存储表、索引、数据文件等对象。
4. 数据文件:数据文件是Oracle数据库中用来存储实际数据的物理文件。
5.表:表是数据库中最基本的数据存储单位,由行和列组成。
6.列:列是表中的一个字段,用于存储不同类型的数据。
7.行:行是表中的一条记录,包含了不同列的数据。
二、Oracle数据库安装和配置2.配置实例:安装完成后,通过配置文件对实例进行配置,包括设置实例名、监听器端口、字符集等参数。
3.创建表空间:使用SQL语句创建需要的表空间,指定数据文件存储路径和大小等参数。
4.创建用户:通过SQL语句创建数据库用户,为用户分配合适的权限。
三、SQL语句1.创建表:使用CREATETABLE语句创建表,指定列的名称、数据类型以及约束等。
2.插入数据:使用INSERTINTO语句插入数据,指定表名和要插入的数据。
3.更新数据:使用UPDATE语句更新数据,指定表名、列名和要更新的值。
4.删除数据:使用DELETEFROM语句删除数据,指定表名和删除条件。
5.查询数据:使用SELECT语句查询数据,可以使用WHERE子句指定查询条件。
6.排序数据:使用ORDERBY子句对查询结果进行排序。
oracle基本操作Oracle是一种关系数据库管理系统,它是世界上最受欢迎的企业级数据库。
它被各种企业广泛使用,它的功能非常强大,包括数据安全、访问控制、事务处理、性能优化、数据备份和恢复等。
本文将介绍Oracle的基本操作,包括如何创建、修改和删除表,如何插入、更新和删除数据,以及如何查询和导出数据。
这些操作对于初学者来说非常重要,也是使用Oracle的基础。
1.创建表格在Oracle中,创建表的语法如下:CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );其中,table_name是要创建的表的名称,column1、column2等是列名,datatype是列的数据类型。
例如,创建一个名为“employees”的表格,并添加列“id”、“name”和“salary”,则可以使用以下命令:CREATE TABLE employees ( id NUMBER(4) NOT NULL, name VARCHAR2(15) NOT NULL, salary NUMBER(7,2), PRIMARY KEY (id) );注意,id和name列设置为NOT NULL,这表示这两列不能为空。
salary列的数据类型为NUMBER,并设置了精度和小数位数。
2.修改表格如果需要修改表格,可以使用ALTER TABLE命令。
例如,如果想向employees表格添加新的列“address”,可以使用以下命令:ALTER TABLE employees ADD address VARCHAR2(50);如果需要删除表格中的列,可以使用以下命令:ALTER TABLE employees DROP COLUMN address;3.删除表格如果需要删除一个表格,可以使用以下命令:DROP TABLE table_name;例如,删除名为“employees”的表格:DROP TABLE employees;如果不小心使用了错误的命令或者删除的表格不是自己想要的,则可以使用RECOVER命令来找回删除的表格。
oracle教程从入门到精通Oracle是一种关系数据库管理系统,被广泛用于企业级应用程序的开发和数据管理。
以下是一份Oracle教程,从入门到精通。
第一部分:入门篇1.了解数据库概念:数据库是一个用于存储和管理数据的系统。
它能够存储结构化数据,以便后续的检索、更新和删除操作。
3.创建数据库实例:在安装完成后,使用数据库配置助手创建一个数据库实例。
4.了解SQL语言:SQL(Structured Query Language)是一种用于与数据库交互的标准语言。
第二部分:基础篇1.连接到数据库:使用SQL*Plus工具可以连接到Oracle数据库,并执行SQL语句。
2.创建表格:学习如何使用CREATETABLE语句创建表格,并定义表格中的列。
3.插入数据:使用INSERTINTO语句将数据插入到表格中。
4.选择数据:使用SELECT语句从表格中检索数据。
5.更新和删除数据:使用UPDATE和DELETE语句更新和删除表格中的数据。
6.条件查询:学习如何使用WHERE子句来筛选满足特定条件的数据。
7.排序和分组:使用ORDERBY和GROUPBY子句对数据进行排序和分组。
8.连接表格:使用JOIN语句将不同表格中的相关数据连接起来。
第三部分:进阶篇1.创建索引:了解什么是索引,并学习如何使用CREATEINDEX语句创建索引,以提高查询性能。
2.数据完整性:学习如何使用约束来维护数据的完整性,包括主键、外键和唯一约束等。
3.事务管理:了解事务的概念,并学习如何使用COMMIT和ROLLBACK语句管理事务。
4.视图:学习如何使用CREATEVIEW语句创建视图,以简化复杂的查询操作。
5.存储过程和函数:了解存储过程和函数的概念,并学习如何使用CREATEPROCEDURE和CREATEFUNCTION语句创建它们。
6.触发器:学习如何使用CREATETRIGGER语句创建触发器,以在数据库操作发生时自动执行特定的动作。
Oracle基础必学知识点1. 数据库概念:Oracle是一种关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。
它支持SQL语言,可以通过SQL语句进行数据查询、插入、更新和删除操作。
2. 数据库对象:Oracle数据库由多个对象组成,包括表、视图、索引、序列、存储过程等。
这些对象用于存储和处理数据,可以通过SQL语句进行操作。
3. 数据类型:Oracle支持多种数据类型,包括数字、字符、日期、大对象(LOB)等。
不同的数据类型用于存储不同类型的数据,可以根据需求选择合适的数据类型。
4. 表操作:在Oracle中,表用于存储数据。
可以使用CREATE TABLE语句创建表,使用INSERT语句插入数据,使用SELECT语句查询数据,使用UPDATE语句更新数据,使用DELETE语句删除数据。
5. 索引:索引是一种用于提高查询性能的数据结构。
在Oracle中,可以使用CREATE INDEX语句创建索引,通过索引可以快速定位到需要查询的数据,提高查询效率。
6. 数据约束:数据约束是用于保证数据的完整性和有效性的规则。
在Oracle中,可以使用约束来限制数据的取值范围、保证数据的唯一性等。
常见的约束类型包括主键约束、外键约束、唯一约束、非空约束等。
7. 视图:视图是一种虚拟表,它是从一个或多个表中获取数据的查询结果。
在Oracle中,可以使用CREATE VIEW语句创建视图,通过视图可以简化复杂的查询操作,提高数据的安全性。
8. 存储过程:存储过程是一组预先编译的SQL语句,存储在数据库中,并可以通过调用来执行。
在Oracle中,可以使用CREATE PROCEDURE语句创建存储过程,通过存储过程可以实现复杂的数据处理逻辑。
9. 事务控制:事务是一组逻辑操作,要么全部执行成功,要么全部回滚。
在Oracle中,可以使用BEGIN/END语句或者显式的事务语句(如COMMIT和ROLLBACK)来控制事务的提交或回滚。
一、安装二、启动服务:a)OracleServiceORCLb)OracleOraDb11g_home2TNSListener三、用户管理a)sys: 超级管理员,权限最大b)system: 管理员c)scott: 实例账户,密码:tigerd)登录用户:i.conn system/Manager1 as sysdbae)f)分配权限:grant权限名to 用户名;g)权限:connect, resource, dbah)撤销权限:revoke权限名from 用户名;i)修饰用户密码:alter user 用户名identified by 新密码;j)锁定用户:alter user 用户名account lock;k)解锁用户:alter user 用户名account unlock;l)删除用户:drop user 用户名[cascade];四、表空间a)b)五、灾难处理a)使用sysdba身份强行登录i.conn system/Manager1 as sysdba;b)排错,强行启动数据库i.alter database open;c)离线删除i.alter database datafile 'f:\etc.mdf' offline drop;d)重启启动数据库i.alter database open;e)删除表空间i.drop tablespace etc_space;六、数据类型a)字符型:能够存储字符i.char: 固定长度,1-2000字节ii.varchar2(长度) :可变长度1-4000字节iii.long: 可变长度2gb)数值型:不区分小数和整数i.number(总长度,小数位)1.number(4,1)-999.9 – 999.92.number(5,2) -999.99 999.99c)日期型:能够存储日期时间i.data: 精确到秒ii.timestamp: 精确到秒后六位d)二进制:i.RAW: 2000字节ii.Long RAW: 2ge)大对象:i.Lob(large object) : 4gii.Clob: 文本大对象4giii.Blob: 二进制文件,4giv.Bfile: 外部文件大对象,外部文件的引用指针无限大i.drop table 表名;八、数据管理a)添加:i.insert into 表名values(值必须和表中的每个字段匹配)ii.insert into 表名(字段名…) values(值…)b)删除:i.delete from 表名where 条件c)修改:i.update 表名set 字段名=值, 字段名=值…. Where 条件d)查询:i.select * from 表名;ii.select 字段名1, 字段名2,…字段名n from 表名where 条件e)查询是否为空:is null / is not nullf)模糊查询:like _一个字符%任意个字符g)in: 是否与目标集合相等not in: 与in相反h)between…and 在…之间i.select ename,sal from emp where sal between 2000 and 4000--查询emp表中所有的姓名和工资select ename,sal from emp;--查询佣金为空的员工姓名及工资select ename,sal,comm from emp where comm is not null;--查询姓名以字母'S'开头的员工(模糊查询)SELECT*from emp where ename like 'S%'--查询姓名第二个字母'O'的员工(模糊查询)SELECT*from emp where ename like '_O%'--查询姓名最后一个字母'T'的员工(模糊查询)SELECT*from emp where ename like '%T'--查询姓名有5个字符,最后一个字母'T'的员工(模糊查询)SELECT*from emp where ename like '____T'select*from emp where sal like '%3%'select*from emp where sal like '3___'--查询工资大于3000的所有员工信息select*from emp where sal>3000--查询所有的经理和办事的详细资料select*from emp where job='MANAGER' or job='CLERK'select*from emp where job in('MANAGER' , 'CLERK')--查询工资是800,1500,5000的员工姓名,工资,select ename,sal from emp where sal=800 or sal=1500 or sal=5000select ename,sal from emp where sal not in(800,1500,3000,2250,1680,5000) --按参加工作时间从早到晚显示员工信息select*from emp order by hiredate--查询工资在2000--4000之间的员工姓名及工资select ename,sal from emp where sal>=2000 and sal<=4000select ename,sal from emp where sal between 2000 and 4000第二天:1.序列:a)b)1 选择部门30中的所有员工select*from emp where deptno=30;2 列出所有办事员(CLERK)的姓名、编号和部门编号select ename,empno,deptno from emp where job='CLERK'3 找出佣金(COMM)高于薪金(SAL)的员工select*from emp where comm>sal;4 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金(SAL)大于或等于2000的所有员工的详细资料select*from emp where(deptno=10 and job='MANAGER')or(deptno=20 and job='CLERK')or(job!='MANAGER' and job<>'CLERK' and sal>=2000)5 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料select*from emp where deptno=10 and job='MANAGER' or deptno=20 andjob='CLERK'6 找出不收取佣金或收取佣金低于100的员工select*from emp where comm is null or comm<1007 列出薪金比“SMITH”多的所有员工信息select*from emp where sal>(select sal from emp where ename='SMITH')8 列出与“SCOTT”从事相同工作的所有员工select*from emp where job=(select job from emp where ename='SCOTT')9 列出薪金高于部门30 中所有员工的平均薪金的所有员工的姓名和薪金select ename,sal from emp where sal>(select avg(sal)from emp where deptno=30) 10 显示部门20的员工人数select count(empno)from emp where deptno=20;11 列出所有员工的年工资,按照年薪从低到高排序select sal*12 s from emp order by s;12 查询工资高于公司平均工资的所有员工select ename,sal from emp where sal>(select avg(sal)from emp);1.约束a)主键:唯一,非空,primary keyb)非空:not nullc)检查:checkd)默认值:在没有添加数据时,将自动添加默认值defaulte)唯一:unique2.函数的分类:a)单值函数:有且只有一个返回值i.字符函数:处理字符串ii.数学函数:处理数值iii.日期函数:处理日期时间iv.转换函数:类型的转换v.混合函数:特定功能3.分组函数:类似聚合函数sum, avg, max, min counti.问题1:显示部门30中所有员工的工资总和1.Select sum(sal) from emp where deptno=30;ii.问题2:显示部门30中的工资平均1.Select avg(sal) from emp where deptno=30;iii.问题3:显示工资高于3000的员工个数1.Select count(empno) from emp where sal>3000;iv.问题4:显示工资最低的员工信息1.Select * from emp where sal=(select min(sal) from emp);4.字符函数i.问题1:查询员工姓名和工作,中间使用”-”连接起来1.函数:concat(字符串1,字符串2)a)select concat(concat(ename,'-'),job)from emp;2.扩展:使用字符串连接符“||”a)select ename||'-'||job from emp;ii.问题2:截取员工姓名的前3个字符和字符4及以后的内容显示1.函数:字符串截取函数:substr(待处理的字符串,截取的起始位置,截几个)2.注意:Oracle中的字符串下标从1开始a)select substr(ename,1,3),substr(ename,4)from emp;iii.问题4:显示员工姓名包含字母’T’的员工信息1.函数:字符定位函数instr(待处理的字符串,要查询的字符,起始位置,第n次出现)2.返回值:字母所在的位置,如果没有返回0a)select ename from emp where instr(ename,'T',1,1)<>0;3.扩展:查询字母’T’在员工姓名中第一次和第二次出现的位置a)select ename,instr(ename,'T',1,1), instr(ename,'T',1,2)from emp;iv.问题6:将用户姓名小写显示1.函数:字符串小写转换lower(字符串) / uppera)select lower(ename),upper(ename)from emp;v.问题7: 将工作种类首字母大写显示1.函数:首字母大写函数initcap(字符串)a)select initcap(job)from emp;vi.问题8:将用户姓名中的’T’替换成’O’显示1.函数:替换函数:replace(待处理的字符串,要查找的字符串,要替换的字符串)a)select ename,replace(ename,'T','O')from emp;vii.显示姓名只有5个字母的员工信息1.长度函数:length(字符串)a)返回值:该字符串的长度b)select ename from emp where length(ename)=5;5.日期、时间函数a)问题1:查询当前系统时间i.时间函数:sysdateii.select sysdate from dual;iii.dual:是一张无意义的表,专门用于函数的测试b)查询12年前参加工作的员工i.函数:月份差函数months_between(时间1,时间2)ii.select ename,hiredate from emp where months_between(sysdate,hiredate)>=144;c)查询在当月倒数第三天入职的员工信息i.函数:last_day(时间)1.select ename,hiredate from emp wherelast_day(hiredate)-2=hiredate;d)查询每个员工的工作天数i.规则:Oracle中的时间相减得到的是两个时间的天数差1.select ename,sysdate-hiredate||'天' from emp;e)月份添加i.add_months(待处理的时间,添加月份的数量)1.select hiredate, add_months(hiredate,3)from emp;6.转换函数a)1.insert into test_date values('22-12月-2012');ii.解决方案2:使用to_date(要添加的日期,格式);iii.insert into test_date values(to_date('2013-03-12 13:42:11','yyyy-mm-dd hh24:mi:ss'));iv.问题2:按照年月日、时分秒、星期几等信息显示系统时间v.to_char(时间,格式)vi.select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day d ddd') from dual;7.混合函数:a)替空函数:nvl(字段名称,替换的值)b)select sal+nvl(comm,0)from emp;8.数值函数a)问题1:按每月30计算员工的每日工资,要求结果四舍五入到小数点后2位b)函数:round(数值,数度)i.select sal/30,round(sal/30,2)from emp;c)问题2:计算每个员工已经工作了多少个月,要求忽略小数部分i.取整:trunc(时间);ii.select ename,trunc(months_between(sysdate,hiredate))from emp;d)ceil(数值) 向上取,得到一个整数e)floor(数值) 向下取,得到一个整数f)power(m,n) : m的n次方select power(2,3) 8g)abs(数值) 绝对值9.一、多表查询a)等连接i.问题:显示员工的姓名,及其所在部门的名称ii.分析:ename—emp dname – deptiii.关系:emp(deptno) dept(deptno)iv.select e.ename, d.dname from emp e,dept d where e.deptno=d.deptno;b)外连接i.问题:查询所有部门名称和对应的员工姓名,若该部门没有员工,则只显示部门名称ii.分析:部门名称dept-dname 员工姓名emp-enameiii.select d.deptno,d.dname,e.ename from emp e,dept d wheree.deptno(+)=d.deptno;iv.注意:Oracle中使用(+) 表示外连接,可以理解(+)所在字段的对侧为主要显示信息,对侧表示以=分开左右两部分c)自连接i.问题:显示员工姓名及其上级员工姓名ii.分析:员工姓名emp-ename 上级姓名emp-enameiii.select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno(+);d)子查询i.问题:查询工资高于公司平均工资的所有员工信息1.select ename,sal from emp where sal>(select avg(sal)from emp);二、集合,用于查询a)并集:i.b)交集:i.c)差集:i.三、a)用户:useri.在建立其他对象之前,首先创建的是用户对象,它是其他对象的宿主,建立、删除和维护用户ii.iii.1.alter user 用户名identified by 新密码;iv.锁定用户,需要管理员执行1.Alter user 用户名account lock;v.解锁用户,需要管理员执行1.Alter user 用户名account unlock;vi.授权,需要管理员执行connect, resource, dba1.grant 权限名1,权限名2…. To 用户名;vii.撤销权限,需要管理员执行1.Revoke 权限名from 用户名;viii.删除用户,需要管理员执行1.Drop user 用户名[cascade];b)表:tablei.ii.查看表结构1.desc 表名;iii.添加新字段,address, telephoneiv.语法:alter table 表名add(字段名称类型)1.alter table student add(address varchar2(20));2.alter table student add(telepnone varchar2(20));v.删除address字段vi.语法:alter table 表名drop column 字段名;1.alter table student drop column address;vii.修改字段telepnone的类型为8位数字1.注意:在修改字段类型之前需要原字段的内容清空2.语法:alter table 列名modify(字段名,新类型)3.alter table student modify(telepnone number(8))viii.给表改名字1.语法:rename 源名to 新名;2.Rename student to stu;ix.删除表1.drop table 表名;c)第三天:回顾:1.分组函数:sum, avg, max, min, count2.字符函数:a)concat(字符串1,字符串2) ||b)substr(字符串, 起始位置,截取的个数) 下标从1开始c)instr(字符串,要查找的字符串,起始位置,第几次出现)d)lower() / upper / initcape)replace(字符串,需要修改的字符串,修改成什么)f)length(字符串)3.日期函数:a)sysdate 系统时间b)months_between(时间1,时间2) 月份差c)last_day(时间)d)add_months(时间,添加月份)4.数值函数a)round四舍五入/ trunc整数截取/ ceil 向上取ceil(12.1) →13/floor 向下取floor(12.9) →125.转换函数a)insert into t1 values(’23-10月-2011’);b)values(to_date(‘2011-12-22’,’yyyy-mm-dd’))c)select to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’) from dual;6.替空函数a)nvl(字段名,替换的值)b)select ename, nvl(comm,0) from emp;7.多表查询a)等连接b)外连接c)自连接i.select e1.ename,e2.ename from emp e1, emp e2 wheree1.mgr=e2.empno(+)d)子查询8.集合a)并集(union/union all)i.union会消除查询结果中重复的记录,union all 不会消除重复b)交集c)差集数据库对象1.约束a)作用:保证数据的完整性、正确性,减少数据的冗余b)两种方式:i.ii.1.添加主键约束2.3.4.5.6.alter table 表名add constraint 约束名称check(约束条件)a)alter table books add constraint CK_p check(price>=0);7.添加唯一约束8.alter table 表名add unique(字段名称);a)alter table books add unique(bname);9.添加外键约束10.alter table 主表add constraint 约束名称foreign key(外键字段名)references 主键表(主键字段名)a)alter table books add constraint FK_kid foreign key(kid)references kinds(kid);11.删除约束a)alter table student drop constraint FK_kid;2.序列a)作用:实现某字段的,一般是主键的自增长b)语法:i.create sequence 对象名; 表示该字段从1开始每次增长1ii.create sequence 对象名start with 起始值increment by 增长量;iii.例如:合建一个序列对象,从10开始,每次增长101.Create sequence seq_dno start with 10 increment by 10;c)如何访问序列中的值i.对象名.nextvalii.对象名.currval Current Valued)注意:多张表可以共享同一个序列对象,建议一张表使用一个序列e)删除序列:drop sequence 序列名;3.视图:a)是一张虚拟的表,在数据库中本身不存在的数据表,只存在于内存中b)作用:i.简化SQL的查询语句ii.提高数据库查询的安全性c)语法:create or replace view 视图名称as 复杂的SQL语句d)注意:用户必须拥有足够的权限来创建视图i.select * from emp; //不安全ii.select * from v_1;e)删除视图:drop view 视图名;4.同义词,需要足够的权限a)作用:通过给表起别名的机制,能够提高查询的效率及安全性b)语法:i.create synonym 别名for 原表名;ii.c)i.drop [public] synonym 别名;5.索引a)作用:提高查询速度b)语法:create index 索引名on 表名(字段名);c)规则:i.只要涉及到了添加索引的字段就有可能被提速ii.Oracle为每张数据表的主键自动添加了一个索引iii.不带where条件的SQL语句不会被提速iv.有where条件中有函数的字段不被提速v.在where条件中有参与运算的字段不提速vi.尽量少用in, not in, null, is null, like 等关键字vii.查询语句,优先考虑子查询,其次考虑集合查询viii.where条件中限制性强的条件要写在where子句的末尾ix.多表查询时,返回最少行的表名及条件写在最后。