广州网站公司建设,深圳注册公司需要什么资料,学校专业建设规划,百姓网征婚Oracle简介
Oracle是殷墟#xff08;yīn Xu#xff09;出土的甲骨文#xff08;oracle bone inscriptions#xff09;的英文翻译的第一个单词#xff0c;在英语里是“神谕”的意思。Oracle公司成立于1977年#xff0c;总部位于美国加州#xff0c;是世界领先的信息管…Oracle简介
Oracle是殷墟yīn Xu出土的甲骨文oracle bone inscriptions的英文翻译的第一个单词在英语里是“神谕”的意思。Oracle公司成立于1977年总部位于美国加州是世界领先的信息管理软件开发商因其复杂的关系数据库产品而闻名。Oracle数据库产品为财富排行榜上的前1000家公司所采用许多大型网站也选用了Oracle系统。
Oracle数据库是Oracle中文名称叫甲骨文公司的核心产品Oracle数据库是一个适合于大中型企业的数据库管理系统。在所有的数据库管理系统中比如微软的SQL ServerIBM的DB2等Oracle的主要用户涉及面非常广包括银行、电信、移动通信、航空、保险、金融、电子商务和跨国公司等。
Oracle公司成立以来从最初的数据库版本到Oracle7、Oracle8i、Oracle9iOracle10g到Oracle11gOracle12c 虽然每一个版本之间的操作都存在一定的差别但是Oracle对数据的操作基本上都遵循SQL标准。因此对Oracle开发来说各版本之间的差别不大。
WebLogic是美国bea公司出品的一个application server确切的说是一个基于Javaee架构的中间件BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。2008年1月16日全球最大的数据库软件公司甲骨文Oracle宣布已经同BEA达成协议以85亿美元收购BEA。
2008年1月16日Sun宣布已经与MySQL AB达成协议以大约10亿美元收购MySQL AB。
2009年04月20日甲骨文宣布该公司将以每股9.5美元的价格收购Sun。该交易价值约为74亿美元。 Oracle 体系结构
Oracle服务器 是一个数据管理系统(RDBMS)它提供开放的, 全面的, 近乎完整的信息管理。由1个数据库和一个或多个实例组成。数据库位于硬盘上实例位于内存中。 表空间(users)和数据文件
逻辑概念表空间表空间由多个数据文件组成。位于实例上在内存中。
物理概念数据文件位于硬盘之上。(C:\app\Administrator\oradata\orcl目录内后缀为.DBF的文件) 一个表空间可以包含一个或者是多个数据文件。1n表空间数据文件 段、区、块 段存在于表空间中 段是区的集合 区是数据块的集合 数据块会被映射到磁盘块。 DBA的时间开销 数据库的启动设置
控制面板 → 管理工具 → 服务 → OracleServiceORCL → 自动(手动)
控制面板 → 管理工具 → 服务 → …home1TNSListener → 自动(手动) sqlplus 登录sqlplus ↙ 用户名 ↙ 密码 ↙sqlplus scott/11 ↙ 或 sqlplus hr/11 ↙以管理员身份登陆sqlplus / as sysdba (在Oracle数据库安装时指定了登陆密码)解锁用户SQL alter user scott account unlock (管理员身份登陆给scott用户解锁。用户默认锁定)修改用户密码SQL alter user scott identified by 新密码 (管理员身份登陆给scott用户修改密码)查看当前语言环境SQL select userenv(language) from dual 贯穿这门课程的方案
scott方案 hr方案 基本的SQL select语句 sqlplus的基本操作
显示当前用户 SQL show user;
查看当前用户下的表 SQL select * from tab;
tab: 数据字典记录数据库和应用程序源数据的目录包含当前用户下的表。
查看员工表的结构 SQL desc emp; (desc → description 描述)
设置行宽set linesize 120;
设置页面set pagesize 100; 或者将上述两行写入如下两个配置文件可永久设置
C:\app\Administrator\product\11.2.0\client_1\sqlplus\admin\glogin.sql
C:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\glogin.sql
设置员工名列宽col ename for a20 (a表示字符串)
设置薪水列为4位数子col sal for 9999 (一个9表示一位数字) 基本 SELECT 语句
其语法格式为
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table; 查询所有员工的所有记录 SQL select * from emp; 效果等同于
SQL select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp;
※SQL优化 尽量使用列名代替 * (Oracle 9i之前不同 之后一样)
查询员工号、姓名、薪水 SQL select empno, ename, sal from emp;
增加年薪 SQL select empno, ename, sal, sal * 12 from emp;
“/”执行上一条成功执行的SQL语句。 修改上一条SQL语句
用c命令来修改(c 即 change)
默认光标闪烁位置指向上一条SQL语句的第一行。输入 2 则定位到第二行
c /错误关键字/正确关键字 ↙
使用“/”来执行修改过的SQL语句
例如错误输入了SQL select empno, ename, sal, sal * 12 from emp; “from”书写错误该错误位于整条SQL语句的第二行
输入2↙ 终端提示2* from emp输入c /form/from ↙ 终端提示2* from emp (意为改正后的sql语句样子)输入/↙
使用ed命令来修改 edit
ed ↙弹出系统默认的文本编辑器(如记事本)
修改、保存、退出、执行“/”。 别名as SQL select empno as “员工号”, ename “姓名”, sal 月薪, sal * 12 年薪 from emp;
关键字as写与不写没有区别 “”有与没有取决于别名中是否有空格或者关键字。 “DISTINCT” 关键字。重复记录只取一次
SQL select deptno from emp; → SQL select DISTINCT deptno from emp;
SQL select job from emp; → SQL select distinct job from emp;
SQL select distinct deptno, job from emp; 会发现没有行减少因为deptno不重复。
因此得出DISTINCT的作用范围 distinct作用于后面所有列。 SQL语句使用注意事项 SQL 语言大小写不敏感。 SQL 可以写在一行或者多行关键字不能被缩写也不能分行各子句一般要分行写。使用缩进提高语句的可读性。 算数运算 - * /乘除的优先级高于加减优先级相同时按照从左至右运算可以使用括号改变优先级
查询: 员工号、姓名、月薪、年薪、奖金、年收入。
SQL select deptno, ename, sal, sal * 12, comm, commsal*12 from emp;
结果不正确。没有奖金的员工年收入不正确。
需注意在程序开发过程中数据是核心。程序再正确也没有用必须保证数据不能丢且正确。对于上面的结果有对有错的情况是最危险的。 NULL值
☆NULL值问题1. 包含NULL值的表达式都为空。2. NULL ! NULL
解决滤空函数nvl(a, b) 如果a为NULL 函数返回b。所以sal * 12 nvl(comm, 0) 年收入。
NULL ! NULL举例
查询奖金为NULL的员工信息 SQL select * from emp where comm NULL; (SQL中不使用)
在SQL中判断一值是否等于NULL不用“” 和“!”而使用is和is not。
SQL select * from emp where comm is NULL; (is not)
空值是无效的未指定的未知的或不可预知的值
空值不是空格或者0。(特别强调) 连接符
Oracle中定义了一个连接符 ’||’ 用来连接字符串。
显示“xxx 是一个 xxx”怎么显示呢
SQL select ename || ‘ is a ’ || ‘job’ from emp 但是如果显示一个“hello world”应该怎么显示呢
使用concat函数来实现 SQL select concat(‘hello’, ‘ world’) from ????
这两个字符串不是任何一个表的内容在Oracle中定义一张“伪表”dual用来满足SQL99语法ANSI。
语法规定select 后 必须接 from。 再如 SQL select concat(hello, world) as 你好 from dual 注意SQL双引号“”表示别名使用‘’来表示字符串。
但是 SQL select concat(hello, world, Oracle) as 你好 from dual 可以吗 可以这样SQL select concat(aa, concat(bb, cc)) from dual; 使用连接符 || 来实现: SQL select hello || world || Oracle as 你好 from dual
再如 SQL select 3 2 from dual; ‘||’就是用来代替concat函数的。SQL select ename || ‘ is a ’ job “员工描述” from emp SQL和sqlplus
我们已经学习使用了select应该知道还有update、delete、insert、create…
同时我们学习了ed、c、set、col、desc….
SQL → 语言关键字不能缩写。
sqlplus → Oracle提供的工具可在里面执行SQL语句它配有自己的命令(ed、c、set、col) 特点是缩写关键字。
SQL 一种语言ANSI 标准关键字不能缩写使用语句控制数据库中的表的定义信息和表中的数据
SQL*Plus 一种环境Oracle 的特性之一关键字可以缩写命令不能改变数据库中的数据的值集中运行