目录
1.ORACLE数据库简介
2..ORACLE数据库安装
3..ORACLE体系结构
4..ORACLE基本概念
5..ORACLE基本元素
6..ORACLE数据库启动和关闭
7.SQLPLUS登录ORACLE数据库相关操作
8.SQLPLUS的基本操作
9.oracle中上课使用的方案
10.SQL语言分类
11.SQL中的select语句语法和注意事项
12.oracle中查询相关示例
13.课程复习
14.别名和distinct去重
15.算术运算和NULL
16.SQL语句中where中日期格式
17.SQL语句中比较运算符
18.SQL语句中模糊查询
19.SQL语句中逻辑运算
20.SQL语句排序
1.ORACLE数据库简介
2..ORACLE数据库安装
Oracle(甲骨文)公司成立于1977年,总部位于美国加州,是世界领先的信息管理软件开发商,因其复杂的关系数据库产品而闻名。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统,所以Oracle是在数据库领域一直处于领先地位的产品。
Oracle数据库是Oracle公司的核心产品,Oracle数据库是一个适合于大中型企业的数据库管理系统。在所有的数据库管理系统中(比如:微软的SQL Server,IBM的DB2等),Oracle的主要用户涉及面非常广,包括:银行、电信、移动通信、航空、保险、金融、电子商务和跨国公司等。
Oracle公司成立以来,从最初的数据库版本到Oracle7、Oracle8i、Oracle9i,Oracle10g到Oracle11g,Oracle12c 虽然每一个版本之间的操作都存在一定的差别,但是Oracle对数据的操作基本上都遵循SQL标准。因此对Oracle开发来说各版本之间的差别不大。
3..ORACLE体系结构
4..ORACLE基本概念
表空间(users)和数据文件
逻辑概念:表空间由多个数据文件组成。位于实例上,在内存中。
物理概念:数据文件,位于硬盘之上。(C:\app\Administrator\oradata\orcl目录内后缀为.DBF的文件)一个表空间可以包含一个或者是多个数据文件。1:n(表空间:数据文件)
/home/oracle/app/oradata/orcl
段、区、块
5..ORACLE基本元素
6..ORACLE数据库启动和关闭
scott用户密码: 11
sys用户的密码: sys
- sqlplus ↙ 用户名 ↙ 密码 ↙
- sqlplus 用户名/密码↙
- sqlplus 用户名/密码@//ip/实例名 ↙
远程登录oracle服务器方式,如(sqlplus scott/11@//192.168.1.100/orcl)
- sqlplus 用户名/密码@实例别名 ↙(实例别名配置参考附件2:Oracle客户端实例别名配置.docx)
- 以管理员身份登陆: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 sys
7.SQLPLUS登录ORACLE数据库相关操作
-
-
- Linux/Unix上启动数据库服务
-
[oracle@deng ~]$ sqlplus sys/sys as sysdba
Sqlplus: 是一个客户端命令
Sys是超级管理员的用户名
Sys是超级管理员的密码
As sysdba 表示使用系统管理员的方式登录
关闭数据库:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
关闭Oracle监听服务(先退出sqlplus)
SQL> quit;
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@deng ~]$ lsnrctl stop
8.SQLPLUS的基本操作
启动Oracle数据库
SQL> startup
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2217912 bytes
Variable Size 616564808 bytes
Database Buffers 205520896 bytes
Redo Buffers 6627328 bytes
Database mounted.
Database opened.
SQL>
启动监听服务:
[oracle@deng ~]$ lsnrctl start
启动和关闭使用oracle用户
9.oracle中上课使用的方案
Sqlplus使用管理员登录后
- startup
启动数据库实例
- shutdown
关闭数据库实例
如果要远程连接到数据库还得,启动监听服务
在命令行(不是sqlplus中)
- lsnrctl start
- lsnrctl status
- lsnrctl stop
10.SQL语言分类
11.SQL中的select语句语法和注意事项
其语法格式为:
SELECT *|{[DISTINCT] column |expression [alias],...}
FROM table [TableAlias1 ] [,table2 [TableAlias2 ],…]
[WHERE expression]
[GROUP BY column1[,column2,…]]
[HAVING expression]
[ORDER BY column1[,column2,…]]
语法描述说明:
- 花括号{}括起的部分为必填部分
- 中括号[]括起来的部分为可选部分
- 多种形式的语法用竖线|来表示并列单选,或者的意思
12.oracle中查询相关示例
在scott方案中完成以下任务:
- 查询所有员工的所有记录
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
form emp; (“from”书写错误,该错误位于整条SQL语句的第二行)
13.课程复习
- 使用ed命令来修改 edit
ed ↙弹出系统默认的文本编辑器,(如记事本)
修改、保存、退出、执行“/”。
设置默认的文编编辑器(gedit)
SQL> define_EDITOR=gedit
别名:as
SQL> select empno as “员工号”, ename “姓名”, sal 月薪, sal * 12 年薪
from emp;
关键字as写与不写没有区别; “”有与没有取决于别名中是否有空格或者关键字。
14.别名和distinct去重
“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作用于后面所有列。
15.算术运算和NULL
- 乘除的优先级高于加减
- 优先级相同时,按照从左至右运算
- 可以使用括号改变优先级
查询: 员工号、姓名、月薪、年薪、奖金、年收入。
SQL> select deptno, ename, sal, sal * 12, comm, comm+sal*12 from emp;
结果不正确。没有奖金的员工,年收入不正确。
需注意,在程序开发过程中,数据是核心。程序再正确也没有用,必须保证数据不能丢,且正确。对于上面的结果,有对有错的情况是最危险的。
16.SQL语句中where中日期格式
☆NULL值问题:
1. 包含NULL值的表达式都为空。
2. NULL != NULL
任何算数运算碰到NULL值都变成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中,判断一值是否等于另外一值不用“=” 和“!=”而使用is和is not。
SQL> select * from emp where comm is NULL; (is not)
17.SQL语句中比较运算符
查询10号部门的员工信息:
SQL> select * from emp where deptno=10
查询”KING”的信息:
SQL> select * from emp where ename= 'KiNg ' 未选定行。
注意:字符串大小写敏感。
SQL> select * from emp where ENAME='KING'; 则正确
查询入职日期为1981年11月17日的员工:
SQL> select * from emp where hiredate= '1981-11-17 ' 可以吗?
参看:
SQL> select sysdate from dual 查看系统当前的日期 (注意其格式)。
SQL> select * from emp where hiredate= '17-11月-81 '
获取系统当前日期格式:
SQL> select * from v$nls_parameters (数据字典,类似于tab)
设置列宽度:
18.SQL语句中模糊查询
改回系统默认格式:SQL> alter session set NLS_DATE_FORMAT = 'DD-MON-RR';
- 字符和日期要包含在单引号中。
- 字符大小写敏感,日期格式敏感。
- 默认的日期格式是 DD-MON-RR
19.SQL语句中逻辑运算
AND 逻辑与
OR 逻辑或
NOT 逻辑非
如果…..where 表达式1 and 表达式2;
…..where 表达式2 and 表达式1;
这两句SQL语句功能一样吗?效率一样吗?
※SQL优化:
SQL在解析where的时候,是从右至左解析的。
所以: and时应该将易假的值放在右侧
or时应该将易真的值放在右侧
20.SQL语句排序
- 使用 ORDER BY 子句排序
- ASC(ascend): 升序。默认采用升序方式。
- DESC(descend): 降序
- ORDER BY 子句在SELECT语句的结尾。
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hiredate ;
查询员工信息,按月薪排序:
SQL> select * from emp order by sal 结尾加desc (descending)降序
order by 之后可以跟那些内容呢?
order by + 列名,表达式,别名,序号。 注意:语法要求order by 子句应放在select的结尾。
SQL> select ename, sal, sal*12 from emp order by sal * 12 desc
序号:默认:ename→1, sal→2,sal*12→3
SQL> select ename, sal, sal*12, from emp order by 2 desc 按月薪进行排序。
如果:SQL> select * from emp order by deptno, sal