Oracle笔记
oracle 笔记
oracle 笔记Oracle是一种关系数据库管理系统,由Oracle Corporation开发。
以下是关于Oracle的一些笔记:1. 数据库架构:Oracle数据库有两个主要的架构:逻辑架构和物理架构。
逻辑架构包括了数据库对象(表、索引、视图等)以及用户和角色的定义。
物理架构指的是数据在磁盘上的存储方式。
2. 数据库对象:Oracle数据库中的主要对象包括表、索引、视图、触发器、存储过程等。
表是最基本的对象,用于存储数据。
索引用于加快表的查询速度。
视图是一种虚拟表,通过查询一个或多个表返回结果。
触发器是一种在表上定义的操作,当满足某些条件时触发。
存储过程是一段可重复使用的程序代码,用于完成特定的任务。
3. SQL语言:Oracle数据库使用SQL(Structured Query Language)进行数据库操作。
SQL语言包括数据查询语句(SELECT)、数据操作语句(INSERT、UPDATE、DELETE)以及数据定义语句(CREATE、ALTER、DROP)等。
4. 数据库管理:Oracle提供了一套完整的数据库管理工具,包括创建数据库、备份和恢复数据库、监控数据库性能等。
其中,Oracle Enterprise Manager是一个图形化界面的管理工具,可以通过它来管理和监控整个数据库系统。
5. 数据完整性:Oracle数据库通过约束条件来确保数据的完整性。
主键、外键、唯一约束、非空约束等都可以用于限制数据的输入。
此外,还可以使用触发器和存储过程来定义自定义的数据完整性规则。
6. 事务管理:Oracle数据库使用ACID(原子性、一致性、隔离性、持久性)模型来管理事务。
事务是一系列数据库操作的逻辑执行单元,要么全部执行成功,要么全部回滚。
这些只是Oracle数据库的一些基本概念和特点,还有很多其他的内容,如高可用性、性能优化、安全性等。
如果想要深入了解Oracle数据库,可以参考相关的文档和教程。
Oracle学习笔记
Oracle的四个主要用户1.超级管理员sys/change_on_install2.普通管理员system/manager3.普通用户scott/tiger4.大数据用户sh/sh简单查询1.查询表结构 DESC 表名2.简单查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] …FROM 表名 [别名](1)查询时也可以使用四则运算,如:SELECT (字段*x)+y FROM 表名(2)可以使用“||”连接字段与字符串,如:select '工作与工资:' || job || sal 工作工资 from emp执行结果:3.限定查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] …FROM 表名 [别名][WHERE 条件(s)](1)Where字句后可以增加多个条件,最常见的条件就是最基本关系运算:>、<、>=、<=、!=(<>)、BE TWEEN…AND、LIKE、IN(指定范围)、IS NULL(为空)、AND(且)、OR(或)、NOT(非)。
(2)多个条件可以使用AND与OR连接。
例如:select * from emp where sal>1300 and sal<4000(3)范围判断BE TWEEN…AND:BETWEEN 最小值 AND 最大值(大于等于最小值,小于等于最大值),BE TWEEN…AND 对数字、日期都可以使用!!!例如:select * from emp where sal between 1300 and 4000例如:select * from emp where hiredate between '01-1月-1981' and '31-12月-1981'(4)判断为空IS (NOT) NULL例如:select * from emp where comm is null例如:select * from emp where comm is not null例如:select * from emp where not comm is null(5)指定范围的判断(NOT) IN例如:select * from emp where empno in(7369,7566,7799)例如:select * from emp where empno not in(7369,7566,7799)注意:如果NOT IN 范围里出现了NULL则查询不到任何结果!!!(6)模糊查询LIKE,‘_’匹配一个字符。
Oracle超详细学习笔记
Oracle超详细学习笔记-----员⼯培训------1.最简单的查询--例SELECT *FROM employees;DESC employees;SET linesize 600;SET PAGESIZE 50;--例2SELECT table_name FROM user_tables;--查询数据库中所有表名--2.查询特定的列--例SELECT employee_id,fisrt_name,last_name.salaryFROM employees;--3.在SELECT⼦句中使⽤直接量--例SELECT 5FROM employees;-----------------------SELECT 5FROM dual;--这是Oracle提供的伪表--例2:SELECT 'Hello Oracle SQL'--在Oracle中如何表⽰字符串常量FROM employees;SELECT 'Hello Oracle SQL'--在Oracle中如何表⽰字符串常量FROM dual;--例3:SELECT 'Hello Oracle''s SQL'--⽤两个连续单引号进⾏单引号转义FROM employees;--4在SELECT⼦句中使⽤算术表达式--例1:查询员⼯的编号、姓名和年薪SELECT employee_id,fist_name,last_name,salry,salary*12FROM employees;--例2:SELECT 5/2FROM dual;--5.给例定义别名--例1:SELECT employee_id AS idFROM employees;--例2:SELECT employee_id AS "Id"--双引号中的字符原样显⽰FROM employees;--例3:SELECT employee_id,fist_name,last_name,salry,salary*12 AS annual_salary FROM employees;--例4:SELECT employee_id,fist_name,last_name,salry,salary*12 AS "annual salary" FROM employees;--如果别名有特殊字符必须使⽤双引号--6.字符串的链接运算符--例:SELECT employee_id||''||fist_name,last_name,salry,salary*12 AS annual_salary FROM employees;--7.过滤重复记录--例1:SELECT DISTINCT department_idFROM employees;--例2:SELECT DISTINCT department_id,job_idFROM employees;--第⼆章过滤查询和结果集排序--1.使⽤WHERE⼦句过滤记录--例1:SELECT *FROM employeesWHERE salary > 8000;--例2:SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary = 17000;--例3:SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary <> 17000;-- !=--⽐较运算符号:>,>=,<,<=,=,!=或<>--例4SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary >=2500 AND salary <= 17000;--逻辑运算符:AND,OR,NOT--2.在WHERE⼦句中使⽤字符串和⽇期--例1:查询职位ID为st_clerk的员⼯信息SELECT employee_id,job_id,first_name,FROM employeesWHERE job_id = 'ST_CLERK';--表中字段的值是区分⼤⼩写的--例2:查询1998年7⽉9⽇⼊职的员⼯信息SELECT employee_id,job_id,first_nameFROM employeesWHERE hire_date = '09-7⽉-1998';--⽇期直接量必须以字符串的形式来体现--Oracle的⽇期是格式敏感的--标准⽇期表⽰DD-MM-RR--3.其他⽐较运算符--1)BETWEEN AND--例1:查询⼯资在【2500,7000】上的员⼯信息SELECT employee_id,job_id,first_name,salaryFROM employeesWHERE salary BETWEEN 2500 AND 7000;--包含边界值--第⼀个值要⼩于第⼆个值--练习:查询1998年⼊职的员⼯信息SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE hire_date BETWEEN '01-1⽉-1998' AND '31-12⽉-1998';--2) IN--例1:查询职位ID是ST_CLERK或者ST_MAN的员⼯SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id IN ('ST_CLERK','ST_MAN');--例2SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE NOT job_id IN ('ST_CLERK','ST_MAN');----------------------------------------------------------------------------SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id NOT IN ('ST_CLERK','ST_MAN');--3)LIKE--例1:模糊查询SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id LIKE 'ST%';--通配符:%任意多个字符,_⼀个字符。
oracle 笔记
oracle 笔记摘要:一、Oracle 简介1.Oracle 的发展历程2.Oracle 的产品和服务二、Oracle 数据库的基本概念1.数据库管理系统2.关系型数据库3.Oracle 数据库的结构三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件2.安装过程及注意事项3.配置Oracle 数据库四、Oracle 数据库的管理1.数据库的启动与关闭2.数据库的备份与恢复3.用户与权限管理五、SQL 语言基础1.SQL 简介2.SELECT 查询语句3.INSERT、UPDATE 和DELETE 操作语句六、PL/SQL 编程1.PL/SQL简介2.存储过程与函数3.触发器与异常处理七、Oracle 数据库的应用1.Oracle 数据库在企业级应用中的优势2.Oracle 数据库在典型行业的应用案例正文:一、Oracle 简介Oracle(甲骨文)公司成立于1977 年,总部位于美国加州,是全球著名的数据库软件及解决方案供应商。
Oracle 的产品和服务涵盖了数据库、应用软件、中间件、云计算等领域,广泛应用于企业、政府、金融、医疗等各个行业。
二、Oracle 数据库的基本概念1.数据库管理系统:数据库管理系统(DBMS)是一种用于存储、检索和管理数据的计算机软件。
它提供了对数据的高效组织、存储、检索、更新和维护功能。
2.关系型数据库:关系型数据库是基于关系模型的数据库,采用表格形式存储数据,并通过SQL(结构化查询语言)进行操作。
Oracle 数据库是一种关系型数据库,具有强大的数据管理功能和高度的数据安全性。
3.Oracle 数据库的结构:Oracle 数据库由物理结构和逻辑结构组成。
物理结构包括数据库文件、数据块、表空间等;逻辑结构包括表、视图、索引等。
三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件:首先,需要确保计算机硬件满足Oracle 数据库的最低要求;其次,需要获取Oracle 数据库的安装文件,这些文件通常可以从Oracle 官网下载。
Oracle笔记
2.数据库应用系统 (5)3.数据库管理员(DBA) (5)4.数据库系统 (5)第二章数据库操作工具 (6)启动数据库服务: (6)1.使用sqlplus工具操作数据库 (6)(1)启动sqlplus (6)(2)配置sqlplus (6)(3)输出sql语句 (6)2.PL/SQL Developer工具 (7)3.sql语句概要 (7)(1)sql语句分类 (7)(2)sql语句的书写规则 (7)第三章用户管理 (8)1.用户类型与权限 (8)2.用户管理语句 (8)创建:create user 用户名identified by 密码 (8)修改:alter user 用户名identified by 密码; (8)alter user 用户名account lock/unlock; (8)查询:show user; //显示当前用户名 (8)登录:conn scott/scott; (8)3.用户权限控制 (8)(1)权限分类: (8)(2)权限管理: (9)grant XX to user01 (9)①赋予系统权限: (9)登录(create session)、创建用户(create user)、 (9)创建表(create table)、使用表空间(unlimited tablespace) (9)②赋予对象权限: (9)查询表权限(select on emp/select any table)、插入权限(insert on)、所有权限(all on) (9)③赋予传递权限: grant XX to user01 withgrant(对象权限)/admin(系统权限) option; (9)④查询权限: (9)⑤收回权限: (9)4.用户角色控制 (10)(1)创建角色 (10)(2)对角色赋权 (10)(3)从角色收回权限 (10)(4)把角色赋予用户 (10)(5)控制角色 (10)5.用户口令控制 (11)(1)创建环境文件并指定口令管理语句 (11)(2)将环境文件指定用户 (11)(3)修改环境文件中的口令管理语句 (11)2.数字 (12)3.日期类型 (12)4.二进制 (13)第六章表的控制 (13)1.表级控制 (13)(1)创建表 (13)(2)查看表结构 (14)(3)重命名表 (14)(4)复制表 (14)(5)删除表 (14)2.表结构控制 (14)(1)增加列 (14)(2)修改列 (15)(3)删除列 (15)3.表数据控制 (15)(1)增 (15)(2)删 (15)(3)改 (15)(4)查 (16)(8)多表查询 (18)(9)子查询 (19)(10)多表连接后显示 (21)(11)分页显示 (22)4.事务(insert/update/delete) (23)5.约束 (23)[1]创建约束 (23)[2]删除约束 (24)第七章函数 (24)1.单行函数: (24)(1)字符函数 (25)(2)数字函数 (26)(3)转换函数 (26)(4)日期函数 (27)(5)其他函数 (27)2.多行函数(统计函数) (27)3.表达式 (28)(1)case---when--then--else---end (28)(2)decode (28)4.分组函数: (29)5.自定义函数 (29)(1)创建自定义函数 (29)(2)调用自定义函数 (29)第八章PL/SQL (30)2.基础语法 (30)(1)声明变量:变量名类型[:=初值]; (30)(2)声明常量: (31)(3)变量命令规则: (31)(4)从表中查询数据给变量赋值: (31)(5)在plsql中执行sql语句 (31)3.数据类型 (32)(1)引用类型:%type (32)(2)记录类型 (32)(3).索引类型(关联数组) (33)(4)变长数组 (34)10.if语句 (34)11.case语句 (35)12.loop循环 (36)13.while loop循环 (37)14.for loop循环 (37)15.游标 (38)[1]静态游标 (38)①定义游标:cursor cur_emp is select * fromemp; (38)③使用游标 (38)a.for循环游标 (38)for v_emp in cur_emp (38)loop (38)dbms_output.put_line(v_emp.empno); (38)end loop; (38)// for循环游标不需要open、fetch和close语句,以及%FOUND属性检测是否到最后一条记录。
Oracle学习笔记
Oracle 入门学习笔记
4.3 分析函数 .................................................................................................... 17 第三章 分区表与锁 ................................................................................................ 17 1. 分区表的分类 ....................................................................................................... 17 2. 分区表的使用 ....................................................................................................... 17 3. 分区表的维护 ....................................................................................................... 20 4. 锁 ........................................................................................................................ 21 第四章 数据对象..............................................................................
oracle 笔记
关于Oracle的学习笔记,可能包括以下几个重要部分:数据库创建和管理:创建用户和表空间。
以超级管理员的身份登录,创建表空间,创建用户,给用户授权,使用新用户进行查询测试。
数据定义语言(DDL)用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
例如,使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等。
数据库查询:数据查询语言(DQL)用于查询所需要的数据。
排序查询结果。
例如,使用SELECT语句查询员工信息,并按升序排序。
排序可使用NULLS FIRST和NULLS LAST来选择空的信息的位置。
字符串拼接。
通过“||”实现字符串的拼接。
例如,查询所有员工姓名并在后面加一个“a”。
当字符串拼接遇到空的时候,空会自动变成一个空字符串。
数据库数据操作:数据操作语言(DML)用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
使用DISTINCT去重。
例如,SELECT DISTINCT name, id FROM A,作用于多列。
数据库高级特性:使用PARTITION BY在保留全部数据的基础上,只对其中某些字段做分组排序。
虚拟表DUAL是一个虚表,虚拟表,是用来构成SELECT的语法规则,Oracle保证DUAL里面永远只有一条记录。
数据库控制和管理:数据控制语言(DCL)用于数据库的控制和管理。
事务控制语言(TCL)用于数据库事务的控制。
以上内容只是Oracle学习笔记的一部分,实际上Oracle数据库系统的学习还包括很多其他的内容,如索引管理、视图、存储过程、触发器等高级数据库对象的管理和使用,以及数据库性能优化、安全性管理等内容。
Oracle经典自学笔记(doc 34页)
Oracle经典自学笔记(doc 34页)一.验证Oracle已经安装完成了,首先得确认程序里有这些个选项,有四个选项:Oracle Installation Products、集成管理工具、配置和移植工具(管理员用得比较多)、应用程序开发。
Oracle也可以形成一种层次性的链接(Directory Manager),对于我们来说用得最多是sqlplus,而OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM),他是微软提出的,在用VB开发时可能要用,对于我们来说不须管。
当启动sqlplus时会提示输入用户名和口令,所谓的sqlplus是Oracle的一个客户端。
Oracle大多数命令都用命令来实现,所以比较难使,就如同unix比windows难使。
口令你输入tiger,建议就用它,因为以后去企业里Oracle 9i就是用的这个口令。
当你看到SQL>命令符时说明已经进入到了Oracle的命令行了。
图形版的sqlplus,命令行的sqlplus,还有一个就是通过网页访问Oracle的服务,启动sqlplus,端口号是5560,URL是它干什么且怎么干。
第四大只用告诉它我要干什么,不用去控制它怎么干,这样的语言学起来当然十分easy。
我们共有四类语句要学:数据操作语言语句[Data manipulation language,DML],会话控制语句[session control statement],数据定义语言语句[Data definition language,DDL]以及事务控制语句[transaction control statement]。
查询语句只有一句话就是select语句,这是最重要的一条语句。
以后只要遇到相应的select 语句一律背过,企业再面试时其他语句一般不会怎么考但这条语句是必考的。
如果考你SQL语句肯定会考这条select语句不是别的。
oracle课堂笔记
9.数据库的备份和恢复
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件
imp命令可以把dmp文件从本地导入到远处的数据库服务器中
10.表的创建
语法:
create table 表名(列名 数据类型 [default 默认值],列名2 数据类型,...);
修改表结构:
SERIALIZABLE:串行化。不允许任何并发事务问题。最严格的事务隔离性。
Oracle只支持READ COMMITTED和SERIALIZABLE。
默认为READ COMMITTED
设置一个事务的隔离级别
set transaction isolation level serializable
自动隐式提交事务:
执行一个DDL语句、执行一个DCL语句、从SQL*Plus正常退出(exit,quit)
自动隐式回滚事务:
强行退出SQL*Plus、客户端到服务器的连接异常中断MMIT;
回滚事务:ROLLBACK [TO 回滚点];
ALTER TABLE 表名
ADD [CONSTRAINT 约束名] 约束类型(要约束的列名);
ALTER TABLE 表名
ADD [CONSTRAINT 约束名]
FOREIGN KEY (要添加外键的列名)
REFERENCES 主表名(主表的某一列名);
设置事务回滚点:SAVEPOINT 回滚点;
5.事务的隔离级别
SQL标准定义了四种隔离级别:
READ UNCOMMITTED: 读未提交数据。脏读、不可重复读、幻读都可能发生。它的事务隔离性最低。
READ COMMITTED:读已提交数据。不允许脏读。
经典Oracle笔记(比较实用)
ORACLE 笔记1基础入门--首先进入cmd 输入--sqlplus system/wangbo as sysdbaSQL>conn sys/wangbo as sysdba --切换到sys用户下SQL>alter user scott account unlock;--解锁scott用户SQL>commit; --提交语句SQL>conn scott /tiger; --会提示密码过期,要求输入新密码最好还是tiger--在sys下创建表空间SQL>create tablespace wpj datafile 'e:\scott.dbf' size 10; --创建表空间SQL>create temporary tablespace wpj1203 tempfile 'e:\wp.dbf' size 5M;--创建临时表空间SQL>drop tablespace wpj1203; --删除表空间SQL>create user wang identified by wang; --创建密码是wang的账户wang SQL>drop user wang; --删除用户SQL>grant create session to wang; --授权会话SQL>grant dba to wang; --授予管理员权限--修改密码SQL>alter user wang identified by wang;(sys账户下)SQL>password (自己账户下)--利用scott做测试(环境设置)SQL>set line 100 设置每行多少字节SQL>set pagesize 50 设置每页多少条记录SQL>set line 100 pagesize 50SQL>set autocommit on/off 开启/关闭自动提交服务(只对当前用户进程有效) (备注:如果没有开启此项每次增、删、改、查的时候数据没有录入到数据库,或者每次使用commit;命令)--查看表结构(查询语句)SQL>desc emp --查看表结构SQL>select * from emp; --查看emp这张表的结构SQL>select ename,sal from emp; --查看部分字段SQL>select ename 姓名,sal as 薪水from emp; --给字段取别名(as是可选操作)SQL>select * from emp where comm is NULL; --注意is不能改为not--脚本创建:edit c:\a.sql执行:start c:\a.sqlspool c:\b.sql --startselect * from emp;--将中间的sql语句,及sql语句执行的结果放在指定文件中。
Oracle数据库学习笔记
Oracle数据库学习笔记1.oracle的特点?(选择记忆,理解)✓ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。
这减少了ORACL E的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。
✓提供了基于角色(ROLE)分工的安全保密管理。
在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。
✓支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。
✓提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入S QL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。
加上它有许多优秀的前台开发工具如POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。
✓提供了新的分布式数据库能力。
可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。
支持各种分布式功能,特别是支持Internet应用。
✓功能强大,层次清晰,安全机制好,跨平台,数据操作,系统管理,安全性,集群技术,分布式应用,商业智能✓具有完整的数据管理功能。
✓作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。
✓Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。
✓可用性强✓可扩展性强✓数据安全性强✓稳定性强✓无范式要求,可根据实际系统需求构造数据库。
✓采用标准的SQL结构化查询语言。
✓具有丰富的开发工具,覆盖开发周期的各阶段。
✓支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。
✓具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。
✓具有字符界面和图形界面,易于开发。
✓通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的运行状态,调整数据缓冲区的大小。
oracle精品笔记(53节完整版)名师手书
尚学堂马士兵老师oracle笔记(2008-10-30 10:17:39)第一课:客户端1. Sql Plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码。
2. 从开始程序运行:sqlplus,是图形版的sqlplus.3. http://localhost:5560/isqlplusToad:管理,PlSql Developer:第二课:更改用户1. sqlplus sys/密码as sysdba2. alter user scott account unlock;(解锁账号)第三课:table structure(系统自带的表有emp、salgrade、dept、bonus、dual)1. 描述某一张表:desc 表名2. select * from 表名第四课:select 语句:1.计算数据可以用空表:比如:.select 2*3 from dual2.select ename,sal*12 annual_sal from emp;与select ename,sal*12 "annual sal" from emp;区别:加双引号保持原大小写,不加全变大写。
任何含有空值的数学表达式结果都为空值。
3. select ename || ‘abcd’|| 用来连接两个字符串如果连接字符串中含有单引号,用两个单引号代替一个单引号。
第五课:distinctselect deptno from emp;select distinct deptno from emp;select distinct deptno ,job from emp去掉deptno,job两者组合的重复。
更多的项,就是这么多项的组合的不重复组合。
第六课:Whereselect * from emp where deptno =10;select * from emp where deptno <>10;不等于10select * from emp where ename ='bike';select ename,sal from emp where sal between 800 and 1500 (>=800 and <=1500)空值处理:select ename,sal,comm from emp where comm is (not) null;select ename,sal,comm from emp where ename ( not)in ('smith','king','abc');模糊查询like :%代表任意数量的任意字符_代表一个任意字符select ename from emp where ename like '_A%';如果要查询含有%的,要用转义字符\转义字符可以自定义:escape '自定义的转义字符' 比如:select ename from emp where ename like '%$a%' escape '$';第七课: order byselect * from dept;默认按升序(asc)排列,要按降序(desc)用如下语句:select * from dept order by dept desc;select ename,sal,deptno from emp order by deptno asc,ename desc;第八课: sql function1:select ename,sal*12 annual_sal from empwhere ename not like '_A%' and sal>800order by sal desc;select lower(ename) from emp;select ename from empwhere lower(ename) like '_a%';等同于select ename from emp where ename like '_a%' or ename like '_A%';select substr(ename,2,3) from emp;从第二个字符开始截,一共截三个字符.select chr(65) from dual 结果为:Aselect ascii('a') from dual 结果为:65select round(23.652,1) from dual; 结果为: 23.7(第二个参数为指定四舍五入到哪位数)select round(23.652,-1) from dual; 20select to_char(sal,'$99,999,999') from emp;(用9就可以在没有数字的地方不显示,如果用0的话一定会用0填充满)select to_char(sal,'L99_999_999') from emp; L:代表本地符号这个需要掌握牢:select hiredate from emp;显示为:BIRTHDATE----------------17-12月-80----------------改为:select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;显示:BIRTHDATE-------------------1980-12-17 12:00:00-------------------select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; //也可以改为:HH12TO_CHAR(SYSDATE,'YY-------------------2007-02-25 14:46:14to_date函数:select ename,hiredate from emp where hiredate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');如果直接写birthdate>'1981-2-20 12:34:56'会出现格式不匹配,因为表中的格式为: DD-MM月-YY.select sal from emp where sal>888.88 无错.但select sal from emp where sal>$1,250,00;会出现无效字符错误.改为:select sal from emp where sal>to_number('$1.250.00','$9,999,99');把空值改为0select ename,sal*12+nvl(comm,0) from emp;作用:把comm为空的地方用0代替,这样可以防止comm为空时,sal*12相加也为空的情况.第九课: Group function 组函数(即从多行中得到一个输出)牢记组函数:max(), min(), avg(), sum(), count()select to_char(avg(sal),'99999999,99') from emp;select round(avg(sal),2) from emp;结果:2073.21select count(*) from emp where deptno=10;select count(ename) from emp where deptno=10; count某个字段,如果这个字段不为空就算一个.select count(distinct deptno) from emp;select sum(sal) from emp;第十课: Group by语句注意:count() 是计数不是空值的数量需求:现在想求每个部门的平均薪水.select avg(sal) from emp group by deptno;select deptno, avg(sal) from emp group by deptno;select deptno,job,max(sal) from emp group by deptno,job;求薪水值最高的人的名字.select ename,max(sal) from emp;出错,因为max只有一个值,但等于max值的人可能好几个,不能匹配.应如下求:select ename from emp where sal=(select max(sal) from emp);Group by语句应注意,出现在select中的字段,如果没出现在组函数中,必须出现在Group by语句中.第十一课: Having 对分组结果筛选Where是对单条纪录进行筛选,Having是对分组结果进行筛选.select avg(sal),deptno from empgroup by deptnohaving avg(sal)>2000;查询工资大于1200雇员,按部门编号进行分组,分组后平均薪水大于1500,按工薪倒充排列.select avg(sal) from empwhere sal>1200group by deptnohaving avg(sal)>1500order by avg(sal) desc;第十二课:子查询谁挣的钱最多(谁:这个人的名字, 钱最多)select 语句中嵌套select 语句,可以在where,from后.问那些人工资,在平均工资之上.select ename,sal from emp where sal>(select avg(sal) from emp);查找每个部门挣钱最多的那个人的名字.select ename ,deptno from emp where sal in (select max(sal) from ename group by deptno) 查询会多值.应该如下:把select max(sal),deptno from emp group by deptno;当成一个表.语句如下:select ename, sal from emp join(select max(sal) max_sal,deptno from emp groupby deptno) t on (emp.sal=t.max_sal and emp.deptno=t.deptno);每个部门的平均薪水的等级.分析:首先求平均薪水(当成表),把平均薪水和另外一张表连接.第十四课:self_table_connection把某个人的名字以及他的经理人的名字求出来(经理人及这个人在表中同处一行)分析:首先求出这个人的名字,取他的编号,然后从另一张表与其相对应编号,然后找到经理的名字.select e1.ename ,e2.ename from emp e1,emp e2 where e1.mgr= e2.empno.empno编号和MGR都是编号.第十15课: SQL1999_table_connectionsselect ename, dname,grade from emp e,dept d, salgrade swhere e.deptno = d.deptno and e.sal between s.losal and s.hisal andjob <> 'CLERK'有没有办法把过滤条件和连接条件分开来? 出于这样考虑,Sql1999标准推出来了.有许多人用的还是旧的语法,所以得看懂这种语句.select ename,dname from emp,dept;(旧标准).select ename,dname from emp cross join dept;(1999标准)select ename,dname from emp,dept where emp.deptno=dept.deptno (旧)select ename,dname from emp join dept on(emp.deptno = dept.deptno); 1999标准.没有Where语句.select ename,dname from emp join dept using(deptno);等同上句,但不推荐使用.select ename,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal);join 连接语句, on过滤条件。
oracle笔记
oracle查询(1)查看表的结构:desc table ; ------ (description)(2)set timing on :打开操作表的时间记录。
(3)消除重复行:distinct(4)大小写不区分的是列名,而不是里面的数据2查询中的算数表达式(1)可以对某一列直接进行加减乘除。
两列相加(2)如果有一列为null,所得结果也为空。
使用nvl函数处理null值。
select a*13+nvl(b,0)*13 from emp ;nvl(列名,0):如果元组的值为null,则取0;否则取列名。
(3)大于某日期:date>"1-1月-2010"(4)某段值之间:between a and b;3 like的使用:%表示任意0到多个字符_表示任意单个字符4 order by排序a)desc:降序b)asc:升序c)可以对函数处理的列as别名,再处理。
5复杂查询a)数据分组:max,min,avg,sum,countb)可以对同一列在同一视图进行多次数据分组,但是不能同时查询列,max 或min.c)group by 和having子句group by 用于对查询结果分组统计。
having子句用于限制分组显示结果。
d)f分组函数只能出现在选择列表,having,order by子句中,绝对不能当做where 条件e)如果group by ,having,order by 同时出现在查询语句中,那么它们的顺序是group by,having,order by。
f)在选择列中如果有列,表达式,分组函数,那么这列和表达式必须有一个出现在group by子句中。
6多表查询多表查询基于两个或两个以上的表或视图的查询。
(产生a*b行)笛卡尔积。
加上正确的where条件去掉笛卡尔积。
规定:多表查询的条件是至少不能少于表的个数-1.(1)自连接(把这张表看做有2张)(2)子查询:嵌入在其他sql语句中的select语句。
Oracle学习笔记
Oracle学习笔记Oracle学习笔记Oracle学习笔记(1) Oracle数据库编程基础文章分类:数据库这段时间出差,一直在搞需求分析和设计,每天都是写文档画UML,都有好几个月没有写代码了,只怕都快忘记了!这是我用Oracle时学习的Oracle编程做的笔记,今天也发上来与大家分享一下,一共有八章。
现在在有时间就学一下EJB3,因为在项目中会用到,等学完了把EJB3的笔记也发上来和大家分享!通过SqlPlus登录Oracle ,sqlplus 用户名/密码@数据库名建表Sql代码1.create table demo(2. id number(8),3. name varchar2(20)4.)插入数据Sql代码1.insert into demo values(1,'zhangshang');2.insert into demo values(2,'lishi');提交Sql代码/doc/fe11207420.html,mit;查询数据字典(table_name='这里的值要大写')Sql代码1.select * from dba_tab_cols a where a.table_name='DEMO';创建视图create or replace:如果该视图存在就替换,如果不存在就创建1.create or replace view myView as select id 编号,name 姓名 from demo;2.select * from myView;创建同义词(同义词相当于表的别名或逻辑名,可以通过该名称来操作相对应的物理表)在分布式Oracle数据库中,标识一个对象需要四部分:主机名、实例名、模式名、对象名。
例如********************,其中模式名是SYSTEM,对象名是auths,PX.orcl是一个数据库链,它指向服务器PX上的实例orcl,我们可以为其指定一个同义词,使所有的用户都可以通过简单的同义词来访问表********************创建公有的同义词Sql代码1.create public synonym syn1 for demo;创建私有的同义词Sql代码1.create synonym syn2 for demo;创建并使用序列创建序列的完整语法:create sequence 序列名 increment by 增量种子数 start with 起始数字maxvalue 最大值;我们可以使用序列的两个属性nextval和currval,其中nextval 是返回下一个可用的序列值,而currval用于获得当前序列的值创建序列的简单方法Sql代码1.create sequence mySeq;使用创建的序列Sql代码1.insert into demo values(mySeq.nextval,'ddd');获得当前序列的值1.select mySeq.currval from dual;删除一条记录Sql代码1.delete from demo where id=2;查询所有记录Sql代码1.select * from demo;格式化日期时间Sql代码1.select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 格式化日期 from dual;Oracle学习笔记(2) PLSQL编程基础文章分类:数据库这是第二章的学习笔记,学习完第一章的基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from Employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE'; Sql代码1.-- 声明部分,用于定义变量2.declareconstant用于定义常量,当定义常量时必须指定它的初始值,且数据不能改变Sql代码1.n_aaa constant number(4,2) :=5.5;boolean 类型的值只能用于sqlplus语句块中,不能用在表字段的数据类型中not null 用于强制初始化变量不能为空,此时必须为变量指定值default用于指定变量或常量的默认值1.v_valid boolean not null default false;2.v_name varchar2(20);为了确保变量使用合适的数据类型和长度,可以使用%type属性定义变量,它会按照数据库列或其它变量来确定新变量的类型和长度Sql代码1.v_job Employee.Job%type;将v_job2定义为与变量v_job的数据类型和长度完全一致Sql代码1.v_job2 v_job%type;复合变量:处理单行单列数据时,用标量变量;处理单行多列时,用PL/SQL 记录;处理单列多行时,用集合;处理多行多列数据时,可以结合使用PL/SQL记录和集合PL/SQL记录(RECORD):方法一:emp_recode_type 是PL/SQL记录类型并包含有三个成员(name,salary,job)Sql代码1.type emp_recode_type is record(2. name /doc/fe11207420.html,%type,3. salary employee.salary%type,4. job employee.job%type5.);emp_recode是记录变量Sql代码1.emp_recode emp_recode_type;方法二:使用表名的%rowtype 属性定义记录变量注意:用%rowtype 属性定义记录变量时,记录成员个数、名称、类型必须与表或视图的列的个数、名称和类型完全相同Sql代码1.emp_recode2 employee%rowtype;集合类型PL/SQL 表(也称索引表,下标可以为负数,下标没有上限和下限,并且元素的个数无限)Sql代码1.--这里的table 实指集合2.type name_table_type is table of /doc/fe11207420.html,%type index by bi nary_integer;3. name_table name_table_type;嵌套表:嵌套表的下标不能为负值,其元素的个数没有限制并可以使用表列的数据类型在使用嵌套表时必须先用create type 语句建立嵌套表类型嵌套表只是比PL/SQL 表少了 index by binary_integerSql代码1.type num_table_type is table of number(4);2.num_table num_table_type;varray(变长数组):varray的元素个数是有限制的,在使用其之前必须先建立varray 类型在此创建的varray只能存放20个varchar2类型的数据注意:嵌套表列数据需要存储在专门的存储表中,而varray数据则与其它列数据一起存放在表字段中Sql代码1.type v_varray_type is varray(20) of varchar2(10);2.n_empno employee.empno%type;Sql代码1.-- 程序开始2.begin执行部分,执行PL/SQL/和SQL语句可以用into将从表人查询出来的值赋给指定的变量将值赋给变量有两种方法,一是用 := ,二是用 into& 符号用于提示用户输入一个值,& 为sqlplus的替代变量Sql代码1.n_empno := &输入你要查询的员工编号:;2.select Name,Job into v_name,v_job from Employee where empno=n_empno;这里的 || 号与Java中的 + 号类似,表示要将两边的字符串连接起来dbms_output是Oracle所提供的系统包,用于输出数据或消息,而put_line是该包所包含的过程,用于输出字符串信息并换行当在CMD中使用dbms_output包时,必须要先将sqlplus 的环境变量serveroutput 设置为 onSql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);引用记录变量的成员并赋值(赋值可以用 := 和 into 两种方法)注意:用sele ct……into 语句给记录变量赋值时,select语句中的列名列表的名称和个数、类型必须与记录变量的成员个数、名称、类型完全相同Sql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);2.3.emp_/doc/fe11207420.html, := '钱森';4. dbms_output.put_line('引用记录变量的成员并赋值(Recode):' || emp_/doc/fe11207420.html,);5.6. select name,job into emp_/doc/fe11207420.html,,emp_recode2.jobfrom employee where empno=2;7. dbms_output.put_line('引用记录变量的成员并赋值(RowType):' || emp_/doc/fe11207420.html, || ' 的工作是:' || emp_recode2.job);8. -- 使用PL/SQL表(索引表)9. select name into name_table(-50) from employee where empno=1;10. dbms_output.put_line('雇员名:' || name_table(-50));11. -- 使用嵌套表12. -- 必须先设置嵌套表的下标,然后才能对该集合进行赋值13. num_table := num_table_type(1,2,3,4,5);14. num_table(1) := 10;15. num_table(5) := 100;16. dbms_output.put_line('使用嵌套表:' || num_table(1) || ',' || num_table(5));17.18.exception19. -- 异常处理部分20. when NO_DATA_FOUND then dbms_output.put_line('查询不到员工编号为' || n_empno || '的员工!');21. when TOO_MANY_ROWS then dbms_output.put_line('数据完整性错误,员工编号' || n_empno || '重复!');22. when OTHERS then dbms_output.put_line('PL/SQL执行错误!' || sqlerrm);23.-- 程序结束24.end;25./Oracle学习笔记(3) PLSQL程序控制结构文章分类:数据库这是第三章的学习笔记,学习完第二章的编程基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!这周六总算是不用加班,可以好好出去玩一下了!今天去武大看樱花了,哈哈,不错!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE';Sql代码1.declare2. n_empno employee.empno%type;3. v_name /doc/fe11207420.html,%type;4. n_salary employee.salary%type;5. v_temp varchar2(30);6. n_temp number(5) := 1;7. -- 自定义异常8. e_exception exception;exception_init 是一个编译时指令,用于将一个内部错误与异常的名称关联。
oracle 笔记
oracle 笔记Oracle是一种关系型数据库管理系统 (RDBMS),广泛应用于企业级应用程序中。
以下是一些关于Oracle的常见笔记:1. 安装Oracle:Oracle可以在Windows、Linux和Solaris等操作系统上安装。
安装过程中需要指定数据库的相关信息,如数据库名称、端口号和管理员密码等。
2. 数据库实例:Oracle数据库由一个或多个数据库实例组成。
每个数据库实例包含一个或多个数据文件和日志文件。
数据库实例由SGA (System Global Area)和后台进程组成。
3. 数据库对象:Oracle支持多种数据库对象,如表、视图、索引、序列和触发器等。
这些对象可以存储和管理数据。
4. SQL语言:Oracle使用结构化查询语言 (SQL) 进行数据库操作。
SQL语句可以用于创建、修改和查询数据库中的数据。
5. 表空间:表空间是Oracle中逻辑存储空间的单位。
每个表空间包含一个或多个数据文件,用于存储表和索引数据。
6. 数据备份和恢复:Oracle提供了多种备份和恢复机制,如全备份、增量备份和归档日志等。
这些机制可以保护数据库免受数据损坏和丢失的影响。
7. 性能优化:Oracle提供了多种性能优化工具和技术,如索引、分区和查询优化器。
这些工具可以帮助提高数据库的性能和响应时间。
8. 数据库安全:Oracle提供了多种安全功能,如用户认证、访问控制和数据加密等。
这些功能可以保护数据库免受未经授权的访问和数据泄露的威胁。
9. 远程连接:Oracle支持远程连接,可以从远程计算机访问和管理数据库。
远程连接使用Oracle客户端软件进行配置和连接。
10. 高可用性:Oracle支持多种高可用性解决方案,如数据复制、故障转移和备份服务器等。
这些解决方案可以确保在数据库故障时继续提供服务。
Oracle学习笔记
断壁残垣---Oracle学习笔记Emitter第一章关系数据库用户解锁:使用system用户登录Sql语句:SELECT username,account_status FROM dba_users;ALTER USER scott ACCOUNT_UNLOCK;//解锁ALTER UESR scott IDENTIFIED BY tiger;//设定密码CONNECT scott/tiger;SELECT * FROM emp;第二章体系结构概述体系结构Oracle数据库从存储结构上可以分为物理存储结构与逻辑存储结构,从实例结构上可以分为内存结构与进程结构。
Oracle的物理存储结构是由存储在磁盘中的操作系统文件所组成的,Oracle在运行时需要使用这些文件。
一般,Oracle数据库在物理上主要由3种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。
数据文件数据文件(Data File)是指存储数据库数据的文件。
数据库中的所有数据最终都保存在数据文件中,例如,表中的记录和索引等。
如果数据文件中的某些数据被频繁访问,则这些数据会被存储在内存的缓冲区中。
读取数据时,Oracle系统会首先从内存的数据缓冲区中查找相关数据信息,如果找不到,则从数据库文件中把数据读取出来,存放到内存的数据缓冲区中,供查询使用;存储数据时,修改后的数据信息,也是先存放在内存的数据缓冲区中,在满足写入条件(例如执行提交操作)时,由Oracle的后台进程DBWn将数据写入数据文件。
SELECT file_name FROM dba_data_files;控制文件控制文件(Control File)是一个很小的二进制文件,用于描述和维护数据库的物理结构。
在Oracle数据库中,控制文件相当重要,它存放有数据库中数据文件和日志文件的信息。
Oracle数据库在启动时需要访问控制文件,在数据库的使用过程中,数据库需要不断更新控制文件,由此可见,一旦控制文件受损,那么数据库将无法正常工作。
oracle 笔记.doc
目录❀Oracle部分第一章数据库介绍 (3)第二章Oracle简介 (4)第三章用户、权限 (6)第四章Oracle数据类型 (8)第五章SQL语句概述 (9)第六章表空间 (11)第七章表 (12)第八章函数 (14)第九章约束 (17)第十章单查询查询 (22)第十一章多表查询-内连接 (23)第十二章多表查询-外连接 (25)第十三章多表查询-基本 (26)第十四章多表查询-连接 (29)第十五章子查询 (32)第十七章组函数及分组统计 (34)第十八章数据库对象-视图 (37)第十九章数据库对象-序列 (40)第二十章数据库对象-同义词 (43)第二十一章数据库对象-索引 (44)第二十二章网络配置 (47)第二十三章嵌套表、可变数组 (48)❀PL/SQL部分第一章PL/SQL 简介 (51)第二章PL/SQL数据类型 (54)第三章LP/SQL控制语句 (58)第四章动态SQL (63)第五章错误处理 (64)第六章游标-隐式游标 (66)第七章游标-显式游标 (68)第八章游标-REF游标 (72)第九章子程序-过程 (74)第十章子程序-函数 (77)第十一章自主事物处理 (80)第十二章程序包 (82)第十三章触发器讲解 (85)第十四章触发器实例 (89)第十五章数据库设计和三大范式 (92)第十六章数据库的备份与恢复简介 (97)第十七章导入导出工具 (99)第十八章数据库归档方式 (101)❀JDBC部分JDBC部分 (104)第一章jdbc简介 (104)第二章连接数据库 (106)第三章常用数据库的驱动程序和JDBC URL (108)第四章连接池 (109)第五章数据操作-创建表 (111)第六章数据操作-查询 (112)第七章预处理 (113)第八章批处理 (114)第九章数据的数据 (115)第十章调用函数 (116)第十一章调用过程 (119)第十二章DAO封装 (122)第一章数据库介绍一、数据的储存方法:第一种方法:用大脑来记住数据第二种方法:写在纸上第三种方法:写在计算机的内存中第四种方法:写成磁盘文件二、数据库能做什么?1.存储大量数据,方便检索和访问2.保持数据的一致、完整3.共享和安全4.通过组合分析,产生新的有用信息三、数据库的发展史萌芽阶段--文件系统★使用磁盘文件储存数据初级阶段--第一代数据库★出现了网状模型、层次模型的数据库中级阶段--第一代数据数据库★关系型数据库和结构化查询语言高级阶段--新一代数据库★“关系-对象”型数据库四、当前的数据库产品Oracle ------甲骨文BD2 -------IBMSQL Server ------微软Sybase -------赛贝思MySql -------SUN五、数据库和应用程序六、数据库相关的基本概念概念模型:基于客户的想法和观点所形成的认识和对象实体(Entiy):客观存在的、可以被描述的事物。
Oracle数据库 学习笔记
笔记
笨蛋一休 兰州交通大学
1 / 16
Oracle 数据库 学习笔记
常见的数据库
小型数据库 access(微软) 中型数据库 mysql(瑞典 MySql AB) sql server(美 微软) informix(美 IBM) 大型数据库 sybase(美 sybase) oracle(美 oracle) db2(美 IBM)
多行子查询 SQL>select * from emp where job in (select distinct job from emp where deptno = 10 ); 多行子查询中使用all SQL>select ename,sal,deptno from emp where sal>all (select sal from emp where deptno=30); 等价 SQL>select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30); 多行子查询中使用any SQL>select ename,sal,deptno from emp where sal>any (select sal from emp where deptno=30); 等价 SQL>select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30); 多列子查询 SQL>select ename,sal from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');
oracle经典笔记
imp userid=scott/triger@myorcl file=d:\emp.dmp //导入自己的方案
imp userid=scott/triger@myorcl tables=(emp,dept) file=d:\emp.dmp touser=scott
5.查询当前用户拥有哪些系统权限:select * from user_sys_privs;
6.设置控制台窗口的行宽: set linesize 400;
7. 权限的传递:A用户拥有的权限可以授予给B用户
系统权限:grant alert any table to 用户名 with admin option
alter tablespace 表空间名 read only、alter tablespace 表空间名 read write
4.查询指定表空间所有的表
select * from all_tables where tablespace_name='表空间名'
对象权限:grant select on 表名 to 用户名 with grant option
8.角色:权限的集合
创建角色:create role 角色名;
授予角色create session权限:grant create session to 角色名;
给用户授予角色: grant 角色名 to 用户名;
11.查询表结构用 desc[ribe] 表名;
12.decode 函数的使用 decode(字段,'值','真的时候','假的时候');
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库基本概念:数据库:Database ,DB (数据)数据库管理系统:(Database Management System,DBMS)oracle ,DB2,Sql_server 等数据库系统:(Database System ,DBS)关系型数据库:(Relationship Database ,RDB)SQL语言:(Structured Query Language,结构化查询语言)数据建模:要将现实世界中客观存在的事物以数据的形式存储到计算机中并进行处理,就需要对其进行分析,抽象,进而确定数据的结构以及数据间的内在联系,这一过程称为数据建模。
数据模型应满足三个方面的要求:1,能够比较真实地模拟现实世界2,容易为人所理解;3,便于计算机实现。
数据模型三要素:数据结构---描述事物的静态特性;数据操作---描述事物的动态特性;完整性约束----描述事物内部和事物间的约束性关系。
现实世界-------认识抽象-------->概念世界-------转换--------->机器世界概念数据模型(Conceptual Database Model,CDM)CDM从用户的观点出发对信息进行建模,并不依赖于具体的计算机系统或某个DBMS系统,主要用于数据库的概念设计。
CDM以实体--关系(E-R)模型为基础,将现实世界中的客观对象抽象为实体和关系。
到机器世界中,CDM将被转化为特定DBMS所支持的物理数据模型(Physical Database Model ,PDM)。
CDM相关术语:实体(Entity):客观存在并且可以相互区分开来的事物。
实体集(Entity Set):同一类实体的集合。
属性(Attribute):描述实体的特性。
关系(Relationship):实体集之间的对应关系(现实世界事物之间的相互关联)。
E-R图三要素:实体:用矩形框表示属性:用椭圆形表示,并用连线与实体连在一起。
实体间联系:用菱形框表示,并用连线分别与相关实体相连,且需在连线上注明联系类型。
关系型数据库基本术语:关系:正个二维表,关系名:表格名称,元组:行数据(记录),属性:列数据(字段),属性名:列名称(字段名)主键:唯一确定元组的属性组(关键字)域:属性的取值范围。
约束:域完整性约束,实体完整性约束,参照完整性约束Oracle的卸载:1,停止Oracle的所有服务;2,运行卸载程序;3,修改注册表,删除Oracle相关信息1. Oracle软件有关键--值HKEY_LOCAL_MACHINE\SOFTWARE\Oracle2. Oracle服务HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services3. Oracle事件日志HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Applic ation4. 删除Oracle系统目录:C:\\program files\oracle5. 删除Oracle的环境变量;6. 删除程序菜单中的Oracle菜单;7. (重启系统后)删除Oracle工作主目录:例如:d:\oracleOracle专业术语:数据库实例(Database Instance):运行在数据库文件上的一组Oracle后台进程/线程以及一个共享内存区。
数据库可有实例装载和打开。
Oracle实时应用集群(RAC Real Application Clusters)Oracle 并行服务器架构/RAC架构。
数据库服务名:(Database Services_name):从Oracle8i开始引入,数据库客户端与服务端连接时建议指定其数据库服务名,而不是数据库服务名。
网络服务名(Net Services Name):数据库在客户端的逻辑表示,包含数据库服务名和网络地址两方面的信息。
监听器(Monitor)数据库中的对象:表,视图,约束条件,索引,序列,同义词,存储过程,函数,触发器,包。
数据库安全:用户,方案,权限,角色,额配。
物理存储结构:数据文件(Data File 真正存储数据的文件)重做日志文件(Redo Log File)控制文件(Control File)逻辑存储结构:表空间(Table Space)段(Segment)区(Extent)块(Block)sql查询器,最好用sqlplus worksheet 在其中书写sql语句,使用- - 标示注释。
SQL语句:SQL语句的分类:1,select查询语句;2,DML语句(数据操作语言)(insert update delete Merge 合并表,oracle9i之后新出的);3,DDL语句(数据定义语言)(create,Alert,drop,Truncate截断,比如删除表中的一列)4,DCL语句(数据控制语言)(grant revoke)5,事务控制语句:(commit rollback savepoint)在Select 语句中,对number型数据可以使用算术运算符创建表达式。
例如:select age*10 from student;Select 语句中的连接运算符:"||" 可以把列和字符或其他表达式连接在一起,得到一个新的字符串,实现合成列的功能。
举例:select name || ' is age '|| age from student;select 中使用别名:重命名查询结果中的的字段,以增强可读性。
如果别名中使用特殊字符,或者是强制大小敏感需要使用双引号。
例如:select ename as 员工姓名,empno 员工编号from emp;select 中的空值:空值是无效的,未指定的,未知的或不可预知的值。
空值不等同于空格或者0。
去除重复行:用Distinct 例如:select distinct deptno from emp;如果distinct 后有多个字段,就指明多个字段的组合没有重复的。
查询语句中使用字符串和日期:字符串和日期要用单引号裹起来。
字符串大小写敏感。
日期格式敏感,缺省的日期格式:'DD-MON-RR'例如:select * from emp where name='smith';select * from emp where hiredate='02-4月-01';获取当前的日期格式:select sysdate from dual;字符串转换成日期:select * from emp where hiredate<= to_date('2001-05-05 10:34:50','yyyy-mm-dd hh:mi:ss');运算符:<> 不等于between ........and...... 介于两值之间(包过边界);in(SET)出现在集合中。
is null 为空值。
like 模糊查询:%表示零或多个字符;_ 表示一个字符;对于特殊符号(如% _等)使用escape标示符来查找。
select * from student name like '%!_% ' escape '!'; escape 定义转义符。
可以自己定义那个符号是转义符,这个例子中!是转义符。
desc student查看student表的表结构。
(就是看看表中都有什么字段)用命令select table_name from user_tables 可以查看当前连接的用户的所有表的名称。
用命令select table_name from all_tables 可以查看所有用户的所有表的名称。
(如果权限允许的话)前缀的意义:dba_tables 所有的tablesall_tables 当前用户所能看到的所有的tablesuser_tables 当前用户的有的tablestab tabs好象是user_tables的synonym(同义词)一些查询命令查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前用户的角色SQL>select * from user_role_privs;查看用户下所有的表SQL>select * from user_tables;5使用dba_tables,all_tables等都可以,如查找USERS表空间下的所有表:select owner,table_name,tablespace_name from all_tables where tablespace_name='USERS'oracle数据类型:char (10) 十个字节,一个汉字是两个字节。
最大长度2000Bnchar(10) 十个字符,一个汉字是一个字符。
最大长度2000Bvarchar2() 变长字符型最大4000个字节。
number(m,n); m表示总位数,n表示小数点后的位数。
总长度最大为38。
date日期型表示范围公元前4712 -1-1 到公元后4712-12-31。
blob 二进制大对象类型。
最大长度为4G;clob 字符大对象类型。
最大长度为4G;oracle函数:分为单行函数和多行函数。
单行函数:操作数据项,接收参数并返回结果,对每一返回行起作用,可修改数据类型,可嵌套使用。
单行函数分类:字符函数,数值函数,日期函数,转换函数,通用函数。
字符函数:lower()转换为小写,upper()转换为大写,initcap()单词首字母大写;concat()字符串连接,concat('hello','hcl');substr()截取字符串substr('HelloWorld',4,3) 返回loWlpad('smith',10,*);左侧填充* 凑够10位。
结果*****smithrpad('smith',10,*);右侧填充。
数值函数:round() 四舍五入。
trunc();截断trunc(3.14156,m) m可以是正也可以是负,正表示小数点后几位,负表示小数点前几位。
sign()判断数值正负,正值返回+1 负数返回-1 ,零返回0。
日期类型:缺省的日期格式为:DD-MON-YY可以使用sysdate函数获取当前系统日期和时间。
日期型数据可以直接加减一个数值,结果仍为日期。
两个日期相减,结果为两个日期相差多少天。