C++学习之ORACLE①

发布于:2025-04-11 ⋅ 阅读:(46) ⋅ 点赞:(0)

目录

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

  1. sqlplus  ↙ 用户名 ↙ 密码 ↙
  2. sqlplus  用户名/密码↙
  3. sqlplus 用户名/密码@//ip/实例名 ↙

远程登录oracle服务器方式,如(sqlplus scott/11@//192.168.1.100/orcl)

  1. sqlplus 用户名/密码@实例别名 ↙(实例别名配置参考附件2:Oracle客户端实例别名配置.docx)
  2. 以管理员身份登陆:sqlplus  /  as  sysdba

在Oracle数据库安装时指定了登陆密码

  1. 解锁用户:SQL> alter user scott account unlock 

管理员身份登陆,给scott用户解锁。用户默认锁定

  1. 修改用户密码:SQL> alter user scott identified by 新密码

管理员身份登陆,给scott用户修改密码

  1. 查看当前语言环境:SQL> select userenv('language') from dual

Scott hr  sys

7.SQLPLUS登录ORACLE数据库相关操作

      1. 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使用管理员登录后

  1. startup

启动数据库实例

  1. shutdown

关闭数据库实例

如果要远程连接到数据库还得,启动监听服务

在命令行(不是sqlplus中)

  1. lsnrctl start
  2. lsnrctl status
  3. 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,…]]

语法描述说明

  1. 花括号{}括起的部分为必填部分
  2. 中括号[]括起来的部分为可选部分
  3. 多种形式的语法用竖线|来表示并列单选,或者的意思

12.oracle中查询相关示例

在scott方案中完成以下任务:

  1. 查询所有员工的所有记录

SQL> select * from emp;

SQL> select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp;

※SQL优化: 尽量使用列名代替 * ,因为使用*会先转成列名,这期间损耗了一点性能 (Oracle 9i之前不同, 之后一样)

  1. 查询员工号、姓名、薪水

SQL> select empno, ename, sal from emp;

增加查询年薪:

SQL>  select empno, ename, sal, sal * 12

   from emp;   

“/”执行上一条成功执行的SQL语句。

  1. 修改上一条SQL语句:
  1. 用c命令来修改(c 即 change)

默认,光标闪烁位置指向上一条SQL语句的第一行。输入 2 则定位到第二行

c  /错误关键字/正确关键字 ↙

使用“/”来执行修改过的SQL语句

例如:错误输入了:

SQL> select empno, ename, sal, sal * 12 

form emp;   (“from”书写错误,该错误位于整条SQL语句的第二行)

13.课程复习

  1. 使用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';

  1. 字符和日期要包含在单引号中。
  2. 字符大小写敏感,日期格式敏感。
  3. 默认的日期格式是 DD-MON-RR

19.SQL语句中逻辑运算

AND   逻辑与

OR 逻辑或

NOT   逻辑非

如果…..where 表达式1 and 表达式2;

…..where 表达式2 and 表达式1;

这两句SQL语句功能一样吗?效率一样吗?

※SQL优化

SQL在解析where的时候,是从右至左解析的。

所以: and时应该将易假的值放在右侧

or时应该将易真的值放在右侧

20.SQL语句排序

  1. 使用 ORDER BY 子句排序
    • ASC(ascend): 升序。默认采用升序方式。
    • DESC(descend): 降序
  2. 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


网站公告

今日签到

点亮在社区的每一天
去签到